跳到主要内容

ROS2 安装和卸载

安装

1.环境准备

首先确认系统已更新至最新状态,并安装必要的工具:

sudo apt update
sudo apt upgrade

2. 设置语言环境

确保系统支持UTF-8编码:

locale  # 检查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 # 验证设置

3.启用必要的仓库

启用Ubuntu Universe仓库和ROS 2 apt仓库:

sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 添加ROS 2仓库
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

4. 安装开发工具

安装开发工具以便进行ROS功能包的开发:

sudo apt update && sudo apt install ros-dev-tools

5.安装ROS 2 Jazzy

更新apt仓库缓存并安装ROS 2 Jazzy桌面版:

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

6.设置环境变量

在终端加载ROS 2环境变量:

source /opt/ros/jazzy/setup.bash

7.尝试示例

验证安装是否成功,运行以下示例:

source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp talker

打开新终端运行监听节点:

source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_py listener

如果看到消息发布和接收的输出,说明ROS 2 Jazzy安装成功。

卸载ROS 2 Jazzy

如果需要卸载ROS 2 Jazzy,可以执行以下步骤:

1. 移除ROS 2包:

sudo apt remove ~nros-jazzy-* && sudo apt autoremove

2. 移除ROS 2软件源:

sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
sudo apt autoremove

3. 升级软件包:

sudo apt upgrade

完成以上步骤后即可干净地卸载ROS 2 Jazzy,并为后续安装或更改做好准备。参考视频链接【Ubuntu24.04安装 ROS2 Jazzy】 https://www.bilibili.com/video/BV1EZGqzpExq/?share_source

配置 ROS2 环境

ROS 2 通过shell环境和工作空间(Workspace)的概念进行管理。核心的ROS 2安装称为底层工作空间(Underlay),用户创建的开发环境称为上层工作空间(Overlay)。通过这种方式,开发者可以轻松地管理和切换不同版本或不同功能的ROS 2环境。工作空间的概念将在下一章具体介绍。

1. 加载 ROS2 环境变量

每次启动终端时都需加载ROS 2环境变量,以便访问相关命令和功能包:

source /opt/ros/jazzy/setup.bash

如需自动加载,可将命令添加到终端的启动脚本中:

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

2. 检查 ROS2 环境变量

确认 ROS2 环境变量已正确加载:

printenv | grep -i ROS

典型输出应包含以下变量:

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=jazzy

3. 设置ROS_DOMAIN_ID

ROS_DOMAIN_ID 是 ROS2 中用于 隔离通信域(communication domain) 的一个环境变量,允许多个 ROS2 系统在同一个物理网络中运行而 互不干扰。ROS2 使用 DDS(Data Distribution Service) 作为底层通信中间件,DDS 定义了 “Domain” 的概念,用于将不同的通信系统隔离开来。每个 domain 都有一个 Domain ID,只有属于相同 Domain ID 的节点才可以互相通信。 ROS2 默认使用域 ID 0,若需避免网络干扰,可为不同工作组设置不同域 ID(0~101之间),例如:

export ROS_DOMAIN_ID=10

若想每次终端启动时自动生效,添加到启动脚本:

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

4. 控制 ROS2 节点发现范围

默认情况下,ROS2 将自动发现节点,控制选项如下:

  • ROS_AUTOMATIC_DISCOVERY_RANGE变量配置选项:
    • SUBNET(默认):在本地子网范围内发现节点。
    • LOCALHOST:仅在本机上发现节点。
    • OFF:关闭自动发现功能。
    • SYSTEM_DEFAULT:使用系统默认的发现设置。
  • ROS_STATIC_PEERS变量:设置特定地址,以分号(;)分隔,ROS将在指定地址发现节点,例如:
     export ROS_AUTOMATIC_DISCOVERY_RANGE=LOCALHOST
    export ROS_STATIC_PEERS=192.168.1.100;192.168.1.101

如需长期设置,添加至启动脚本:

echo "export ROS_AUTOMATIC_DISCOVERY_RANGE=LOCALHOST" >> ~/.bashrc
echo "export ROS_STATIC_PEERS=192.168.1.100;192.168.1.101" >> ~/.bashrc

完成以上步骤后,即完成ROS 2环境配置。

本章小结

掌握以上Linux基本命令和工具是学习和使用 ROS2 的重要基础,能够帮助你更高效地管理系统、调试问题并提高开发效率。在后续的 ROS2 学习过程中,如遇到其他问题,可以通过网络搜索、官方文档或社区论坛来快速找到解决方案。