ROS2安装、配置与编译

ROS2系统安装

设置编码

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。具体操作步骤如下:

  1. 卸载较新版本的 python3-lib2to3:
    sudo apt-get remove python3-lib2to3
  2. 安装较旧版本的 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 发行版名称,如 dashingfoxy 等。

编译成功后,就可以在工作空间中看到自动生产的build、log、install文件夹了

colcon构建工具

colcon是ros2的包构建工具,相当于ros1中的catkin工具一样;colcon工具支持构建ament_cmake、ament_python以及纯cmake软件包;

colcon构建工具安装

sudo apt install python3-colcon-common-extensions

colcon常用构建命令

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 发行版名称,如 dashingfoxy 等。

至此,我们就完成了工作空间的创建、编译和配置。

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介绍

猜你喜欢

转载自blog.csdn.net/qq_18677445/article/details/130867005