运动学基础:正运动学与逆运动学、D-H参数法、单腿工作空间分析
各位同学,咱们今天聊四足机器人运动学。说实话,这是整个控制系统的地基。你想想看,如果连腿该往哪儿摆、关节转多少度都算不清楚,那后面什么步态规划、地形适应全是空中楼阁。
我个人习惯把运动学分成两个方向来看:正运动学是已知关节角度,算足端位置;逆运动学反过来,已知足端目标位置,反推关节角度。这两个方向在实际工程中缺一不可。
正运动学:从关节到足端
正运动学相对直观。你给每个关节一个角度值,通过几何关系或者齐次变换矩阵,就能算出足端在空间中的坐标。我在做第一个四足机器人原型时,就是先用正运动学验证了机械结构设计是否合理。
四足机器人单腿通常有3个自由度:髋关节横滚、髋关节俯仰、膝关节俯仰。每个关节对应一个旋转矩阵,串联起来就是足端相对于基座的位姿。
核心公式:正运动学本质是齐次变换矩阵的连乘
T = T0→1 · T1→2 · T2→3 · T3→end
每个T矩阵里包含了旋转部分和平移部分。旋转由关节角度决定,平移由连杆长度决定。把这些参数代入,就能得到足端位置(x, y, z)。
D-H参数法:标准化的建模工具
说到运动学建模,就绕不开D-H参数法。Denavit和Hartenberg这两位前辈提出的方法,说白了就是用4个参数来描述相邻两个连杆之间的相对关系。
| 参数 | 符号 | 物理含义 |
|---|---|---|
| 连杆长度 | ai | 沿xi轴,从zi-1到zi的距离 |
| 连杆扭角 | αi | 绕xi轴,从zi-1到zi的转角 |
| 连杆偏距 | di | 沿zi-1轴,从xi-1到xi的距离 |
| 关节转角 | θi | 绕zi-1轴,从xi-1到xi的转角 |
我记得刚开始用D-H法时,最头疼的就是坐标系建立。每个关节的z轴方向、x轴方向怎么定,稍不注意就搞反了。后来我总结了一个经验:z轴永远沿着关节旋转轴,x轴从当前z轴指向下一个z轴。记住这个,坐标系就不会乱。
我的小技巧:在纸上先把每个关节的坐标系画出来,标清楚z轴方向,再填D-H参数表。别偷懒,这一步省了,后面调试时你会花更多时间找错。
下面这张图展示了四足机器人单腿的D-H坐标系建立方式,以及正运动学计算的完整流程:
逆运动学:从足端到关节
逆运动学才是真正考验功底的地方。你告诉机器人"足端要踩到那块石头上",它得自己算出每个关节该转多少度。这个问题比正运动学复杂得多,因为解不唯一,甚至可能无解。
四足机器人单腿的逆运动学,我通常用几何法来解。把三维空间投影到二维平面,利用余弦定理和反正切函数,就能得到解析解。
我曾经踩过的坑:逆运动学求解时,一定要注意关节限位。算出来的角度可能很完美,但实际关节根本转不到那个位置。所以每次求解后,一定要加限位检查,否则机器人会做出各种"反关节"动作,看着都疼。
以最常见的3自由度腿为例,逆运动学求解步骤大致如下:
- 投影到平面:将足端目标位置投影到髋关节所在的水平面和垂直平面
- 解髋关节横滚角:根据足端在水平面的投影,用atan2直接得到
- 解膝关节和髋关节俯仰角:在垂直平面内,利用余弦定理求解
- 多解选择:通常有"肘朝外"和"肘朝内"两种构型,根据实际需求选择
我的经验:实际工程中,我一般优先选择"肘朝外"构型。因为这种构型下,机器人摔倒时更容易自己爬起来。当然,如果你做的是小型机器人,空间受限,可能就得选"肘朝内"了。
单腿工作空间分析
工作空间分析,说白了就是搞清楚机器人的腿到底能够到哪些位置。这个分析在机械设计阶段就特别重要——你总不希望设计出来的机器人,腿够不到地面吧?
工作空间由三个因素决定:
- 连杆长度:大腿和小腿的长度直接决定了可达范围
- 关节限位:每个关节能转动的角度范围
- 机械干涉:连杆之间、连杆与机身之间会不会碰撞
我记得有一次做项目,理论计算的工作空间很漂亮,但实际装配后发现,膝关节在某个角度会撞到髋关节的电机座。从那以后,我每次做工作空间分析,都会把机械干涉考虑进去,用蒙特卡洛法随机采样关节角度,然后剔除那些会发生干涉的点。
工作空间分析的价值:
- 验证机械设计是否合理
- 确定机器人的最大步长和抬腿高度
- 规划行走轨迹时,确保目标点在可达范围内
- 优化连杆比例,提高运动性能
实际工程中,我一般会用MATLAB或者Python先做一遍工作空间仿真,把可达区域画出来。然后对照着这个区域,去规划机器人的行走步态。你想想看,如果目标足端位置落在工作空间之外,那逆运动学算出来的角度要么是虚数,要么会触发关节限位,机器人根本走不了。
好了,运动学基础就聊到这儿。这些内容看着简单,但真正上手做的时候,每个细节都可能让你折腾好几天。别问我怎么知道的——我的第一个四足机器人,光调运动学参数就花了两周。