Ubuntu 20.04下的ROS2安装

时间:2025-03-30 07:57:21

Ubuntu 20.04的ROS2安装

  • 1. 准备好Ubuntu 20.04
    • (1) 20.04使用focal版本,检查修改/etc/apt/,如下:
    • (2) 然后执行系统更新
  • 2. ROS2安装前的基本环境准备
    • (1)设置编码
    • (2) 添加ROS2安装相关的源
      • 首先要确保Ubuntu Universe repository可用,以下检查指令.
      • 输出应如下:
      • 若没有看到像上面这样的输出行,依次执行如下命令:
      • 继续执行指令写入ROS2安装源:
      • 下载证书时提示无法连接的处理
  • 3. ROS2的安装
    • (1) 先更新系统
    • (2)安装ROS2
    • (3) ROS2环境配置
    • 4. ROS2测试
      • (1)底层通信系统的测试
      • (2) 小海龟的测试

1. 准备好Ubuntu 20.04

(1) 20.04使用focal版本,检查修改/etc/apt/,如下:

ROS2 foxy版本与Ubuntu 20.04对应,我们使用focal细分版本

deb /ubuntu/ focal main restricted universe multiverse
deb-src /ubuntu/ focal main restricted universe multiverse

deb /ubuntu/ focal-security main restricted universe multiverse
deb-src /ubuntu/ focal-security main restricted universe multiverse

deb /ubuntu/ focal-updates main restricted universe multiverse
deb-src /ubuntu/ focal-updates main restricted universe multiverse

deb /ubuntu/ focal-proposed main restricted universe multiverse
deb-src /ubuntu/ focal-proposed main restricted universe multiverse

deb /ubuntu/ focal-backports main restricted universe multiverse
deb-src /ubuntu/ focal-backports main restricted universe multiverse

注意,如果Ubuntu 22.04 Jammy则对应ROS2 Humble,具体参考官方技术文档/en/humble/Installation/或者知乎ROS 21讲的第3节“ROS2安装方法”

(2) 然后执行系统更新

sudo apt update
sudo apt upgrade

2. ROS2安装前的基本环境准备

(1)设置编码

$ 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) 添加ROS2安装相关的源

首先要确保Ubuntu Universe repository可用,以下检查指令.

apt-cache policy | grep universe

输出应如下:

500 /ubuntu jammy-security/universe amd64 Packages
release v=20.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd64

若没有看到像上面这样的输出行,依次执行如下命令:

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

继续执行指令写入ROS2安装源:

sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL /ros/rosdistro/master/ -o /usr/share/keyrings/
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/] /ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt// > /dev/null

下载证书时提示无法连接的处理

在执行上述指令下载时,经常出现Failed to connect to port 443类似提示,可参考/37844解决,主要是解决网址的IP定义,在/etc/hots中增加相应解析定义,如下:

###增加下面的解析
185.199.108.133  

修改/etc/hosts文件后注意刷新网址解析定义,如下:

sudo service network-manager restart

3. ROS2的安装

(1) 先更新系统

在前面安装环境准备完成后,先执行系统更新指令

sudo apt update
sudo apt upgrade

(2)安装ROS2

这里选择安装 ros-foxy-desktop版本,如下指令:

sudo apt install ros-foxy-desktop

(3) ROS2环境配置

source /opt/ros/foxy/

如果希望每次启动直接进入该环境,则在.bashrc中添加上述语句

echo " source /opt/ros/foxy/" >> ~/.bashrc

**注意,**如果要切换到ROS1环境,则执行noetic下的环境设置,如下:

source /opt/ros/noetic/

4. ROS2测试

(1)底层通信系统的测试

在一个终端发送消息广播指令

ros2 run demo_nodes_cpp talker

正常将显示以下信息:
[INFO] [1698321815.944629572] [talker]: Publishing: ‘Hello World: 1’
[INFO] [1698321816.941064455] [talker]: Publishing: ‘Hello World: 2’
[INFO] [1698321817.948939308] [talker]: Publishing: ‘Hello World: 3’
[INFO] [1698321818.941491997] [talker]: Publishing: ‘Hello World: 4’

在另外一个终端发送消息订阅接收指令:

ros2 run demo_nodes_py listener

正常将显示以下类似信息(后面数字不一定相同):
INFO] [1698322064.923442132] [listener]: I heard: [Hello World: 1]
[INFO] [1698322065.924364078] [listener]: I heard: [Hello World: 2]
[INFO] [1698322066.921930626] [listener]: I heard: [Hello World: 3]
[INFO] [1698322067.935397647] [listener]: I heard: [Hello World: 4]
[INFO] [1698322068.925254484] [listener]: I heard: [Hello World: 5]

(2) 小海龟的测试

启动两个终端,分别执行以下指令:

# 启动海龟仿真器
ros2 run turtlesim turtlesim_node
# 启动键盘控制
ros2 run turtlesim turtle_teleop_key