3. 运动学基础:正运动学与逆运动学、DH参数建模、运动学求解的数值方法
各位好,我是老周。在机器人调试这行摸爬滚打了十几年,今天咱们聊聊运动学。说实话,很多刚入行的工程师觉得运动学就是背公式、套矩阵,没什么大不了的。但我见过太多项目,就是因为运动学没吃透,调试时各种翻车。
运动学是什么?说白了,就是研究机器人怎么动、动到哪的问题。你给关节发指令,末端执行器会走到什么位置?反过来,你想让末端走到某个点,关节该怎么转?这就是正运动学和逆运动学要干的事。
核心观点:正运动学是“因推果”,逆运动学是“果推因”。两者互为逆过程,但难度天差地别。
3.1 正运动学:从关节空间到笛卡尔空间
正运动学,我习惯叫它“直推”。你给机器人每个关节一个角度,它就能算出末端在空间里的精确位置和姿态。这个过程是确定的,一个输入对应一个输出。
我记得刚入行时,带我的老师傅说:“正运动学就是机器人的‘身份证’——你给它关节值,它告诉你它在哪。”这个比喻我一直记着。
正运动学的数学本质是什么?就是矩阵连乘。每个关节对应一个齐次变换矩阵,把这些矩阵按顺序乘起来,就得到了末端相对于基座的位姿。
// 正运动学核心公式
T_0_n = T_0_1 * T_1_2 * T_2_3 * ... * T_{n-1}_n
// 其中 T_{i-1}_i 是相邻连杆的变换矩阵
// 最终 T_0_n 包含旋转矩阵 R 和平移向量 p
实战技巧:我在调试六轴机器人时,习惯先验证正运动学。方法很简单:让所有关节归零,看末端是不是在理论位置。如果偏差超过0.1mm,说明DH参数或者零点标定有问题。
3.2 DH参数建模:机器人的“骨架说明书”
DH参数,全称Denavit-Hartenberg参数。说白了,就是用4个参数来描述相邻两个连杆之间的几何关系。哪4个?连杆长度a、连杆扭角α、关节距离d、关节转角θ。
你想想看,一个机器人有6个关节,就需要6组DH参数。这24个数字,就是机器人的“骨架说明书”。
| 参数 | 符号 | 物理含义 | 我的经验 |
|---|---|---|---|
| 连杆长度 | a | 相邻关节轴线的公垂线长度 | 通常由机械图纸给出,但实际装配有公差 |
| 连杆扭角 | α | 相邻关节轴线的夹角 | 这个参数最容易出错,我吃过亏 |
| 关节距离 | d | 沿关节轴线的偏移量 | 注意正负号,方向搞反了末端会飞 |
| 关节转角 | θ | 绕关节轴线的旋转角 | 正运动学中这是变量,逆运动学中这是求解目标 |
建立DH参数表,我有个习惯:先画坐标系,再填参数。坐标系画错了,后面全白搭。标准步骤是这样的:
- 标关节轴线:每个关节画一条旋转轴或移动轴
- 定坐标系原点:轴线交点或公垂线交点
- 定X轴方向:沿公垂线从当前轴线指向下一轴线
- 定Z轴方向:沿关节轴线方向
- 填参数:按a、α、d、θ的顺序填入表格
注意:DH参数有两种约定——标准DH和改进DH。区别在于变换矩阵的乘法顺序不同。我曾经在一个项目中混用了两种约定,结果仿真和实机动起来完全对不上,排查了整整两天。所以,开工前先确认团队用的是哪种约定。
3.3 逆运动学:从笛卡尔空间回到关节空间
逆运动学就难多了。你告诉机器人“末端要去这里”,它得自己算出每个关节该转多少度。为什么难?因为一个末端位姿可能对应多个关节组合,也可能一个都没有。
我遇到过最典型的场景:焊接机器人要沿着一条焊缝走,末端位姿是连续的,但关节角度可能突然跳变。这就是逆运动学的多解问题。
逆运动学的求解方法,我分成两类:
- 解析法:通过代数或几何推导,得到封闭解。速度快,但只适用于特定构型(比如后三个关节轴线交于一点的机器人)。
- 数值法:迭代逼近,通用性强,但计算量大,且需要好的初值。
我的建议:如果机器人构型支持解析解,优先用解析法。数值法作为保底方案。工业机器人中,六轴串联机器人通常可以用解析法求解,因为后三个关节轴线交于腕点。
3.4 数值求解方法:牛顿-拉夫森迭代
数值方法里,最常用的是牛顿-拉夫森法。它的思路很简单:先猜一组关节角,算正运动学得到末端位姿,跟目标位姿比一下,有误差就调整关节角,再算,直到误差足够小。
数学上,它依赖雅可比矩阵的逆或伪逆。雅可比矩阵描述了关节速度与末端速度之间的映射关系。
// 牛顿-拉夫森法求解逆运动学
while (误差 > 阈值) {
// 1. 计算当前关节角下的正运动学
T_current = forward_kinematics(q_current);
// 2. 计算末端位姿误差
e = target_pose - T_current;
// 3. 计算雅可比矩阵
J = compute_jacobian(q_current);
// 4. 求解关节角增量
delta_q = J_inv * e; // 或 J_pinv * e
// 5. 更新关节角
q_current = q_current + delta_q;
}
避坑指南:我曾经用数值法求解一个四轴机器人的逆运动学,结果迭代不收敛。排查后发现是雅可比矩阵接近奇异——机器人处于某个特殊姿态,某些关节失去了运动自由度。解决办法是加入阻尼项(Levenberg-Marquardt方法),牺牲一点精度换取稳定性。
3.5 运动学标定:理论到现实的桥梁
理论模型再漂亮,跟实际机器人之间总有偏差。为什么?因为加工有公差、装配有误差、使用有磨损。运动学标定,就是通过实测数据反推真实的DH参数。
我参与过一个项目,机器人重复定位精度0.02mm,但绝对定位精度只有2mm。问题出在哪?DH参数跟实际对不上。后来我们用激光跟踪仪做了标定,把绝对定位精度提升到了0.1mm以内。
标定的基本流程:
- 数据采集:让机器人走到多个姿态,用外部测量设备记录末端实际位姿
- 误差建模:建立理论位姿与实际位姿之间的误差模型
- 参数辨识:用最小二乘法或卡尔曼滤波估计真实的DH参数
- 参数更新:将辨识结果写回控制器
重要提醒:标定不是一劳永逸的。机器人使用一段时间后,由于齿轮间隙、轴承磨损等原因,DH参数会漂移。我建议每半年或每1000小时做一次标定检查。