ROS2 Jazzy 开发环境搭建指南
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(推荐)
- 打开 Microsoft Store
- 搜索 “Ubuntu 24.04”
- 点击"获取"安装
方法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:
- 运行 XLaunch(开始菜单搜索)
- 显示设置:选择 “Multiple windows” → Next
- 启动方式:选择 “Start no client” → Next
- 额外设置:✅ 勾选 “Disable access control”(必须!)→ Next
- 完成: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 关闭测试窗口。
如果图形不显示:
-
检查防火墙:
- Windows搜索 “防火墙”
- 允许应用通过防火墙
- 找到 VcXsrv,勾选"专用"和"公用"
-
确认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中机器人模型消失
解决方案:
-
添加RobotModel:
- RViz左下角点击 Add
- 选择 RobotModel
- OK
-
调整视角:
- 滚轮缩放
- 点击顶部 Reset 按钮
-
重启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: 图形界面不显示
检查清单:
-
VcXsrv是否运行:
- Windows托盘有X图标?
-
DISPLAY变量:
echo $DISPLAY # 应该显示IP地址,不是 :0 -
防火墙:
- 允许VcXsrv通过防火墙
-
测试:
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)
每次使用的启动流程
- Windows端:启动XLaunch(勾选"Disable access control")
- 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机器人开发环境的搭建!开始你的机器人之旅吧!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)