ROS 2 安装
下文讲述如何在 Ubuntu 22.04 上安装 ROS 2 Humble。
1. 设置语言环境
确保使用的语言环境(Locale)支持 UTF-8 编码。如果处在最小化环境(比如 Docker 容器)中,语言环境可能极为精简,比如仅支持 POSIX 标准。下面使用以下设置进行测试。当然,如果使用的是其他支持 UTF-8 的语言环境,也完全没有问题。
locale # check for 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 # verify settings
echo $LANG2. 设置源
请按以下步骤将 ROS 2 APT 仓库添加到系统中。
首先,确保已启用 Ubuntu Universe 软件源:
sudo apt install software-properties-common
sudo add-apt-repository universeros-apt-source 软件包为各个 ROS 仓库提供密钥和 APT 源配置。
安装 ros2-apt-source 软件包将自动为系统配置 ROS 2 仓库。当该软件包的新版本发布到 ROS 仓库时,仓库配置也将自动更新。
sudo apt update && sudo apt install curl -y
# 需要使用代理
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb3. 安装 ROS 2 软件包
设置仓库后,更新仓库缓存。
sudo apt updateROS 2 软件包在频繁更新的 Ubuntu 系统上构建。强烈建议在安装新软件包之前,先将系统更新到最新状态。
sudo apt upgrade警告:
由于 Ubuntu 22.04 涉及早期系统更新,因此在安装 ROS 2 之前,务必先更新
systemd及udev相关的软件包。若在全新安装的系统上不进行系统升级,直接安装 ROS 2 的依赖项,可能触发关键系统软件包被移除。
桌面版安装(推荐):包含 ROS、RViz、演示程序、教程等全套工具。
sudo apt install ros-humble-desktopROS-Base 基础版安装(精简核心):仅包含通信库、消息包和命令行工具,不含任何 GUI 工具。
sudo apt install ros-humble-ros-base开发工具:编译器及其它用于构建 ROS 软件包的工具。
sudo apt install ros-dev-tools4. 环境设置
source 以下文件,设置环境:
source /opt/ros/humble/setup.bash注意:如果使用的不是 Bash,请将
.bash替换为当前所用的 Shell 对应的后缀。可选值有:setup.bash、setup.sh、setup.zsh。
5. 尝试一些示例
Talker-Listener
如果已按照上述步骤安装 ros-humble-desktop,那么可以尝试运行一些示例。
在第一个终端中,source 环境脚本,然后运行 C++ 版的 Talker(发布者)节点:
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker在另一个终端中,source 环境脚本,然后运行 Python 版的 Listener(监听者)节点:
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener如果看到 Talker 节点不断输出“正在发布消息”的日志,Listener 节点显示“我已收到那些消息”的提示,那么说明 C++ 和 Python 两种 API 都能正常工作。