【学习】ROS2 Jazzy和Humble 快速入门

一、前期调研

  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配置(可选)

如果你没有一台ubuntu电脑或服务器,只能在windows上进行安装,那么我推荐你在windows wsl下进行安装。

这里可以直接参考这篇博客,安装Ubuntu24.04(Jazzy 选24,Humble 选22):

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

只需修改一处命令即可:

wsl --install -d Ubuntu-24.04
或
wsl --install -d Ubuntu-22.04

三、安装ROS2 Jazzy(Humble不同之处我会标出)

3.1 更换下载源

管理员身份启动wsl(如果你是纯ubuntu,忽略此步)

# Jazzy
wsl -d Ubuntu-24.04

# Humble
wsl -d Ubuntu-22.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

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

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对应noble,ubuntu22对应jammy,拼进去就行了(命令中我已改好,不必再进行修改)。

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}')

# Jazzy
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"

# Humble
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}.jammy_all.deb"

sudo dpkg -i /tmp/ros2-apt-source.deb

如果无法下载,可访问https://github.com/ros-infrastructure/ros-apt-source/releases手动下载deb。

3.4 安装开发套件

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

3.5 安装ROS2本体

更新

sudo apt update
sudo apt upgrade -y

安装完整版

# Jazzy
sudo apt install ros-jazzy-desktop
# Humble
sudo apt install ros-humble-desktop

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

# Jazzy
sudo apt install ros-jazzy-ros-base
# Humble
sudo apt install ros-humble-ros-base

3.6 配置环境变量

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

# Jazzy
source /opt/ros/jazzy/setup.bash
# Humble
source /opt/ros/humble/setup.bash

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

# Jazzy
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
# Humble
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

如果是多用户环境,可以直接创建自启动脚本

# ROS 2 全局环境初始化

# Jazzy
sudo vim /etc/profile.d/ros2_jazzy.sh
加入以下内容:
if [ -f /opt/ros/jazzy/setup.bash ]; then
    source /opt/ros/jazzy/setup.bash
fi

# Humble
sudo vim /etc/profile.d/ros2_humble.sh
加入以下内容:
if [ -f /opt/ros/humble/setup.bash ]; then
    source /opt/ros/humble/setup.bash
fi

3.7 运行实例程序

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

终端1:

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

# Humble
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

终端2:

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

# Humble
source /opt/ros/humble/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

五、ros2_control(humble)

ros2_control是ros2系统中连接“高层算法(大脑)”和“底层硬件(四肢)”的标准中间件。它将物理层和算法层进行了有效的解耦,并通过插件的形式组合各个模块,具有很高的拓展性。

如果希望深入机器人领域学习,让自己的代码能够运行到各种设备上,那么就需要ros2_control。

  • 创建ros2_control工作空间
mkdir -p ~/ros2_control_ws/src

cd ~/ros2_control_ws/

wget https://raw.githubusercontent.com/ros-controls/ros2_control_ci/master/ros_controls.$ROS_DISTRO.repos

vcs import src < ros_controls.$ROS_DISTRO.repos
  • 安装依赖包
# 可用rosdep
rosdepc update --rosdistro=$ROS_DISTRO

sudo apt-get update

rosdepc install --from-paths src --ignore-src -r -y
  • 编译ros2_control
colcon build --symlink-install
  • 添加到环境变量
vim ~/.bashrc

source 你的ros2_control目录/install/setup.bash
posted @ 2025-09-12 15:09  小拳头呀  阅读(709)  评论(0)    收藏  举报