137、运动学基础:正逆运动学求解与机械臂工作空间
昨晚调试一台六轴协作臂,客户报了个诡异的问题:末端明明按示教器上的坐标走,却在某个区域突然“抽风”,轨迹歪得离谱。我第一反应是电机丢步,查了一圈编码器全正常。最后把问题定位在逆解上——那个位姿在奇异点附近,关节速度直接爆表。这事让我决定把这篇文章写出来,正逆运动学看着是入门课,但真正在工程里踩过的坑,远比课本上那几张DH参数表要深。
从一根连杆说起:DH参数不是背出来的
很多同学一上来就背Modified DH和Standard DH的区别,背完就忘。我建议你换个思路:DH参数的本质是描述两个相邻关节坐标系之间的变换关系,四个参数——连杆长度a、连杆转角α、关节距离d、关节角θ——每一个都有明确的物理意义。a是沿x轴从z_i移到z_{i+1}的距离,α是绕x轴从z_i转到z_{i+1}的角度,d是沿z轴从x_{i-1}移到x_i的距离,θ是绕z轴从x_{i-1}转到x_i的角度。
写代码的时候,我习惯把DH表直接定义成numpy数组,每一行对应一个关节。这里踩过坑:标准DH和修正DH的坐标系定义不同,如果你混用,前三个关节可能没事,到第四个关节开始偏移就出来了。我建议你选定一种,全项目统一,别今天用标准明天用修正。
importnumpyasnp# DH参数表:[a, alpha, d