3. 连杆坐标系建立规则:Z轴、X轴、Y轴的确定方法
好,咱们进入正题。连杆坐标系怎么建?很多教材一上来就甩给你一堆变换矩阵,说实话,我当年学的时候也懵过。后来在项目里摔了几次跟头,才真正搞明白——坐标系建立的核心,就是给每个关节“安个家”。
这个家怎么安?有套路。我习惯把它拆成三步:先定Z轴,再定X轴,最后Y轴自动补齐。咱们一个一个说。
3.1 第一步:Z轴——关节的“旋转灵魂”
Z轴是老大。为什么?因为Z轴代表关节的运动方向。
- 旋转关节:Z轴沿着旋转轴线方向。右手定则,大拇指指向Z正方向,四指弯曲就是关节正转方向。
- 移动关节:Z轴沿着直线运动方向。正方向就是关节伸长的方向。
核心原则:每个关节的Z轴,必须与关节的运动轴线重合。这是铁律,不能改。
我在项目里遇到过一个问题:有个六轴机器人,第五关节的Z轴方向标反了。结果逆解算出来,末端姿态总是差180度。查了两天才发现,原来是Z轴正方向定义跟实际电机旋转方向反了。嗯,从那以后,我每次建坐标系都会先手动转一下关节,确认Z轴方向对不对。
小技巧:如果你不确定Z轴正方向,可以这样想——关节正转时,按照右手定则,大拇指指向的方向就是Z正方向。实在不行,拿个螺丝刀比划一下。
3.2 第二步:X轴——连接相邻关节的“桥梁”
Z轴定好了,接下来定X轴。X轴的作用,说白了就是连接当前关节和下一个关节。
规则是这样的:
- 如果相邻两个Z轴不平行也不相交:X轴沿着两个Z轴的公垂线方向,从当前Z轴指向下一个Z轴。
- 如果相邻两个Z轴平行:X轴沿着公垂线方向,但可以选在任意位置。我习惯选在能让连杆参数最整齐的位置。
- 如果相邻两个Z轴相交:X轴垂直于两个Z轴所在的平面,方向由两个Z轴的叉积决定。
注意:X轴的正方向必须指向下一个关节。这个方向决定了连杆偏距ai的正负。方向搞反了,后面所有参数都得跟着变号。
你想想看,如果X轴方向搞反了,会怎么样?我记得有一次帮同事调试协作机器人,他建的模型里a2是负值,但实际机械臂的连杆长度明明是正的。查了半天,就是X轴方向指反了。改过来之后,所有参数都对了。
3.3 第三步:Y轴——右手定则自动补齐
Z轴和X轴都定了,Y轴就不用费脑子了。直接用右手定则:
Y = Z × X
注意,这里是叉积,顺序不能错。先Z后X,得到的就是Y轴正方向。
为什么Y轴不用单独定?因为机器人学里,所有坐标系都是右手系。你定了两个轴,第三个轴就自动确定了。我刚开始学的时候,总想给Y轴也找个“物理意义”,后来发现没必要。Y轴就是用来凑齐右手系的,它的方向由数学保证。
一句话总结:Z轴管运动,X轴管连接,Y轴管凑齐。三步走,坐标系就建好了。
3.4 完整流程:从基座到末端
好,咱们把整个流程串一遍。假设你有一个n自由度的机器人:
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 确定基座坐标系{0} | Z0沿关节1轴线,X0任意选,Y0补齐 |
| 2 | 对关节i=1到n-1 | Zi沿关节i+1轴线 |
| 3 | 确定Xi | 沿Zi到Zi+1的公垂线,指向Zi+1 |
| 4 | 计算Yi | Yi = Zi × Xi |
| 5 | 确定末端坐标系{n} | Zn沿最后一个关节轴线,Xn任意选 |
这个流程,我建议你每次建坐标系都走一遍。别跳步,别凭感觉。我见过太多人,建到第三个关节就开始“我觉得这样也行”,结果后面全乱套。
3.5 常见坑点与避坑指南
做这行久了,有些坑是绕不开的。我列几个最常见的:
- Z轴方向不一致:同一个关节,不同人建坐标系,Z轴正方向可能相反。这会导致DH参数里的θi差180度。解决办法:统一约定关节正转方向,Z轴正方向跟着走。
- X轴方向指反:公垂线方向搞反,ai变负值。解决办法:画图时把两个Z轴画出来,公垂线从当前Z轴指向下一个Z轴,方向就对了。
- 平行关节的X轴选择:两个Z轴平行时,公垂线不唯一。我习惯选在能让ai和di最整齐的位置。比如,让X轴通过下一个关节的原点。
- 相交关节的X轴:两个Z轴相交时,公垂线退化为一个点。这时候X轴垂直于两个Z轴所在的平面。方向由Zi × Zi+1决定。
曾经我踩过的坑:有一次建SCARA机器人的坐标系,第四关节是移动关节,Z轴方向我沿用了旋转关节的规则,结果移动方向反了。后来才意识到,移动关节的Z轴正方向应该指向伸长方向,而不是按右手定则。这个细节,教材上很少提。
3.6 知识结构图
下面这张图,把整个坐标系建立的逻辑串起来了。你可以把它当成一个检查清单,每次建坐标系时对照着走一遍。
3.7 实战检查清单
每次建完坐标系,我建议你对照这个清单检查一遍:
- ✅ 每个关节的Z轴是否与运动轴线重合?
- ✅ Z轴正方向是否与关节正转方向一致?
- ✅ X轴是否沿着公垂线指向下一个关节?
- ✅ 所有坐标系是否都是右手系?(Y = Z × X)
- ✅ 基座坐标系{0}是否固定不动?
- ✅ 末端坐标系{n}是否与最后一个关节固连?
这六条,每条都对应着我踩过的坑。你如果能全部做到,坐标系建立这块就算过关了。
我的习惯:建完坐标系后,我会手动算一遍相邻坐标系之间的变换矩阵,然后用仿真软件验证一下。如果末端位姿跟实际对不上,八成是坐标系建错了。这时候别慌,回到第一步,重新定Z轴。