一个计算网站: +www.vcalc.com
1.总 述
位姿或者坐标系有许多种表示方法,本文主要介绍 UR 机器人的位姿表示方法,希望能够回
答以下一些常见的问题:
1、什么是位姿以及它有哪些常见表示方法;
2、ELITE 机器人使用的位姿表示方法以及它的特点;
3、ELITE机器人脚本相关的位姿表示方法转换
2.位姿表示
2.1 位姿的定义
位姿,顾名思义,包含位置和姿态;对应 ELITE机器人中数据类型 Pose(p[x,y,z,Rx,Ry,Rz]),
在三维空间中任意一个三维物体的自由度是 6,即 X、Y、Z 三个位置和绕 X、Y、Z 轴的旋转。
为了表示一个三维物体在三维空间的确定位姿,在三维物体上定义了一个与物体刚性连接的坐
标系,位置就是坐标系原点的位置,而 X,Y,Z 轴在空间的分布就是不同的姿态表示方法来表
达。位置的表示很直观,因此后面针对姿态的表示做更多的介绍。
2.2 常见的姿态表示方法
姿态的表示方法有很多种,常见的有 X-Y-Z 固定角坐标系,Z-Y-X 欧拉角,RPY 角,四元数和旋转矢量等。
⚫ X-Y-Z 固定角坐标系,图 2:为了表示坐标系 B 在已知参考系 A 中的表示位姿,将一个坐标系先与 A 坐 标系重合,然后按照参考系 A 的 X,Y,Z 轴依次旋转这个坐标系使其与 B 坐标系重合,用这个 X,Y,Z 轴的旋转角度来表示。
⚫ Z-Y-X 欧拉角,图 3:为了表示坐标系 B 在已知参考系 A 中的表示位姿,将一个坐标系先于 A 坐标系重合,然后按照这个坐标系最新的 Z,Y,X 轴依次旋转这个坐标系从而与 B 坐标系重合,用 Z,Y,X 轴的旋转角度来表示。
⚫ RPY(Roll-Pitch-Yaw)角,图 4:RPY 主要在航空航天以及航海中用得比较多,前进方向定义为本地坐标系 X 轴,向上定义位 Z 轴,根据右手法则,Y 轴朝向左侧。绕着 X 轴的旋转叫做翻滚 Roll, Y 轴旋转角俯仰角 Pitch, Z 轴旋转角偏航角 Yaw。RPY 相对的坐标系也是固定的参考系,如图 4 中的世界坐标系,因此可以看到 RPY 定义跟 X-Y-Z 固定角坐标是一样的,只是因为历史习惯而采用不同的叫法。UR 机器人中的 RPY 表示方法就是这种
⚫ 四元数和旋转矢量:四元数和旋转矢量的表示方法实际上属于一类表示法——等效轴角坐标系表示法。前三种表示方法都是采用按照一定的顺序旋转三个坐标轴,而等效轴角坐标系则是通过在空间定义一个轴,B坐标系可以通过使 A 参考坐标系绕着这根轴旋转一定的角度达到 B 坐标系位置来表示。
旋转轴(单位矢量):(𝐾x ,𝐾y ,𝐾z ) 旋转角度: θ
图 5 等效轴角坐标系表示法
四元数:(𝜀1 ,𝜀2 ,𝜀3 ,𝜀4 ) , 与图 5 中的(𝐾x ,𝐾y ,𝐾z ) 的关系是𝜀1 = 𝐾x sin( 𝜃/2 ),𝜀2=𝐾y sin( 𝜃/2 ),
𝜀3=𝐾z sin(𝜃/2),𝜀4= cos( 𝜃/2 )。注意前面几种表示方法都只有三个变量,而四元数为什么是四个数呢?原因是这四个数并不独立,𝜀12 + 𝜀22 + 𝜀32 + 𝜀42 = 1。对于四元数的使用需要注意的是(𝜀1 ,𝜀2 ,𝜀3 ,𝜀4 )的顺序,比如 ABB 机器人使用的四元数顺序为(𝜀4 ,𝜀1 ,𝜀2 ,𝜀3 )。
旋转矢量:(𝑅x ,𝑅y ,𝑅z) 与图 5 中的(𝐾x ,𝐾y ,𝐾z )的关系是,𝑅x = 𝐾x𝜃 , 𝑅y = 𝐾y 𝜃 ,𝑅z =𝐾z 𝜃,其中𝜃的单位是弧度。
当然还有许多其他的姿态表示方法,以上罗列出来的仅仅是机器人方面用得最多的几种,这里不再过多介绍。
2.3 不同姿态定义特点
对于本文中提及的几种姿态表示方法他们在不同的场合中被使用,例如 X-Y-Z 固定角(RPY),Z-Y-X 欧拉角比较容易为人所理解,而四元数和旋转矢量则更易在计算机中进行计算。关于他们之间的换算关系超出了本文的范围,读者有兴趣可自行参考机器人学方面的书籍,在下一章节中也会介绍使用 ELITE 机器人脚本如何实现不同表示方法的换算。
这里指列出几个结论:
1、对于同一个姿态来说,无论是使用 X-Y-Z 固定角/RPY 角,还是使用 Z-Y-X 欧拉角,数值都是相同的,也就是说不管你绕着 X,Y,Z 某一个轴转动,虽然顺序和参考轴不同,但是对应的数值是一样的。固定角/RPY 对应的 X,Y,Z 数值跟 Z-Y-X 欧拉角对应的 X,Y,Z 数值相同;
2、同一个姿态,用旋转矢量表示是不唯一的,有的读者可能注意到在使用 UR 机器人时,示教器上 TCP 的旋转矢量跟通过 Socket 端口读到的数值不相同,就是这个不唯一性造成。虽然旋转矢量可能不同,但是表示的机器人 TCP 姿态是一样的。其不唯一性的原因可以结合旋转矢量的定义来: 如果一个坐标系 B 可以通过 A 参考坐标系绕一个单位矢量轴(𝐾x ,𝐾y ,𝐾z ),𝜃弧度得到,那么这个坐标系也可以通过这个单位矢量轴旋转(𝜃 − 2π)弧度得到,那么旋转矢量(𝐾x𝜃,𝐾y𝜃,𝐾z𝜃)和(𝐾x (𝜃 − 2π),𝐾y (𝜃 − 2π),𝐾z (𝜃 − 2π))
3. 位姿变换脚本
ELITE 机器人的编程方式有两种:JBI指令集和 LUA脚本;JBI指令集直观、简便,效率高,LUA脚本脚本则提供高级的机器人接口指令、更具灵活性。位姿的变换则通过脚本来实现。位姿在 ELITE 机器人中定义了一种数据类型 pose,其格式为 [x,y,z,Rx,Ry,Rz],其中 x,y,z 表示位置,Rx,Ry,Rz 表示欧拉角。相关的脚本包括:
1. pose_inv( var1) ,将位姿求逆。B 坐标系在 A 坐标系下的位姿为 pose1,那么pose_inv(pose1)返回的就是 A 坐标系在 B 坐标系下的位姿。
2. pose_mul( var1, var2),B 坐标系在 A 坐标下的位姿为 pose1, C 坐标系在 B 坐标系下的位姿为 pose2,那么 C 坐标系在 A 坐标系的位姿为 pose_mul(pose1,pose2)。