赞
踩
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
如遇报错“Failed to connect to raw.githubusercontent.com”
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
如果遇到很多依赖性问题,有很多依赖包无法安装,可尝试使用aptitude工具来安装,aptitude比apt-get更强大,能更好地处理依赖关系问题:
sudo apt-get install aptitude #安装aptitude
sudo aptitude install ros-humble-desktop #安装ros-humble-desktop
source /opt/ros/humble/setup.bash
echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc
至此,ROS2就已经在系统中安装好了。
创建文件夹,并clone代码
mkdir -p ~/dev_ws/src
cd ~/dev_ws/src
git clone https://gitee.com/guyuehome/ros2_21_tutorials.git
我们从社区中下载的各种代码,多少都会有一些依赖,我们可以手动一个一个安装,也可以使用rosdep工具自动安装:
sudo apt install -y python3-pip
sudo pip3 install rosdepc
sudo rosdepc init #在当前系统的根目录下初始化一个名为 .rosdep 的目录
rosdepc update #更新当前系统中的所有 ROS 软件包的依赖信息
cd ..
rosdepc install -i --from-path src --rosdistro humble -y #在当前工作目录中安装ROS软件包的依赖项
安装python3-pip时如果出现如下依赖性问题
您可以尝试使用以下命令升级 python3-lib2to3:
sudo apt-get update sudo apt-get install python3-lib2to3
如果提示“python3-lib2to3 已经是最新版本”,则需要卸载较新版本的 python3-lib2to3,再安装较旧版本的python3-lib2to3。具体操作步骤如下:
- 卸载较新版本的 python3-lib2to3:
sudo apt-get remove python3-lib2to3
- 安装较旧版本的 python3-lib2to3:
sudo apt-get update sudo apt-get install python3-lib2to3=3.10.4-0ubuntu1
请注意,如果卸载较新版本的python3-lib2to3,可能会导致其他软件包无法正常工作。因此,在卸载之前,请仔细检查将要被卸载的软件包列表。
sudo rosdepc init
是 ROS 的一个工具,用于在当前系统的根目录下初始化一个名为 .rosdep 的目录。这个目录用于存储
ROS 软件包的依赖信息文件,以便在安装软件包时能够正确地解决依赖关系。在执行 sudo rosdepc init 命令后,系统会在根目录下创建一个 .rosdep 目录,然后在该目录中创建一个名为
sources.list.d 的子目录。在 sources.list.d 目录中,ROS 会创建一个名为 50-ubuntu.list
的文件,其中包含了 ROS 官方源和 Ubuntu 官方源的信息,以便在安装软件包时能够从这些源中获取依赖项。需要注意的是,执行 sudo rosdepc init 命令需要管理员权限,因此需要在命令前加上 sudo。
rosdepc update
是 ROS 的一个工具,用于更新当前系统中的所有 ROS 软件包的依赖信息。执行这个命令会从 ROS
官方源和 Ubuntu 官方源中获取最新的依赖信息,并更新到系统的.rosdep
目录中。执行
rosdepc update
命令时,需要先执行sudo rosdep init
命令来初始化.rosdep
目录。如果没有初始化.rosdep
目录,则会提示错误信息。需要注意的是,更新依赖信息可能需要一定的时间,具体时间取决于系统的网络连接和依赖信息的更新情况。更新完成后,可以使用
rosdep
工具来解决软件包的依赖关系。
rosdepc install -i --from-path src --rosdistro humble -y
这个指令的作用是在当前工作目录中安装ROS软件包的依赖项,具体解释如下:
rosdepc
是ROS的一个工具,用于检查和安装软件包的依赖项。install
表示安装依赖项。-i
表示安装间接依赖项(即依赖项的依赖项)。--from-path src
表示安装当前工作目录下的src
文件夹中的软件包的依赖项。--rosdistro humble
表示使用ROS发行版humble
。-y
表示自动确认安装依赖项。因此,这个指令的作用是安装当前工作目录下的
src
文件夹中的所有软件包的依赖项,使用ROS发行版humble
,并且自动确认安装。
依赖安装完成后,就可以使用如下命令编译工作空间啦,如果有缺少的依赖,或者代码有错误,编译过程中会有报错,否则编译过程应该不会出现任何错误:
sudo apt install python3-colcon-ros #在 Ubuntu 系统中安装 ROS2 的colcon-ros 扩展包所需的命令
cd ~/dev_ws/
colcon build #构建 ROS2 软件包,
sudo apt install python3-colcon-ros
是在 Ubuntu 系统中安装 ROS2 的
colcon-ros 扩展包所需的命令。colcon-ros 是一个 ROS2 的构建工具,它可以帮助用户更方便地管理和构建 ROS2
软件包。执行这个命令会使用 apt 包管理器在 Ubuntu 系统中安装 python3-colcon-ros 扩展包,这个扩展包包含了
colcon-ros 工具和相关依赖项。需要注意的是,执行这个命令需要管理员权限,因此需要在命令前加上
sudo
。
colcon build
是 ROS2 中使用的构建工具,用于构建 ROS2 软件包。执行这个命令会在当前工作目录中查找所有的 ROS2
软件包,并根据软件包中的 CMakeLists.txt 或 package.xml 等构建文件构建软件包。在执行
colcon build
命令之前,需要先安装 colcon-ros 扩展包,可以使用命令sudo apt install python3-colcon-ros
进行安装。需要注意的是,执行
colcon build
命令时需要在 ROS2 的工作空间中,即当前工作目录需包含src
文件夹,该文件夹中包含了所有需要构建的 ROS2 软件包。另外,在执行colcon build
命令之前,还需要执行source /opt/ros/<ROS_DISTRO>/setup.bash
命令来设置 ROS2 环境变量,其中<ROS_DISTRO>
是当前使用的 ROS2 发行版名称,如dashing
或foxy
等。
编译成功后,就可以在工作空间中看到自动生产的build、log、install文件夹了
colcon是ros2的包构建工具,相当于ros1中的catkin工具一样;colcon工具支持构建ament_cmake、ament_python以及纯cmake软件包;
sudo apt install python3-colcon-common-extensions
colcon build
#全部编译
colcon build --packages-select YOUR_PKG_NAME
#编译指定包,可以多个
colcon build --packages-ignore YOUR_PKG_NAME
#忽略指定包,可以多个
colcon build --continue-on-error
#在编译出错之后继续编译其他模块
colcon build --symlink-install
#表示编译时如果 install 中文件已经存在于 src 或者 build 文件夹中,就用超链接指向该文件,避免浪费空间,也可以实现同步更新
colcon build --merge-install
#默认会使用install使用作为所有软件包的安装前缀,而不是 安装库中特定于软件包的子目录。如果没有这个选项,每个包都会贡献
自己的环境路径,导致环境变量特别长;使用此选项,环境变量更短;
colcon build --parallel-workers NUMBER
#要并行处理的最大作业数, 默认值是逻辑 CPU 内核数
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
#表示传入cmake编译选项参数
编译成功后,为了让系统能够找到我们的功能包和可执行文件,还需要设置环境变量:
source install/local_setup.sh # 仅在当前终端生效
echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc # 所有终端均生效
source install/local_setup.sh
是用于设置 ROS2 环境变量的命令。在使用colcon build
命令成功构建 ROS2 软件包后,需要执行这个命令来设置 ROS2 环境变量,以便在终端中能够正确地使用 ROS2 命令和软件包。执行
source install/local_setup.sh
命令会将当前工作目录下install
文件夹中的
local_setup.sh
脚本运行一遍,该脚本会设置 ROS2 环境变量,包括ROS_VERSION
,
ROS_PYTHON_VERSION
,COLCON_PREFIX_PATH
,PATH
,LD_LIBRARY_PATH
和PYTHONPATH
等。需要注意的是,执行
source install/local_setup.sh
命令时需要在 ROS2
的工作空间中,即当前工作目录需包含install
文件夹。另外,在执行source install/local_setup.sh
命令之前,还需要执行source /opt/ros/<ROS_DISTRO>/setup.bash
命令来设置 ROS2
环境变量,其中<ROS_DISTRO>
是当前使用的 ROS2 发行版名称,如dashing
或foxy
等。至此,我们就完成了工作空间的创建、编译和配置。
echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc
是一个将
ROS2 环境变量添加到~/.bashrc
文件中的命令。通过执行这个命令,每次打开一个新的终端窗口时,都会自动执行
local_setup.sh
脚本,以设置 ROS2 环境变量,以便在终端中能够正确地使用 ROS2 命令和软件包。执行这个命令会将
source ~/dev_ws/install/local_setup.sh
添加到~/.bashrc
文件中的末尾,即在~/.bashrc
文件中添加一行,内容为source ~/dev_ws/install/local_setup.sh
。这样,每次打开一个新的终端窗口时,都会自动执行这个命令来设置 ROS2
环境变量。需要注意的是,
echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc
命令中~/dev_ws
是一个示例工作空间路径,实际路径需要根据自己的情况进行修改。另外,修改了~/.bashrc
文件后,需要执行source ~/.bashrc
命令来使修改生效。
参考链接
古月居 ROS2入门21讲图文教程 | 3、ROS2安装方法
古月居 ROS2入门21讲图文教程 | 7、工作空间
官方文档 Creating a workspace
ROS2构建工具colcon介绍
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。