我一直在尝试创建一个 Unbuntu 22.04 ROS2 Humble catkin 工作区,但无法解决两个命令未找到错误。尝试重新安装 catkin 包也没有太大帮助。我认为 catkin 和 catkin-tools 可能已经安装了。我想这可能是搜索路径问题,但不确定。如下面的代码所示,setup.bash 由 .bashrc 调用以准备 Env 变量。我不明白命令未找到错误,但我需要解决它们。如果可以,请帮助我。
/home/.bashrc {此文件(.bashrc)已被编辑,因此它包含下面的行
源 /opt/ros/humble/setup.bash {用户未对 setup.bash 文件进行任何编辑}
$ cd ~/catkin_ws
〜/ catkin_ws $ catkin_init_workspace
Command 'catkin_init_workspace' not found, but can be installed with:
sudo apt install catkin
~/catkin_ws$ sudo apt install catkin
[sudo] password for kennr:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
python3-catkin-pkg : Conflicts: catkin but 0.8.10-7 is to be installed
python3-catkin-pkg-modules : Conflicts: catkin but 0.8.10-7 is to be installed
E: Unable to correct problems, you have held broken packages.
〜/ catkin_ws $ catkin_make
Command 'catkin_make' not found, but can be installed with:
sudo apt install catkin
~/catkin_ws$ catkin --version
catkin_tools 0.8.5 (C) 2014-2022 Open Source Robotics Foundation
catkin_tools is released under the Apache License, Version 2.0
(https://www.apache.org/licenses/LICENSE-2.0)
---
Using Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0]
答案1
我没有看到可以快速解决此 catkin 包混乱问题的办法,我需要继续进行其他编程项目。我当然会接受有关此 catkin 包混乱问题的评论和解决方案,但我发现了一种可能的解决方法。简而言之,我没有使用 $ catkin_init_workspace(宏)和 $ catkin_make(宏),而是使用了 $ cd ~/catkin_ws、$ catkin init 和 $ catkin build。请参阅以下 URL 链接以查看类似的帖子:
https://robotics.stackexchange.com/questions/16604/ros-catkin-make-vs-catkin-build
再次,我会偶尔回来,阅读并回复这里发布的任何评论和解决方案。感谢所有试图提供帮助的人。
答案2
难以置信的是,这个 catkin 包的安装很容易就解决了。CATKIN_INIT_WORKSPACE、CATKIN_CREATE_PACKAGE、CATKIN_MAKE 实际上是三个宏。而 'catkin init'、'catkin create pkg'、'catkin build' 是三个编译命令。我的系统上的宏显示“未找到”,并建议重新安装 catkin 包(并且重新安装产生了损坏的包错误)。虽然错误可能是真实的,但它们的错误类型(描述)并不准确。在我的计算机上,当 ~/catkin_ws 目录被完全移除(删除)然后放回 ~/catkin_ws/src 基本目录(空的,绝对没有文件)时,这些错误完全消失。此时,所有三个宏都被发现并且可用。因此重新安装 catkin 包是不必要的和不合适的。在基本目录(干净的)工作区上运行这三个宏,然后不会产生任何错误。再次删除工作区目录并重新创建它允许三个编译的 catkin 命令以零错误运行。所以,在我的计算机上,这两种方法都可以工作,只是不能混合在一起。在其他论坛帖子和我在这里的帖子中,提到使用宏和编译的 catkin 命令的混合会导致现在臭名昭著的宏未找到错误。而且它可能还会导致其他文件系统错误。这就是原因。这三个宏和三个编译的 catkin 命令都会创建它们自己独立的(不平等的)目录子结构和文件元素(在 ~/catkin_ws 中和下面)。这三个宏和三个编译的 catkin 命令彼此不兼容。如果混合使用它们,宏(可能还有编译的 catkin 命令)会感知到不兼容的目录和文件子结构并开始抛出错误。这就是为什么从最基本的 ~/catkin_ws/src 重新开始可以解决这个问题。用户必须只选择一种 catkin 工作区安装方法,而不是同时选择两种。今天,据我所知,我的 catkin 安装没有任何问题。
答案3
经过一些额外的研究,我了解到以下内容:$ catkin_make 宏(及其合作伙伴)来自较早的时期,适用于较早的 ROS1。而 $ catkin 构建(及其合作伙伴)更接近当今,适用于后期的 ROS1 和早期的 ROS2。即将推出的 ament_make(及其合作伙伴)未经我测试,但似乎是构建迁移中的下一个构建工具,适用于后期的 ROS2。由于我的 ROS 系统是早期的 ROS2,因此我最好使用 $ catkin 构建。事实确实如此。$ catkin 构建每次在我的 ROS2 上都能完美运行,但 $ catkin_make 在我的 ROS2 上不断出现问题。这两个工作区不兼容构建,最有可能的是,要迁移它,必须手动移动源并重新构建。目前尚不清楚为什么 ros-humble-desktop 包默认(自动)与 $ catkin_make 实用程序集(而不是 catkin-tools 包)一起安装。它可能不应该。
经过进一步研究,对于最新的 ROS2 系统,最好使用“$ colcon”实用程序来构建工作区。“$ catkin build”甚至太旧了。