本文记录Ubuntu 22.04虚拟机上安装ROS2的过程以及遇到的问题。

1. 确定Ubuntu和ROS版本

Ubuntu和ROS2存在一个版本的对应关系,具体可以看官网的这个页面:
REP 2000 – ROS 2 Releases and Target Platforms (ROS.org)
其中ROS2的humble版本(即截止到2022年10月初的最新版本)要求如下:


所以 Ubuntu 22.04 应该安装的ROS2版本为 ros-humble-desktop
此外Ubuntu的版本号如果是带有LTS字样(Long Term Support),为长期支持版本,大家安装Ubuntu的时候应优先考虑此版本。

2. 配置及安装

官方安装文档链接:Ubuntu (Debian) — ROS 2 Documentation: Humble documentation

2.1 设置locale

官方案例自然地使用英文locale,但是根据文档描述只要是支持UTF-8的locale都可以。

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

2.2 设置Ubuntu软件源

2.2.1 首先确认是否已经启用Universe源

使用如下命令检查:

apt-cache policy | grep universe

返回可能有若干行,但是应该包含如下内容:

500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
    release v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64

如果没有包含上述内容,那么输入如下命令:

sudo apt install software-properties-common
sudo add-apt-repository universe

2.2.2 添加ROS 2 apt 仓库

a) 添加证书

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


这一步如果遇到Failed to connect to raw.githubusercontent.com,请访问 https://www.ipaddress.com 网站,在查询框中输入:raw.githubusercontent.com并回车,在里面找到相应的的ipv4地址:


这四个IP地址随便选一个,使用sudo vi /etc/hosts将IP和域名添加到/etc/hosts文件中,如下图:

b) 添加ros仓库

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

2.3 安装ros2包

sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop

你可能会遇到如下错误:



解决方法:把 “/etc/apt/sources.list” 中的: http://cn.archive.ubuntu.com/ubuntu
全部替换为可用的镜像,例如阿里云的:http://mirrors.aliyun.com/ubuntu/。然后使用sudo apt —fix-broken install命令修复未完成的安装即可。其他镜像列表可参考Mirrors : Ubuntu 中的China部分。

Desktop 版 (推荐)包含: ROS, RViz, demos, tutorials.

老鸟可以安装base版,sudo apt install ros-humble-ros-base,base版仅包含Communication libraries, message packages, command line tools. 不包含 GUI tools.

2.4 配置环境变量

source /opt/ros/humble/setup.bash
echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc 

3 测试

打开第一个终端,启动一个数据的发布者节点:

ros2 run demo_nodes_cpp talker

应该看到:



打开第二个终端,启动一个数据的订阅者节点:

ros2 run demo_nodes_py listener

应该能看到: