4. 连杆与关节:人形机器人的骨架与关节
聊到人形机器人运动学,绕不开两个最基础的概念:连杆和关节。说白了,连杆就是机器人的骨头,关节就是连接骨头的活动部位。你想想看,我们人走路、挥手,靠的就是骨骼和关节的配合。机器人也一样。
我个人习惯把连杆和关节比作「积木条」和「转轴」。积木条本身不会动,但通过转轴连起来,就能搭出各种姿势。这一章,我们就来拆解这两个核心元素,以及它们背后的数学描述——Denavit-Hartenberg 参数(简称 DH 参数)。
4.1 连杆参数:用四个数描述一根骨头
一根连杆,在三维空间里怎么精确描述?你可能会说,知道它两端关节的位置不就行了?嗯,理论上可以,但那样太啰嗦了。运动学里,我们只需要四个参数,就能完整描述相邻两根连杆之间的相对关系。这就是 DH 参数。
| 参数符号 | 名称 | 物理含义 |
|---|---|---|
| ai-1 | 连杆长度 | 从关节 i-1 到关节 i 沿公垂线的距离 |
| αi-1 | 连杆扭角 | 关节 i-1 轴线与关节 i 轴线之间的夹角 |
| di | 连杆偏距 | 沿关节 i 轴线,从公垂线到下一公垂线的距离 |
| θi | 关节角 | 绕关节 i 轴线,从上一连杆到当前连杆的转角 |
核心记忆点:四个参数里,a 和 α 描述连杆本身的几何形状,是固定值;d 和 θ 描述相邻连杆的相对位置,其中一个是变量(取决于关节类型)。
我在项目中遇到过不少新手,一上来就死记硬背这四个参数的定义,结果画图时全搞反了。我的建议是:先画图,再标参数。拿一支笔和一张纸,画出两根连杆和它们之间的关节,然后对照表格一个一个标上去。标完三个例子,你就再也不会忘了。
4.2 关节类型:旋转 vs 移动
人形机器人里,关节主要分两种:旋转关节和移动关节。旋转关节就像你的肩膀、肘部、膝盖——骨头绕着关节转。移动关节就像活塞——骨头沿着直线滑动。
你可能会问:人形机器人不是应该模仿人吗?人哪有移动关节?嗯,确实,大多数商业人形机器人(比如 Atlas、Tesla Optimus)的关节全是旋转的。但移动关节在工业机器人里很常见,而且有些特殊的人形机器人(比如外骨骼)也会用到。所以,我们得把两种都讲清楚。
| 关节类型 | DH 参数中的变量 | 运动范围 | 人形机器人常见位置 |
|---|---|---|---|
| 旋转关节 (R) | θi 变化,di 固定 | 通常 ±180° 或更小 | 肩、肘、髋、膝、踝 |
| 移动关节 (P) | di 变化,θi 固定 | 通常 0~500mm | 外骨骼伸缩杆、特殊升降机构 |
小技巧:判断一个关节是旋转还是移动,最简单的方法就是看它的运动轨迹。旋转关节的轨迹是圆弧,移动关节的轨迹是直线。如果你在调试机器人时发现某个关节的运动轨迹不对劲,十有八九是 DH 参数里的变量类型设错了。
4.3 关节空间与操作空间:两个世界的对话
好了,现在我们有了连杆和关节,可以搭出一个人形机器人的骨架了。但问题来了:我们怎么描述这个骨架的「姿势」?
答案是:两个空间。
- 关节空间:用所有关节的角度(或位移)组成的向量来描述机器人的姿势。比如,一个 6 自由度的机械臂,关节空间就是一个 6 维向量 [θ₁, θ₂, θ₃, θ₄, θ₅, θ₆]。
- 操作空间(也叫任务空间):用机器人末端(比如手部)的位置和姿态来描述。通常是一个 6 维向量 [x, y, z, roll, pitch, yaw]。
你想想看,我们想让机器人去抓一个杯子。杯子在操作空间里有一个坐标(比如桌子上的某个点)。但机器人只能通过调整关节角度来移动手。所以,我们必须把操作空间的指令「翻译」成关节空间的指令。这个翻译过程,就是运动学的核心任务。
避坑指南:我曾经犯过一个低级错误——在调试人形机器人走路时,直接给关节空间发了一个「大步向前」的指令,结果机器人直接摔倒了。为什么?因为关节空间里「大步向前」对应的操作空间轨迹可能是一条弧线,而不是直线。后来我学乖了:先规划操作空间的轨迹,再逆解到关节空间。这个顺序不能乱。
4.4 知识体系总览
下面这张图,把这一章的核心逻辑串起来了。你可以把它当作一个「导航图」,以后遇到连杆、关节、DH 参数相关的问题,先看这张图,心里就有底了。
4.5 一个简单的例子:人形机器人的手臂
光讲理论太枯燥了。我们拿人形机器人的一条手臂来练练手。假设这条手臂有 3 个关节:肩关节(旋转)、肘关节(旋转)、腕关节(旋转)。
对应的 DH 参数表大概长这样(简化版):
| 连杆 i | ai-1 (mm) | αi-1 (°) | di (mm) | θi (°) | 关节类型 |
|---|---|---|---|---|---|
| 1(肩) | 0 | 0 | 0 | θ₁ | 旋转 |
| 2(上臂) | 300 | 90 | 0 | θ₂ | 旋转 |
| 3(前臂) | 250 | 0 | 0 | θ₃ | 旋转 |
你看,a₁ = 300mm 就是上臂的长度,a₂ = 250mm 就是前臂的长度。α₁ = 90° 表示肩关节轴线和肘关节轴线是垂直的——这很符合人体结构,你的上臂可以前后摆动,前臂可以上下弯曲。
个人经验:实际搭建人形机器人时,DH 参数表里的 a 和 α 通常来自机械设计图纸。但图纸上的尺寸往往是「理论值」,加工出来会有误差。我建议你拿到实物后,用激光测距仪或者三坐标测量仪重新标定一遍。别问我为什么知道——有一次我偷懒直接用图纸参数,结果机器人抓东西差了 2 厘米。
4.6 小结
这一章我们聊了三件事:
- 连杆参数:四个 DH 参数(a, α, d, θ)精确描述相邻连杆的关系。
- 关节类型:旋转关节(变量是 θ)和移动关节(变量是 d)。
- 两个空间:关节空间(所有关节变量的集合)和操作空间(末端位姿的集合)。
嗯,到这里,你已经掌握了人形机器人运动学的「骨架」和「关节」。下一块拼图,就是如何在这两个空间之间来回切换——也就是正向运动学和逆向运动学。不过那是后面几章的事了,先把这一章的内容消化掉再说。