跳到主要内容

机器人运动学与 ROS2 基础教程

这套教程面向“想真正把机器人系统跑起来”的开发者:不只讲公式,也不只讲命令,而是围绕一个可运行的两连杆机械臂示例,串起运动学、ROS2 工程化与 MoveIt 2 规划闭环。

两连杆机械臂在 RViz2 中完成带障碍物规划
两连杆机械臂在 RViz2 中完成带障碍物规划

上图是教程最终效果:末端执行器按规划轨迹运动,系统运行在 ROS2 Jazzy + MoveIt 2。

1. 为什么学习这套教程

在机器人开发里,常见问题不是“不会写代码”,而是“知识点会一点,但连不起来”。这套教程重点解决三个断层:

  • 数学与工程断层:把 FK/IK 从公式推导到可运行代码
  • 单节点与系统断层:把 Topic/Service/Action、参数、Launch 串成可维护工程
  • 模型与规划断层:把 tf2、URDF、MoveIt 2 接成一个完整规划系统

2. 本教程涵盖的内容

章节核心主题实践结果
1. 系统导览与机器人全景机器人六层结构、ROS2 角色、学习路径建立整体认知与工程地图
2. 运动学核心概念与坐标变换坐标系、旋转/平移、齐次变换理解 FK 推导的基础
3. 正运动学与逆运动学实现两连杆 FK/IK 推导与代码化得到可复用的运动学函数
4. ROS2 工程基础工作空间、功能包、节点组织从脚本过渡到 ROS2 工程
5. 话题通信 Topic发布/订阅与消息类型让节点持续交换数据
6. 服务通信 Service 与动作 Action请求-响应与长任务反馈实现 IK 服务与动作执行
7. 参数系统与 Launch 文件参数管理与一键启动多节点配置集中化
8. tf2 坐标变换管理坐标树、广播与查询统一系统空间表达
9. URDF 机器人建模与 robot_state_publisher机器人结构建模与状态发布用模型驱动 TF 关系
10. MoveIt 2 基础与运动规划MoveIt 配置与首次规划触发可视化路径规划
11. MoveIt 2 仿真项目实战目标输入、IK、规划与执行闭环完成完整仿真系统
12. 教程总结与进阶方向知识复盘、迁移与扩展方向构建后续学习路线

3. 章节目录

4. 推荐学习路线

系统导览 → 运动学基础(2-3) → ROS2 工程化(4-7) → 建模与坐标系统(8-9) → MoveIt 2 规划(10-11) → 总结与进阶(12)

如果时间有限,建议优先走完:1 -> 3 -> 5 -> 8 -> 9 -> 10 -> 11。这条主线能最快形成“可运行闭环”。

环境准备

克隆项目后,设置工作空间路径变量,后续所有命令都依赖这个变量:

# 进入你 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_descriptionURDF 模型文件(9)
my_robot_moveit_configMoveIt 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 编辑文件。