COURSE PROFILE
课程概览与关键参数
以下参数全部取自 arm_practice 源讲义与真实源码,是贯穿 7 个实验的"硬指标"——先混个脸熟,实验中会反复用到。
| 维度 | 取值 / 说明 | 首次出现 |
| 硬件平台 | 具身智能实验箱 B2 / 机器人小车 C1(两平台共用同一套臂:URDF 名义 5 自由度链 arm_joint1~5 + 夹爪 r_joint,第六颗舵机 id5 只夹爪用;桌面级抓取场景) | EXP-01 |
| 串口链路 | 1 Mbps(1000000 baud)8N1,pyserial 直连下位机;帧 = 0xAA 0x55 + func + len + data + CRC8(CRC8 从 func 盖到 data 末尾,256 字节查表) | EXP-02 |
| PWM 舵机 | 脉宽 500~2500 μs,中位 CENTER_PWM=1500,弧度换算 PWM_TO_RAD = 4.712 rad ÷ 2000 = 0.002356。舵机物理行程 270°=4.712 rad,对应 ±1000 μs = ±2.356 rad = ±135°(这才是实机真正的限位) | EXP-02 |
| 关节轴分布 | J1 绕 Z(航向)+ J2/J3/J4 三根轴互相平行都绕 Y(俯仰)+ J5 绕 Z(夹爪自转)。所以 J2+J3+J4 的角度可以直接相加,而 J1 不行——这是 EXP-03/04 全部几何推导的出发点 | EXP-03 |
| 有效自由度 | 5 个关节只有 4 个独立笛卡尔自由度(x, y, z + 工具俯仰 pitch):J1 定方位,J2/J3 定平面位置,J4 定俯仰,J1 与 J5 的转动共轴重合——所以 J5 不能在固定 pitch 下改末端朝向,这就是作业里 "q5 恒为 0" 的原因 | EXP-03 / EXP-04 |
| 运动学指标 | 验收线 Avg < 0.5 mm、Max < 1.5 mm。实测现状:工作空间内点位闭环可到 0.00 mm,但超出 0.2523 m 的两杆合长的点位会静默夹紧 cos 值、误差 18~23 mm 却不报错——这是"求解成功 ≠ 解准确"的活教材(见 EXP-04) | EXP-03 / EXP-04 |
| 偏移证伪 | 旧版口径 "J2 +4.0°、J3 +2.3° 实测机械偏移" 已证伪——源码中无 system_offset_analysis 与偏移配置,无法复现;误差一律以实测归因为准 | EXP-04 |
| 抓取参数 | 节点默认 gripper_depth 0.0 / pre_grasp_height 0.03 / grasp_pitch 180°(夹爪朝下);arm_params.yaml 实配已改为 −0.040(负值=抬高);lift_height 0.05 已声明但源码未使用,改它无效——真实抬升看 pre_grasp_height | EXP-06 |
| 视觉定位 | HSV 颜色分割(红色两段并集)+ 深度反投影(fx=fy 由 camera_info 实时读取,实测 ≈614,cx≈320,cy≈240)+ TF 坐标链变换 | EXP-07 |
| 软件栈 | ROS2 Humble · MoveIt2 · Gazebo · pyserial · URDF/TF · server_cors Web 仿真器(8000 端口) | 贯穿全课 |
SAFETY FIRST
动手前的四条安全红线
机械臂是全课程唯一会"真动"的执行器,越界代价是舵机堵转打齿、甚至拽倒自身。以下红线在每个实验第 09 节还会以坑表形式复现。
- PWM 一律落在 500~2500 μs 之内——发之前先心算对应角度,超限即撞机械限位。
- 目标位姿必须逐步逼近——先小步试、再放大步长,禁止一条指令甩到极限位。
- 抓取前先预演——用 pwm_to_fk_demo 或 Web 仿真器把 5 路 PWM 走一遍,确认不会撞桌再上真机。
- 先跑安全前置脚本——test_servo_direct 自检通过、串口权限(dialout 组)配好,才允许进入交互模式。
先比喻,后公式
每个实验的"原理通俗讲解"先用生活类比(手臂、暗号脉宽、反推姿势)建立直觉,再看 DH 表与 CRC8 —— 按顺序读,公式不再是天书。
软硬两条路线对照
EXP-01 是纯仿真路线,EXP-02 是裸机串口路线,EXP-05 回到 ROS2 架构路线 —— 同一条机械臂三种打开方式,对照着学最快。
动画与互动台先玩一遍
帧格式、连杆几何、抓取流程都有 SVG 动画;PWM↔弧度、FK 正解、HSV 调参都有互动台 —— 先玩懂参数,再上实机少翻车。
安全红线贯穿始终
PWM 必须落在 500~2500μs、目标须逐步逼近、抓取前先预演 —— 实机代价是堵转打齿,把第 09 节的坑表背下来再动手。
LEARNING OUTCOMES
学完你将能做什么
四个可验收的能力目标,对应三个篇章的递进路径——每一条都能在实验报告里拿出证据。
读得懂模型
看 URDF 就知道每个 link / joint 在干什么,能沿 7 坐标系 TF 链回答"末端到底在哪",能在 RViz2 里复现并修改模型。
组得出协议帧
用 pyserial 手工拼出 0xAA55 + CRC8 的完整帧,把任意关节角换算成 500~2500 μs 安全脉宽并下发真实舵机。
算得对运动学
手算与代码双轨完成 FK 正解与解析 IK 逆解,会跑闭环验证、对照 Avg<0.5 / Max<1.5 mm 验收线,并按讲义口径归因误差(当前 18~23 mm 超差源于 IK/FK 模型不一致,而非机械偏移)。
调得动抓取
调 gripper_depth / pre_grasp_height 等节点参数,串起"预演 → 设目标 → Trigger 抓取 → 放置"全流程,并能扩展到视觉动态抓取。
COURSE MAP
七步学习路线图
把 7 个实验串成一条通关路线,每一步都踩在上一步的成果之上。
-
STEP 1 · EXP-01 仿真建模(4 学时)
在 RViz2 / Gazebo 里"造出"机械臂,弄清 7 个坐标系与每个关节的转轴方向。
-
STEP 2 · EXP-02 串口与 PWM 底层(4 学时)
绕开 ROS2 直连下位机,亲手组 0xAA55 + CRC8 帧,把角度变成舵机能听懂的脉宽。
-
STEP 3 · EXP-03 正运动学基础(4 学时)
建立"关节角 ↔ 末端坐标"的几何直觉,DH 表、FK 变换链与解析/数值两路 IK 对比。
-
STEP 4 · EXP-04 逆运动学基础与 IK 解算(4 学时)
跑 test_fk_ik 闭环验证解算器,按实测口径归因误差(当前 3/4 点位 FAIL、18~23 mm,疑为 IK/FK 模型不一致),--direct 实机逼近。
-
STEP 5 · EXP-05 ROS2 架构与动作回放(4 学时)
勘察 bringup 节点拓扑,让 action_player 把 pick_and_place.yaml 里的动作原样演一遍。
-
STEP 6 · EXP-06 逆运动学固定抓取(4 学时)
预演 → set_pick_target → Trigger 六阶段抓取,调节 gripper_depth / pre_grasp_height 适配不同物体。
-
STEP 7 · EXP-07 视觉动态抓取(8 学时)
HSV + 深度反投影 + TF 三件套定位任意摆放的目标,五状态机一键完成"看见即抓起"。
PRINCIPLE LAB · 原理补充(新增)
抓取原理实验室:6 个"为什么",6 台交互演示
把实验里的关键原理单独拆出来深挖——坐标变换、正/逆运动学、轨迹分步、六阶段抓取 3D、视觉定位,每个模块 = 一句原理 + 一个讲义真实案例 + 一台可拖可调的演示;页内自带完整教学大纲(模块·目标·案例·交互·衔接五列表),与本页 7 个实验的锚点双向互链。
LAB·M1-M6three.js 3D · 离线可用
M1 坐标系与 TF 变换链 · M2 正运动学(PWM 预演)· M3 逆运动学(拖拽目标 + 闭环 + DLS 阻尼)· M4 轨迹与分步移动 40%/60% · M5 六阶段抓取 3D 实验台(gripper_depth / pre_grasp_height 可视)· M6 HSV+反投影+TF 视觉定位。数学概念全部配交互式图示,滑块一动、公式数值与图形同步变。
衔接 · 每模块底部回链对应实验页真实章节 · 案例值全部取自 EXP005 讲义(含 (0.28,0,0.10) 抓取点、五路 PWM 预演、TF 示例 (0.55,0,0.40)、HSV 红色两段阈值)
MATH MAP · 数学地图
课程用到的数学:按薄弱点反查
八个层级从高中三角一路排到统计口径——哪一行生疏,就点右侧"去哪补"直达对应实验小节,现学现用。公式可以不推,概念要认;标 ⭐ 的三处是必须理解的。
| 层级 | 数学工具 | 用在课程哪里 | 去哪补 |
| 高中 · 三角 |
sin / cos、atan2、asin、勾股与相似三角形 |
解析法 IK 的地基;d=0.085m 肩部偏置用 asin 补偿;三角形闭合求指尖 |
EXP-04 · 原理 · EXP-03 · FK 链 |
| 高中 · 线性映射 |
角度 ↔ 弧度 ↔ 脉宽的仿射换算(PWM_TO_RAD) |
EXP-02 把关节角变成 500~2500μs 安全脉宽下发舵机 |
EXP-02 · 原理 |
| 大一 · 线性代数 ⭐ |
4×4 齐次变换矩阵连乘(平移 + 旋转)、旋转矩阵 / 欧拉角 / 四元数、矩阵求逆 |
FK = 变换链连乘;TF 坐标树;DLS 公式里的 Jᵀ(JJᵀ+λ²I)⁻¹ |
EXP-03 · 原理 · 几何常量表 |
| 大二 · 微分 ⭐ |
雅可比矩阵 J、行列式 det(J)、速度换算 ẋ = J·q̇ |
"汇率表":关节转多快 → 指尖走多快;det(J)→0 即奇异位 |
EXP-04 · 雅可比演示(可拖) |
| 进阶 · 数值优化 ⭐ |
阻尼最小二乘 DLS(阻尼因子 λ=0.1) |
IK 迭代求解、奇异位附近的防抖刹车;原理实验室有可拖 3D 版 |
原理实验室 M3 · 逆运动学 |
| 标定 · 方程与拟合 |
矩阵方程 AX = XB(Tsai-Lenz)、最小二乘 |
手眼标定解"相机装在哪",验收线 5mm;内参复核同一套思想 |
标定专题 · 手眼标定 |
| 视觉 · 透视几何 |
针孔相机模型(fx=fy=614, cx=320, cy=240)、深度反投影 |
EXP-07 把像素 + 深度还原成 3D 点,再经 TF 链交给 IK 抓取 |
EXP-07 · 原理 |
| 统计 · 误差口径 |
均值 / 百分位 P95、阈值与归一化、HSV 两段阈值 |
一切验收线(Avg<0.5mm、Max<1.5mm、掉点≤3%)的读法;颜色分割调参 |
EXP-04 · 误差判定与归因台 |
用法 · 从上往下即学习顺序:前两行高中数学就够开工;卡在第 3 行不用慌,EXP-03 的动画与互动台会把线代"演"给你看;后三行是选修深度,动手前再回头补。
没有真机能学完吗?
能。EXP-01/03/04 全程可用 Gazebo 与 Web 仿真器完成闭环验证;EXP-02/05/06/07 的命令与协议推导可在无硬件条件下通读演练,上机步骤以真机验收为准。
为什么先仿真、后裸机?
仿真里改坏一个 URDF 只是重载,裸机发错一帧可能堵转。先在数字世界建立"关节角 ↔ 末端位置"的直觉,再下探串口与 PWM,翻车成本最低。
数学基础差怎么办?
只需三角函数与二维向量:FK=逐段累加旋转平移,IK=解一个含 sin/cos 的方程组。第 06 节动画负责建几何直觉,第 07 节互动台负责代数验算,公式不背也能算对。
EXP-05⭐⭐ · 4 学时
ROS2 架构与动作回放
bringup 7~8 节点拓扑勘察、joint_command 弧度指令、action_player 节点回放 pick_and_place.yaml、play/next/stop 三服务与 servo_calib 零位校准。
关键点 · ros2 node/topic 勘察拓扑 · TF 链自检 · joint_command 弧度 vs PWM 两套单位 · Trajectory YAML 逐行回放
节点拓扑action_playerTrigger 服务软件 offset
👆 点击小节标题或右侧标签直达对应章节
EXP-06⭐⭐⭐ · 4 学时
逆运动学固定抓取
真实接口 set_pick_target / target_pose 与 pick·place Trigger 服务,离线预演、分步移动 _move_stepwise、六阶段抓取序列与抓取参数实测调优。
关键参数 · gripper_depth 默认 0.0(yaml 实配 −0.040,负值=抬高 40mm)· pre_grasp_height 0.03 · lift_height 0.05(源码未使用)· grasp_pitch 180°(四元数 {0,1,0,0} 夹爪朝下)· 放置点 (0.059,0.074,0.219)
抓取状态机分步移动软限位抓取参数调优
👆 点击小节标题或右侧标签直达对应章节
EXP-07⭐⭐⭐ · 8 学时
视觉动态抓取
visual_grasp.launch 一键拉起 5 节点:HSV 颜色分割 + 深度反投影 + TF 变换定位目标,look-then-move 策略与五状态机一键 start/confirm/skip/abort。
关键参数 · HSV 默认红色两段 (0,100,80)~(15,255,255) ∪ (160,100,80)~(180,255,255) · fx=fy=614 · 深度 uint16 mm ÷1000 · OBSERVE<1s / PICK<8s · 成功率 >85%
HSV 分割深度反投影TF 定位状态机
👆 点击小节标题或右侧标签直达对应章节
CALIBRATION TRACK · 综合专题(课程收尾)
标定专题:五个部分,让机械臂「对齐世界」
第 3 章之后的收尾块:从"为什么会默默抓偏"讲起,按 零位 → TCP 四点法 → 相机内参 → 手眼 → 抓取验证 五步走完完整标定链——工具链全部出自 ros2_ws 实仓(calibration / eye_hand_calibration 两包),每部分配案例与可调交互,最后把 5mm、>85% 串成一条合格链。
VLA·A对照读法
一帧画面两条路线:手写栈 vs 端到端
本课 EXP-07 的答法:HSV 分割 + 深度反投影 + TF 变换读懂"红色物块在哪"(感知)→ IK 与轨迹规划算出"胳膊怎么弯"(规划)→ 六阶段状态机 + PWM 把动作稳稳执行(控制)——每一环都是人写的规则,黑盒度低、可分段验收。VLA 的答法:图像 + 自然语言指令("把红色物块装进箱子")直接进一个大模型,输出动作序列——规则没了,换来的是零样本泛化:没见过的物块、没写过的指令也敢试。
逐环对应 · 感知头 ≈ HSV+深度+TF 链 · 动作序列 ≈ 六阶段抓取状态机 · 指令解析 ≈ 语音唤醒"小飞小飞"的角色升级(从关键词到语义理解)
感知规划状态机端到端
VLA·B诚实的行业站位
别急着丢掉经典栈——它是 VLA 的地基
2026 年的真实产线上,"经典栈打底 + 学习模块增强"仍是主流:VLA 擅长开放环境里的"看懂与决策",但 5mm 级定位精度、>85% 抓取验收、安全红线(急停/力矩释放)这些硬指标,靠的仍是可复现、可分段排查的工程链路——也就是你刚学完的这套。常见分工:VLA 出"抓哪、怎么摆",本课的 IK、标定与状态机负责"稳稳执行";奇异位、手眼标定这些概念在学习式方案里一个都躲不掉。
一句话 · VLA 决定"上限"(能听懂多复杂的话),经典栈决定"下限"(多稳、多准、敢不敢上产线)——两者都要会,才接得住具身智能岗的面试。
sim-to-real安全验收精度归因
VLA·C下一步路径
从这门课出发的三级台阶
① 数据意识(本周就能做):用现有真机链路采集"物块位姿 → 动作"演示数据——你已会的 rosbag/仿真器就是采集器。② 仿真里跑通语言→抓取:Hugging Face LeRobot(ACT/Diffusion Policy 等开源实现)或 OpenVLA 推理,在 MuJoCo/Gazebo 里感受端到端策略的强弱点。③ 补学习基础:强化学习入门(Gym 经典控制)+ BERT/VLM 结构科普,再回头看 π0 / GR00T 级别的工作。
衔接锚点 · M5 六阶段抓取(principles 3D 实验台)= 你要教给模型的"动作语言" · EXP-03/04 运动学 = 策略输出后的执行层
LeRobotOpenVLAACT / π0RL 入门
🌐 本页离线可用,外部项目名仅作学习路标——联网后搜 “huggingface lerobot” “openvla” 即达官方仓库