ROS 2(一)开发环境搭建(Ubuntu22.04、ROS2 Humble)

1.ROS环境搭建简介

官方指导地址:http://docs.ros.org/

笔者是2023年4月初开始学习ROS,本文为当时的过程记录。其他情况不在此文中表述。

ROS 2(一)开发环境搭建(Ubuntu22.04、ROS2 Humble)_第1张图片

上图是官方文档首页,秉持“要学就学新的”和“接受官方推荐” 原则。故选择Humble版本。

在安装指导说明中,Linux系统支持Ubuntu 22.04。为了轻量级学习该内容,避免对其他系统产生干扰,选择VMware虚拟机作为操作系统的载体。关于VMware和Ubuntu系统的安装有大量参考文档,本文不再记录。

2.ROS2 Humble安装

完全按照官方指导进行操作,官方链接为:http://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html

2.1.设置Sources

首先确保Ubuntu Universe存储库已启用:

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

接着增加ROS2 GPG Key:

sudo apt update && sudo apt install curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

最后将仓库添加到sources list中:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

2.2.安装ROS2包

更新仓库:

sudo apt update
sudo apt upgrade

安装ROS(包括:ROS、RViz、demos、tutorials):

sudo apt install ros-humble-desktop

安装ROS-Base(通讯库、消息包、命令行工具等非图像化工具):

sudo apt install ros-humble-ros-base

安装开发工具(编译器和其他构建ROS包的工具):

sudo apt install ros-dev-tools

 设置环境变量:

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

3.ROS2测试

上述操作完成后,重启系统后开始进行测试。

首先启动一个终端,打开一个C++ talker

ros2 run demo_nodes_cpp talker

再启动一个终端,打开一个Python listener

ros2 run demo_nodes_py listener

运行结果为:

ROS 2(一)开发环境搭建(Ubuntu22.04、ROS2 Humble)_第2张图片

 至此,测试安装完成ROS2 Humble。

4.ROS2卸载

# 卸载ROS2
sudo apt remove ~nros-humble-* && sudo apt autoremove
# 移除仓库
sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
sudo apt autoremove
# Consider upgrading for packages previously shadowed.
sudo apt upgrade

5.关于环境变量配置的扩展说明

该部分内容参考:Configuring environment — ROS 2 Documentation: Humble documentation

主要是一些与环境变量相关的概念说明,可以作为了解内容(有特殊需求的时候也需要用到)。

5.1.工作空间的作用

ROS 2的核心工作空间称作底层,后续的本地工作空间称为覆盖层。当使用ROS 2进行开发时,通常会有多个工作空间处于活动状态。

工作空间的应用使得同一个系统可以安装不同版本的ROS 2,或者不同版本的package。

5.2.ROS_DOMAIN_ID

The ROS_DOMAIN_ID — ROS 2 Documentation: Humble documentation

ROS 2的通讯中间件使用的是DDS,DDS使不同逻辑网络共享物理网络的主要机制被称为域ID。

同一域上的ROS 2节点可以自由发现并相互发送消息,而不同域上的ROS 2节点则不能。默认情况下,所有ROS 2节点都使用域ID 0。为了避免在同一网络上运行ROS 2的不同计算机组之间的干扰,应为每个组设置不同的域ID。域ID可以选择一个 [0,101] 内的一个整数作为特定域ID。

例如,将主机的域ID设置为77,使用如下指令:

echo "export ROS_DOMAIN_ID=77" >> ~/.bashrc

则同一个局域网下的域ID为77的主机可以与该主机进行通讯。

5.3.ROS_LOCALHOST_ONLY

默认情况下,ROS 2通信不局限仅本地主机。ROS_LOCALHOST_ONLY环境变量允许将ROS 2通信限制为仅本地主机。这是针对有特定应用,避免外部系统干扰时设置的变量。

如果需要打开限制仅本地主机,使用如下指令:

echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc

你可能感兴趣的:(机器人,ubuntu)