【学习】ROS2 Jazzy 快速入门

一、前期调研

  1. 什么是ROS
    1. 全称:Robot Operating System,机器人操作系统(广义上),本质上是机器人开发平台;
    2. 本质:
      1. 一个分布式通信框架(核心本质);
        1. 提供跨进程、跨机器的消息传递机制。
      2. 开发工具集合;
        1. 将复杂机器人系统拆解成各种模块化的节点、工具,方便复用。
      3. 一系列开源软件包。
        1. 形成了庞大的软件包生态。
  2. ROS1和ROS2的区别
    1. ROS1是中心化的,有master节点,ROS2去中心化网络,没有master节点;
    2. ROS1的通信协议是TCP\UDP\XMLRPC,而ROS2的主要通信协议是DDS;
    3. ROS1只能在ubuntu上使用,ROS2可以在Linux、Windows、Mac、RTOS全平台上使用。
  3. ROS对不同平台的支持情况
    1. ROS1主流仅支持ubuntu;
    2. ROS2支持Linux、Windows、Mac、RTOS全平台。
  4. ROS2版本区别
    1. 参考链接:https://docs.ros.org/
    2. 主要分成长期支持版、尝鲜版、开发版
      1. 长期支持版:稳定性最好,维护5年左右,适合长期课题;
      2. 尝鲜版:新功能多,生命周期短,适合想尝鲜最新功能的研究;
      3. 开发版:总是弓虽最新改动,适合极客、核心代码贡献者,不适合科研和生产。
  5. 能否在windows上做ROS开发
    1. 目前(2025)ROS2长期支持版是:Jazzy Jalisco,其官方文档:https://docs.ros.org/en/jazzy/Installation.html;
    2. ROS1不行,ROS2 Jazzy Jalisco 的官方文档中明确标注了支持windows;
    3. 但是整个社区大部分软件包、教程、代码都是基于ubuntu,很多作者都没测试过windows版本,导致windows下只能跑通ROS2的核心源码,离完整使用距离较远,因此不能直接在windows上做ROS2开发;
    4. 方案优劣:
      1. 使用原生ubuntu电脑
        1. 体验最优;
        2. 需要额外电脑安装ubuntu系统。
      2. 使用ubuntu服务器
        1. 云服务器:当机器人存在大量外设时(相机、雷达、机械臂),公有云基本不支持直接把硬件设备直通到云端虚拟机,即使能连接,延迟和抖动也会很大;
        2. 物理服务器:外设连接时需要到机房中进行测试。
      3. 使用vmware等虚拟机
        1. 文件、网络交互繁琐;
        2. 安装即用。
      4. 使用wsl
        1. 部署简单快捷;
        2. 日常开发体验好;
        3. GUI渲染较慢;
        4. 外设连接可能需要额外配置。
  6. 配置倾向
    1. ROS的通信、调度、日志均依赖CPU和内存,对GPU无要求;
    2. 常见的ROS2包(导航、路径规划、控制、驱动)都是纯CPU算法;
    3. 仿真对对GPU和CPU的要求较高(CPU是木桶中的短板);
    4. 如果是做目标检测、语义分割等视觉、推理场景,对GPU要求更高。
  7. 最终方案:
    1. 在个人电脑(CPU配置够高)上使用WSL2作为学习和测试的开发环境;
    2. 需要大规模仿真、深度学习训练时,部署到物理服务器(GPU配置够高)上进行训练。

二、WSL2配置

这里可以直接参考这篇博客,安装Ubuntu24.04:

https://www.cnblogs.com/quantoublog/articles/17674475.html

只需修改一处命令即可:

wsl --install -d Ubuntu-24.04

三、安装ROS2 Jazzy

3.1 更换下载源

管理员身份启动wsl

wsl -d Ubuntu-24.04

备份原配置文件

cd /etc/apt/

sudo cp sources.list sources.list.bk

修改下载源

cd /etc/apt/sources.list.d/
sudo vim ubuntu.sources

将原来的配置注释:

image-20250912130055376

然后新增下面的下载源:

Types: deb
URIs: https://mirrors.aliyun.com/ubuntu/
Suites: noble noble-security noble-updates noble-proposed noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

保存并退出后,验证有效性

sudo apt list --upgradable

3.2 配置UTF-8

从这里开始主要参考官方安装说明:

https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html

locale  # check for 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  # verify settings

3.3 添加ROS存储库

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

这里需要注意,如果使用wsl安装ros,这里不能用$VERSION_CODENAME获取版本别名,我们已经固定了ubuntu24.04,因此直接把noble拼进去就行了。

sudo apt update && sudo apt install curl -y
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}.noble_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb

3.4 安装开发套件

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

3.5 安装ROS2本体

更新

sudo apt update
sudo apt upgrade -y

安装完整版

sudo apt install ros-jazzy-desktop

安装精简版(仅包含通信库、消息库、命令行工具)

sudo apt install ros-jazzy-ros-base

3.6 配置环境变量

每次打开终端需要加载ROS环境

source /opt/ros/jazzy/setup.bash

可以把source添加到bashrc中,使其自动生效

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

3.7 运行实例程序

测试C++发布者和python订阅者

终端1:

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

终端2:

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

如果一边输出 Publishing,另一边输出 I heard,说明 ROS 2 环境成功运行

image-20250912150545132

3.8 常见问题

https://docs.ros.org/en/jazzy/How-To-Guides/Installation-Troubleshooting.html

四、小乌龟示例

官方文档:

https://ros.ncnynl.com/en/jazzy/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.html

4.1 安装基础模拟器

sudo apt update
sudo apt install ros-rolling-turtlesim

检查是否安装成功

ros2 pkg executables turtlesim

期望输出:

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

4.2 运行

终端1:

ros2 run turtlesim turtlesim_node

image-20250912161401797

其负责显示。

终端2:

ros2 run turtlesim turtle_teleop_key

负责控制小乌龟移动,在终端2中按方向键和'g|b|v|c|d|e|r|t'。

image-20250912161640397

posted @ 2025-09-12 15:09  小拳头呀  阅读(225)  评论(0)    收藏  举报