ROS2 入门指南:从零认识机器人开发框架
ROS2 入门指南:从零认识机器人开发框架
前言
随着机器人、自动驾驶、无人机以及具身智能(Embodied AI)的发展,ROS2(Robot Operating System 2) 已逐渐成为机器人软件开发的重要基础设施。
如果你来自:
- 嵌入式开发(BSP/Linux Driver)
- C++开发
- 自动驾驶
- AI/深度学习
- 软件工程
学习 ROS2 都会是一个不错的技术扩展方向。
本文将介绍:
✅ 什么是 ROS2
✅ ROS2 为什么出现
✅ ROS2 核心概念
✅ ROS2 通信机制
✅ 开发环境
✅ 第一个 ROS2 示例
✅ 后续学习路线
适合:零基础入门
1. 什么是 ROS2?
ROS2(Robot Operating System 2)并不是一个真正的操作系统,而是:
一套用于机器人开发的软件框架和工具链。
它提供:
- 节点通信
- 消息传输
- 硬件抽象
- 可视化工具
- 仿真工具
- 调试工具
类似于:
1 | Android → 手机开发平台 |
机器人系统通常包含:
1 | 摄像头 |
ROS2 可以帮助这些模块互相通信。
2. 为什么需要 ROS2?
ROS1 曾经是机器人领域主流,但存在问题:
| 问题 | ROS2 改进 |
|---|---|
| 实时性差 | 支持实时系统 |
| 单机通信 | 支持分布式 |
| 安全机制弱 | 增加安全通信 |
| 多机器人困难 | 更适合复杂系统 |
| Linux绑定 | 支持 Windows/macOS |
ROS2 最大变化:
采用 DDS(Data Distribution Service) 作为通信中间件。
因此:
1 | ROS1: |
ROS2 不再依赖 Master。
3. ROS2 架构
整体结构:
1 | Application Layer |
常见 DDS:
- Fast DDS
- Cyclone DDS
- Connext DDS
4. ROS2 核心概念
学习 ROS2 首先要理解几个核心对象。
4.1 Node(节点)
节点是:
完成某个独立功能的软件模块
例如:
1 | Camera Node |
一个机器人:
1 | Robot |
查看节点:
1 | ros2 node list |
4.2 Topic(话题)
用于:
发布 / 订阅 通信
类似:
1 | Publisher ---> Topic ---> Subscriber |
例如:
摄像头发布图像:
1 | Camera |
查看:
1 | ros2 topic list |
监听:
1 | ros2 topic echo /topic_name |
4.3 Message(消息)
Topic 传输数据格式:
例如:
1 | sensor_msgs/Image |
速度控制:
1 | linear.x |
4.4 Service(服务)
适合:
请求 → 响应
类似:
1 | Client |
适用于:
- 查询状态
- 修改参数
- 开关控制
查看:
1 | ros2 service list |
4.5 Action(动作)
适合:
耗时任务
例如:
机器人导航:
1 | 发送目标 |
常见:
- 导航
- 机械臂运动
- 路径规划
5. ROS2 工作空间
创建:
1 | mkdir -p ~/ros2_ws/src |
编译:
1 | colcon build |
加载环境:
1 | source install/setup.bash |
目录:
1 | ros2_ws/ |
6. 安装 ROS2(Ubuntu 示例)
推荐:
Ubuntu 22.04
安装:
1 | sudo apt update |
配置:
1 | echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc |
验证:
1 | ros2 --version |
7. 创建第一个 ROS2 Package
进入:
1 | cd ~/ros2_ws/src |
创建:
Python:
1 | ros2 pkg create my_pkg \ |
C++:
1 | ros2 pkg create my_cpp_pkg \ |
编译:
1 | cd ~/ros2_ws |
加载:
1 | source install/setup.bash |
8. 第一个 Publisher 示例
创建:
1 | import rclpy |
运行:
1 | ros2 run package_name node_name |
监听:
1 | ros2 topic echo /hello |
输出:
1 | hello ros2 |
9. ROS2 常用工具
RViz2
可视化:
启动:
1 | rviz2 |
查看:
- 雷达
- 地图
- TF
- Camera
Gazebo
机器人仿真:
支持:
- 物理环境
- 传感器
- 机器人模型
rosbag2
录制:
1 | ros2 bag record |
回放:
1 | ros2 bag play |
TF2
坐标转换:
例如:
1 | map |
10. ROS2 学习路线推荐
建议顺序:
第一阶段
基础:
- Linux
- Git
- Python
- C++
时间:
2 周
第二阶段
ROS2:
学习:
- Node
- Topic
- Service
- Action
- Parameter
时间:
2 周
第三阶段
进阶:
学习:
- DDS
- QoS
- TF2
- 生命周期节点
时间:
3 周
第四阶段
项目:
建议做:
① 雷达避障
② SLAM 建图
③ 导航系统
④ 机械臂控制
⑤ 自动驾驶 Demo
总结
ROS2 是机器人开发的重要基础设施。
理解:
1 | Node |
基本就完成了入门。
下一篇建议学习:
ROS2 通信机制详解:Topic、Service、Action 区别与使用场景
参考资料
官方文档:
https://docs.ros.org/
ROS2 Tutorials:
https://docs.ros.org/en/humble/Tutorials.html
持续更新:
《ROS2 入门到实战》系列