ROS2 Jazzy 开发环境搭建指南

从零开始在 Windows 10 + WSL2 上搭建 ROS2 机器人开发环境


目录


系统环境

  • 操作系统: Windows 10 Pro
  • Linux发行版: Ubuntu 24.04 LTS (WSL2)
  • ROS2版本: Jazzy Jalisco (LTS)
  • Python版本: 3.12

第一步:安装WSL2和Ubuntu

1.1 检查现有WSL

PowerShell (管理员) 中执行:

wsl --list --verbose

1.2 检查Ubuntu版本

如果已有Ubuntu,检查版本:

lsb_release -a

输出示例:

Distributor ID: Ubuntu
Description:    Ubuntu 24.04.3 LTS
Release:        24.04
Codename:       noble

1.3 安装Ubuntu 24.04(如果需要)

方法1:Microsoft Store(推荐)

  1. 打开 Microsoft Store
  2. 搜索 “Ubuntu 24.04”
  3. 点击"获取"安装

方法2:命令行

wsl --install -d Ubuntu-24.04

1.4 重置WSL密码(如果忘记)

# 以root身份进入WSL
wsl -u root

# 重置密码
passwd <你的用户名>

# 退出
exit

第二步:安装ROS2 Jazzy

2.1 更新系统

在WSL Ubuntu中执行:

sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common curl -y

常见问题:如果遇到 apt lock 错误:

# 方法1:等待1-2分钟让后台更新完成
# 方法2:重启WSL
wsl --shutdown  # 在PowerShell中执行
wsl             # 重新进入

2.2 添加ROS2官方源

# 添加ROS2 GPG密钥
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 添加ROS2软件源
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

如果访问GitHub超时

# 修改hosts文件
sudo nano /etc/hosts

# 添加以下行
185.199.108.133 raw.githubusercontent.com

# 保存:Ctrl+O → Enter → Ctrl+X

2.3 安装ROS2 Jazzy Desktop版

# 更新软件包列表
sudo apt update

# 安装ROS2桌面版(包含RViz、仿真工具等,约2GB)
sudo apt install ros-jazzy-desktop -y

# 安装开发工具
sudo apt install ros-dev-tools -y

⏱️ 预计时间:15-30分钟(取决于网速)

2.4 配置环境变量

# 添加到bashrc(每次启动自动加载)
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc

# 立即生效
source ~/.bashrc

2.5 验证安装

# 测试ROS2命令
ros2 --help

# 应该显示ROS2的帮助信息

第三步:配置X Server图形界面

Windows 10需要X Server来显示WSL2的图形界面。

3.1 下载并安装VcXsrv

  • 下载地址:https://sourceforge.net/projects/vcxsrv/
  • 双击安装包,一路Next

3.2 启动XLaunch(重要配置)

每次使用ROS2图形工具前都要先启动XLaunch

  1. 运行 XLaunch(开始菜单搜索)
  2. 显示设置:选择 “Multiple windows” → Next
  3. 启动方式:选择 “Start no client” → Next
  4. 额外设置:✅ 勾选 “Disable access control”(必须!)→ Next
  5. 完成:Finish

右下角托盘会出现 X 图标,表示运行中。

3.3 配置WSL的DISPLAY环境变量

# 添加DISPLAY变量到bashrc
echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk "{print \$2}"):0' >> ~/.bashrc

# 立即生效
source ~/.bashrc

# 验证配置
echo $DISPLAY
# 应该显示类似:172.x.x.x:0

3.4 测试图形界面

# 安装测试工具
sudo apt install x11-apps -y

# 测试图形显示
xeyes

如果弹出眼睛窗口(眼珠会跟随鼠标),说明配置成功!

Ctrl+C 关闭测试窗口。

如果图形不显示

  1. 检查防火墙

    • Windows搜索 “防火墙”
    • 允许应用通过防火墙
    • 找到 VcXsrv,勾选"专用"和"公用"
  2. 确认XLaunch配置

    • 必须勾选 “Disable access control”
    • 托盘有X图标

第四步:安装TurtleBot3

4.1 强制使用IPv4(解决网络问题)

# 配置apt使用IPv4
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4

# 更新源
sudo apt update

4.2 安装TurtleBot3核心包

# 安装核心仿真包
sudo apt install \
  ros-jazzy-turtlebot3-description \
  ros-jazzy-turtlebot3-gazebo \
  ros-jazzy-turtlebot3-teleop \
  ros-jazzy-turtlebot3-msgs \
  ros-jazzy-turtlebot3-fake-node \
  ros-jazzy-turtlebot3-navigation2 -y

4.3 配置机器人型号

# 设置机器人型号为burger
echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
source ~/.bashrc

4.4 安装通用键盘控制工具

sudo apt install ros-jazzy-teleop-twist-keyboard -y

第五步:运行第一个机器人

5.1 启动Fake Node + RViz

终端1:启动仿真机器人

ros2 launch turtlebot3_fake_node turtlebot3_fake_node.launch.py

成功后会自动弹出 RViz 窗口,显示机器人3D模型。

5.2 启动键盘控制

终端2(新开WSL窗口):启动键盘控制

source /opt/ros/jazzy/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 run teleop_twist_keyboard teleop_twist_keyboard

5.3 控制机器人

在终端2中按键控制:

基本移动
  • i - 前进
  • , - 后退
  • j - 原地左转
  • l - 原地右转
  • k - 停止
组合移动
  • u - 前进+左转
  • o - 前进+右转
  • m - 后退+左转
  • . - 后退+右转
速度调节
  • x - 降低线速度(推荐先按几次,默认太快)
  • c - 降低角速度
  • w - 增加线速度
  • e - 增加角速度

在RViz中,你会看到机器人移动,激光雷达和坐标系也会实时更新!

5.4 测试ROS2话题通信

终端3(可选):查看ROS2系统状态

source /opt/ros/jazzy/setup.bash

# 查看所有节点
ros2 node list

# 查看所有话题
ros2 topic list

# 查看机器人速度命令
ros2 topic echo /cmd_vel

# 查看里程计数据
ros2 topic echo /odom

# 查看话题发布频率
ros2 topic hz /odom

常见问题

Q1: Gazebo无法启动

问题ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py 一直显示 “Requesting list of world names”

原因:Gazebo Harmonic在WSL2中有兼容性问题

解决方案:使用Fake Node代替

ros2 launch turtlebot3_fake_node turtlebot3_fake_node.launch.py

Q2: teleop_keyboard报错 KeyError: 'TURTLEBOT3_MODEL'

解决方案

export TURTLEBOT3_MODEL=burger

或永久设置:

echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
source ~/.bashrc

Q3: RViz中机器人模型消失

解决方案

  1. 添加RobotModel

    • RViz左下角点击 Add
    • 选择 RobotModel
    • OK
  2. 调整视角

    • 滚轮缩放
    • 点击顶部 Reset 按钮
  3. 重启fake_node

    # Ctrl+C停止,然后重新启动
    ros2 launch turtlebot3_fake_node turtlebot3_fake_node.launch.py
    

Q4: 机器人移动速度太快

解决方案:在teleop终端按键调速

  • x - 降低线速度(多按几次)
  • c - 降低角速度
  • z - 同时降低所有速度

建议设置:

  • 线速度:0.1 - 0.2 m/s
  • 角速度:0.3 - 0.5 rad/s

Q5: apt安装时遇到lock错误

E: Could not get lock /var/lib/apt/lists/lock

解决方案

# 方法1:等待1-2分钟(系统自动更新)

# 方法2:重启WSL
wsl --shutdown  # 在PowerShell中执行
wsl             # 重新进入

Q6: 图形界面不显示

检查清单

  1. VcXsrv是否运行

    • Windows托盘有X图标?
  2. DISPLAY变量

    echo $DISPLAY
    # 应该显示IP地址,不是 :0
    
  3. 防火墙

    • 允许VcXsrv通过防火墙
  4. 测试

    xeyes  # 能弹窗说明X Server正常
    

下一步学习

1. ROS2基础概念

  • 节点(Node):独立的进程,执行特定任务
  • 话题(Topic):节点间异步通信的数据流
  • 服务(Service):节点间同步通信的请求/响应
  • 参数(Parameter):节点的配置参数
  • 动作(Action):长时间运行的任务

2. 探索ROS2命令

# 节点操作
ros2 node list                          # 列出所有节点
ros2 node info /turtlebot3_fake_node    # 查看节点详情

# 话题操作
ros2 topic list                         # 列出所有话题
ros2 topic echo /odom                   # 查看话题内容
ros2 topic hz /scan                     # 查看发布频率
ros2 topic info /cmd_vel                # 查看话题详情

# 手动发布消息
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist \
  "{linear: {x: 0.1}, angular: {z: 0.0}}"

# 服务操作
ros2 service list                       # 列出所有服务
ros2 service call /reset std_srvs/srv/Empty  # 调用服务

3. 学习SLAM建图

安装Cartographer(地图构建):

sudo apt install ros-jazzy-turtlebot3-cartographer -y

启动SLAM:

# 终端1:启动fake_node
ros2 launch turtlebot3_fake_node turtlebot3_fake_node.launch.py

# 终端2:启动SLAM
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=False

# 终端3:键盘控制建图
ros2 run teleop_twist_keyboard teleop_twist_keyboard

4. 创建自己的ROS2包

# 创建工作空间
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

# 创建Python包
ros2 pkg create --build-type ament_python my_robot_controller

# 构建
cd ~/ros2_ws
colcon build

# 加载环境
source install/setup.bash

5. 学习资源

官方文档
  • ROS2官方教程:https://docs.ros.org/en/jazzy/Tutorials.html
  • TurtleBot3文档:https://emanual.robotis.com/docs/en/platform/turtlebot3/
在线课程
  • The Construct(ROS2实战课程):https://www.theconstructsim.com/
  • Udemy: ROS2 for Beginners
书籍
  • 《机器人操作系统ROS2入门与实践》
  • 《Programming Robots with ROS》
社区
  • ROS Discourse:https://discourse.ros.org/
  • ROS Answers:https://answers.ros.org/
  • GitHub ROS2:https://github.com/ros2

环境总结

已安装的软件栈

Windows 10
  └── WSL2
      └── Ubuntu 24.04 LTS
          ├── ROS2 Jazzy Desktop
          │   ├── rclcpp/rclpy (核心库)
          │   ├── RViz (3D可视化)
          │   └── ros-dev-tools (开发工具)
          ├── TurtleBot3
          │   ├── turtlebot3_fake_node (仿真节点)
          │   ├── turtlebot3_description (机器人模型)
          │   └── turtlebot3_teleop (遥控)
          └── X Server (VcXsrv)

每次使用的启动流程

  1. Windows端:启动XLaunch(勾选"Disable access control")
  2. WSL端
    # 终端1:启动机器人
    ros2 launch turtlebot3_fake_node turtlebot3_fake_node.launch.py
    
    # 终端2:启动控制
    source /opt/ros/jazzy/setup.bash
    ros2 run teleop_twist_keyboard teleop_twist_keyboard
    

贡献与反馈

这份文档记录了从零开始搭建ROS2开发环境的完整过程。如果遇到新的问题或有改进建议,欢迎更新此文档。

文档版本:1.0
创建日期:2026-07-19
适用环境:Windows 10 + WSL2 + Ubuntu 24.04 + ROS2 Jazzy


🎉 恭喜你完成了ROS2机器人开发环境的搭建!开始你的机器人之旅吧!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐