位姿求逆指令POSEINV和位姿相乘指令POSEMUL是比较有代表性的进阶指令。这两条指令的原理很复杂,对机器人运动学和数列的说明让很多非该专业的用户都表示头疼。但实际上要用好这两个指令并不需要理解他们背后的原理,正如使用螺丝刀的人也不需要理解螺丝刀背后的力学知识。
POSEINV和POSEMUL这两条指令的功能说白了就是理清各个物体之间相对位姿关系用的(位姿包括位置与旋转姿态,也就是X,Y,Z,Rx,Ry,Rz)。通过画箭头的方式,可以让物体之间的关系更明了,也可以直观的理解POSEINV和POSEMUL对位姿关系有什么影响。
通过箭头关系理解位姿求逆POSEINV:
假设上图中,机器人右侧的物体坐标为O点。并把机器人的原点坐标设为R点。
上图箭头指出O点的位姿是以R点的坐标系为基准表示的。为了更便于理解,读者可以当成R和O是主从关系,R点是主,O点是从。以R基准的O点可以写作位姿Or。
如果对位姿Or使用位姿求逆,箭头关系就会如上图翻转,获得一个R点与O点的主从关系颠倒的位姿,也就是O点成了主,R点成了从,这个新的位姿可以写作Ro。
在艾利特JBI编程中,如果V000原本是Or的位姿数值,那POSEINV V000将会把V000的数值从位姿Or变为位姿Ro。
简单粗暴地理解:位姿求逆是用来翻转箭头的。
用箭头法来分析位姿相乘POSEMUL:
上图中有机器人R,物体A和物体B。Ar是物体A相对于机器人R的位姿关系,Ba是物体B相对于物体A的位姿关系。
如果位姿相乘Ar和Ba,即Ar*Ba,则会如上图获得位姿Br。
简单粗暴地理解:位姿相乘是用来将箭头首尾相连的。
在艾利特JBI编程中,如果V000是Ar的位姿数值,V001是Ba位姿数值,那POSEMUL V000 V001将会把Br的位姿数值保存到V000中。
注意使用POSEMUL时两个位姿的摆放顺序,哪一个箭头排前就放在算式的前一位。
实用举例:
在实际运用中,通常要连续使用POSEINV和POSEMUL将复杂的位姿关系理清楚。
上图是某视觉应用的例子:R为机器人,B为标定板,O为需要机器人抓取的物体基准位置,C为固定在物体抓取点上方的智能照相机。
Br是机器人通常需要先通过某种标定法获取的标定板位姿。
Bc是照相机通过标定点获取的标定板位姿。
通常完成以上两个标定板位姿的获取后,标定板就可以拆除了。
Oc是进入示教阶段后,照相机通过拍照获得的物体基准位姿。
先通过POSEINV指令将Bc翻转为Cb。获得照相机相对于标定板的位姿。
再通过POSEMUL Cb*Oc,获得Ob,也就是物体相对于标定板的位姿。
最后再POSEMUL Br*Ob,获得Or,也就是物体相对于机器人的位姿。
通常这个位姿将作为抓取位置的示教基准。程序实际运行时,每轮搬运产的物体的位姿偏差将会由照相机计算,即位姿Oc’。而这个偏差值也将会通过一连串的位姿关系转换让机器人获得物体位姿相对于机器人的偏差,即Or’。通过对比Or’与Or,机器人更新当前物体所需要的抓取位置,完成搬运任务。
总结:
画好初始关系图,用位姿求逆与位姿相乘理清关系,使用重点就三句话。
位姿求逆翻转箭头。
位姿相乘连接箭头。
使用POSEMUL时,谁箭头排前,谁就在算式中排前。