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