Skip to main content

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

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

full_system

上图是最终效果:一个两连杆机械臂在 RViz2 中完成带障碍物的运动规划,末端执行器沿规划路径运动,整个系统跑在 ROS2 Jazzy + MoveIt 2 上。

目录

教学主线

本套教程遵循以下递进顺序:

机器人系统认知 -> 运动学最小闭环 -> 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_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 编辑文件。