返回目录

ROS2-环境配置

ROS2

学习:鱼香ROS

说明

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 的当前目录。

WSL

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

Pylance

环境验证

1) 基本发布/订阅验证(两个终端 A、B)

终端 A:运行持续发布消息的 talker:

ros2 run demo_nodes_cpp talker

终端 B:运行持续订阅消息的 listener:

ros2 run demo_nodes_py listener

若终端 B 持续收到来自终端 A 的消息,说明 ROS 2 安装成功。

installed

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,刷新后可看到节点间关系。

rqt

ROS 2 架构学习

ROS2架构

  • 操作系统层(Operating System Layer):驱动计算机硬件、网络通信。
  • DDS 实现层(DDS Implementation Layer)
    DDS(Data Distribution Service,数据分发服务)是一个分布式实时通信中间件规范,采用发布/订阅体系架构。ROS 2 使用 DDS 进行节点间通信。

数据发送者不必关心接收者的地址与数量,接收者也不必关心发送者,只需关注主题(topic)即可完成消息收发。

在 turtlesim 实验中,teleop_turtle 节点对 turtle1/cmd_vel 主题发布消息,turtlesim 订阅该主题并收到消息,从而实现控制。

DDS

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