机器人运动学与ROS2基础教程
从零推导运动学,到用 MoveIt 2 驱动一个真实的机械臂完成避障规划——这个项目记录了这条路上的每一步。

上图是最终效果:一个两连杆机械臂在 RViz2 中完成带障碍物的运动规划,末端执行器沿规划路径运动,整个系统跑在 ROS2 Jazzy + MoveIt 2 上。
目录
- 1. 课程导论与机器人系统全景
- 2. 运动学核心概念与坐标变换
- 3. 正运动学与逆运动学实现
- 4. ROS2 工程基础
- 5. 话题通信 Topic
- 6. 服务通信 Service 与动作 Action
- 7. 参数系统与 Launch 文件
- 8. tf2 坐标变换管理
- 9. URDF 机器人建模与 robot_state_publisher
- 10. MoveIt 2 基础与运动规划
- 11. MoveIt 2 仿真项目实战
- 12. 课程总结与进阶方向
教学主线
本套教程遵循以下递进顺序:
机器人系统认知 -> 运动学最小闭环 -> ROS2 通信与工程组织 -> tf2 和 URDF -> MoveIt 2 规划 -> 完整仿真项目
环境准备
克隆项目后,设置工作空间路径变量,后续所有命令都依赖这个变量:
# 进入你 clone 的项目根目录
cd /你clone的路径/ros_learning
# 设置 ROS_WS 变量(永久生效)
echo "export ROS_WS=$(pwd)/ros_ws" >> ~/.bashrc
source ~/.bashrc
# 验证
echo $ROS_WS
输出应为你本地的 ros_ws 绝对路径,例如 /home/yourname/ros_learning/ros_ws。
配套代码
教程配套代码位于 $ROS_WS/src/,包含以下包:
| 包名 | 内容 |
|---|---|
my_robot_basics | 运动学函数、基础节点(3-8) |
my_robot_interfaces | 自定义 Service/Action 接口(6) |
my_robot_description | URDF 模型文件(9) |
my_robot_moveit_config | MoveIt 2 配置包(10) |
my_robot_planner | 规划客户端节点(10-11) |
my_robot_bringup | 一键启动 Launch 文件(11) |
备注
- 文档默认使用 ROS2 Jazzy(Ubuntu 24.04),涉及其他发行版时把
jazzy替换为对应名称即可,核心概念完全一致。 - MoveIt 2 章节中明确区分 C++ 的
MoveGroupInterface与 Python 侧的moveit_py,避免概念混淆。 - 所有 shell 命令示例统一使用
vim编辑文件。