ROS2-环境配置
学习:
说明
ROS(Robot Operating System)是一个开源的机器人软件框架,提供通信机制、构建工具和大量功能包,便于快速开发机器人应用。
本文以 ROS 2 Kilted Kaiju 为例,
演示在 WSL2(Windows Subsystem for Linux 2)下的 Ubuntu 24.04(Noble)中的安装与验证流程。
实验环境
- 操作系统:Ubuntu 24.04(Noble)
- 安装场景:WSL
- 网络要求:可访问 GitHub 与 Ubuntu 软件源
安装 Ubuntu 与 ROS
在 Windows 命令行中安装 WSL 下的 Ubuntu 24.04
# 1) 安装Ubuntu-24.04
wsl --install Ubuntu-24.04
# 2) 设置wsl默认发行版
wsl --set-default Ubuntu-24.04
# 3)进入Ubuntu终端
wsl
在 Ubuntu 终端中依次执行以下命令(来自官方安装文档):
# 1) 启用 Ubuntu Universe 仓库
sudo apt install -y software-properties-common
sudo add-apt-repository universe
# 2) 配置 ROS 2 APT 软件源
sudo apt update && sudo apt install -y curl
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb
# 3) 安装开发工具
sudo apt update && sudo apt install -y ros-dev-tools
# 4) 安装 ROS 2 桌面版
sudo apt update
sudo apt upgrade -y
sudo apt install -y ros-kilted-desktop
# 5) 设置 ROS 环境
source /opt/ros/kilted/setup.bash
# 如果你使用的不是 bash,请替换为对应脚本:
# setup.bash
# setup.sh
# setup.zsh
# 6) 设置自启 ROS 环境
echo "source /opt/ros/kilted/setup.bash" >> ~/.bashrc
代码编辑器配置
本文以 VS Code 为编辑器,Python 为开发语言。
在 VS Code 中安装 WSL 插件,在 WSL 终端中执行 code . 即可在 VS Code 中打开并操作 WSL 的当前目录。

在 Ubuntu 的 VS Code 中安装 Pylance 插件,鼠标悬停在函数、类等处可便捷查看文档说明,使用滚轮可滑动查看完整文档。

环境验证
1) 基本发布/订阅验证(两个终端 A、B)
终端 A:运行持续发布消息的 talker:
ros2 run demo_nodes_cpp talker
终端 B:运行持续订阅消息的 listener:
ros2 run demo_nodes_py listener
若终端 B 持续收到来自终端 A 的消息,说明 ROS 2 安装成功。

2) 使用 turtlesim 验证(三个终端 A、B、C)
终端 A:启动海龟模拟器:
ros2 run turtlesim turtlesim_node

终端 B:启动海龟远程遥控:
ros2 run turtlesim turtle_teleop_key
在终端 B 中使用方向键控制海龟移动。

终端 C:启动 RQt(ROS Qt-based GUI Framework):
rqt
在 RQt 中选择 Plugins -> Introspection -> Node Graph,刷新后可看到节点间关系。

ROS 2 架构学习

- 操作系统层(Operating System Layer):驱动计算机硬件、网络通信。
- DDS 实现层(DDS Implementation Layer):
DDS(Data Distribution Service,数据分发服务)是一个分布式实时通信中间件规范,采用发布/订阅体系架构。ROS 2 使用 DDS 进行节点间通信。
数据发送者不必关心接收者的地址与数量,接收者也不必关心发送者,只需关注主题(topic)即可完成消息收发。
在 turtlesim 实验中,teleop_turtle 节点对 turtle1/cmd_vel 主题发布消息,turtlesim 订阅该主题并收到消息,从而实现控制。

- 抽象 DDS 层(Abstract DDS Layer):对 DDS 实现层进一步封装,简化配置。
- ROS 2 客户端层(ROS2 Client Layer):为上层应用提供 API(RCL,ROS Client Library),有 Python、C++ 等实现。
- 应用层(Application Layer):编写具体的机器人应用。