ROS2安装及环境设置 一、发行版选择 ROS 发行版是一组ROS 包的集合。有点类似于 Linux 发行版(例如 Ubuntu)。ROS 发行版的目的是让开发人员在一个相对稳定的代码库上工作。因此,一旦选择某个发行版,那所有的更改将限制在bug修复和对核心包的非破坏性改进(ros-desktop-full下的所有包)。而对于其他第三方的包,规则就不那么严格,因此要避免给这些包的维护或开发者造成破坏性更改。 ROS2一般每年发布一个新的发行版,两年发布一个长期支持版。截至本文档编写时为止,Humble Hawksbill 是ROS2发布的最新LTS版本,将提供支持到2027年5月。所以我们的课程将围绕这个版本来进行编写。 ![]() 当然,如果你对最新的版本感兴趣或者想为ROS2社区作贡献,可以尝试使用开发版。开发版会不断更新,一些新的特性也会引入,所以有时会包括一些重大更改。而这些更新将会合并到将来的某个发行版当中。 二、安装方式ROS2的安装方式有很多种,根据你操作系统的不同,可以选择二进制包安装或者是源代码编译安装。二进制包安装仅支持Ubuntu、RHEL、Windows。而如果你是苹果系统,则只能用源代码编译安装。 1、二进制包安装二进制包安装只支持以下平台,且有严格的版本限制:
2、源码编译安装 源码编译安装方式适用于大多数情况,但安装复杂与耗时,好处是可能支持多个操作系统版本:
不论你是使用二进制包安装还是源代码编译安装,都能得到一个功能齐全且可用的ROS2环境。如何选择取决于你打算如何使用ROS2。一般情况下,推荐使用Ubuntu二进制包安装。因为它会自动安装需要的依赖项,也会随系统更新一起更新,非常简单与方便。从源码编译安装通常情况下是一些ROS2开发人员或者需要对ROS2进行修改的人员安装(比如想给ROS2核心软件包做出贡献)。 当然。如果你的操作系统不在上述列表中,你还可以选择使用docker容器来安装或者直接使用ROS2。 三、安装步骤在这里我们以Ubuntu Jammy(22.04)为例,讲解如何使用二进制包的方式安装ROS2。首先你需要一个安装好系统的环境,如果没有条件可以选择安装虚拟机或者使用Docker容器,当然在物理机直接安装更好。 1、设置语言环境(可选)首先我们需要确保你的系统支持UTF-8,如果您处于最小环境中(例如docker容器),则区域设置可能是POSIX之类的最小值。我们使用以下设置进行测试。 locale # 检查是否支持 UTF-8 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 locale # 验证设置 当然,如果你使用其他的UTF-8语言环境(比如zh_CN),也是没有问题的。 ![]() 2、设置源 一般情况,UBUNTU会使用默认的官方源,因服务器在国外,国内访问很慢或经常无法访问,强烈建议你换成国内的源。我们通过如下指令打开更新设置: software-properties-gtk在Ubuntu Sotware选项卡中,点击Download from:旁边的下拉菜单,选择Other,然后在China列表中选择一个即可。如果你不知道如何选择,也可以点击旁边的Select Best Server,让系统自动选择一个合适的镜像源。在本文档中,我们选择的是华为云提供的源(mirrors.huaweicloud.com)。 ![]() 我们需要将ROS 2 apt存储库添加到系统中。首先,通过检查该命令的输出,确保Ubuntu Universe存储库已启用。 apt-cache policy | grep universe有如下输出则证明已开启。 ![]() 如果您没有看到类似于上面的输出行,那么使用以下指示启用Universe存储库。 sudo apt install software-properties-commonsudo add-apt-repository universe 现在将ROS 2 apt存储库添加到系统中。首先用apt授权我们的GPG密钥(因网络环境复杂,我们选择使用国内源)。 sudo apt update && sudo apt install curl gnupg lsb-releasesudo curl -sSL https://gitee.com/nxrobo/rosdistro/raw/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] https://repo.huaweicloud.com/ros2/ubuntu/ $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null3、安装ROS2 我们先更新 apt 存储库缓存。 sudo apt update出现如下内容则存储库添加成功,否则请检查添加存储库是否正确。 ![]() ROS 2 软件包建立在经常更新的 Ubuntu 系统上。建议您在安装新软件包之前确保系统是最新的。 sudo apt upgrade安装ROS2桌面版(推荐)这除了安装基本ROS2外,还会安装RViz、演示以及教程相关包。 sudo apt install ros-humble-desktop-full这条指令将安装3G左右的内容,持续时间取决于你网速的快慢以及计算机性能,出现如下界面时则表示安装成功。 ![]() 如果你不需要桌面支持,只想安装ROS2最小系统,也可以使用如下指令安装ROS2基本功能。 #注意如果你已经安装ROS2桌面版,请不要执行以下指令sudo apt install ros-humble-ros-base 四、设置环境变量 这时虽然已经安装了ROS2,但还需要配置才能使用。 source /opt/ros/humble/setup.bash我们输入如下指令查看ROS2安装是否成功。 ros2 --help![]() 输入如下指令也可以查看ROS的配置信息: export |grep ROS当我们打开一个新的超级终端,再输入上条指令时,可能会看到如下输出: ![]() 这是因为ROS2在shell中依赖一个叫“工作空间”的概念。工作空间是一个ROS术语,指的是系统上使用ROS2进行开发的位置。核心ROS2的工作空间在底层,而本地工作空间在上层。在使用ROS2进行开发时,通常会有多个工作空间同时激活。通过工作空间的组合,可以使针对ROS2的不同版本或者针对不同包的开发更加容易。而且还可以在一台计算机上安装多个ROS2发行版并在它们之间切换。 而这一功能是通过每次打开新的shell时配置ROS2安装位置等环境变量实现的,如果不指定ROS2安装位置,那就无法执行ROS2命令,也无法查找和使用ROS2的包。通常情况下,可以把如下指令加入到bashrc启动脚本中,这样每次打开新的超级终端时都会自动配置ROS2的环境变量。 如果您在定位或使用 ROS 2 软件包时遇到任何问题,您应该做的第一件事是检查您的环境变量并确保它们设置为您想要的版本。 echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc五、卸载(可选) 如果你不需要ROS2了或者想从源码编译安装,可以运行以下命令: sudo apt remove ros-humble-* && sudo apt autoremove如果需要删除得更干净些,你还需要删除存储库: sudo rm /etc/apt/sources.list.d/ros2.listsudo apt update sudo apt autoremove sudo apt upgrade |