龙空技术网

全面浅析机器人坐标系用法和算法原理——最详细的解析

自动化机器人砖家 10974

前言:

现时姐妹们对“6轴机器人姿态向量理解”可能比较注意,你们都需要学习一些“6轴机器人姿态向量理解”的相关内容。那么小编也在网上汇集了一些关于“6轴机器人姿态向量理解””的相关资讯,希望小伙伴们能喜欢,兄弟们快快来了解一下吧!

有个朋友让我讲下坐标系,我说网上资料都开花了,你查一下!朋友说,网上的资料要么是最简单的应用,只知其表,不知其实;要么就是上来就矩阵算法,看不明白!我下面就以我的理解角度粗略分析下机器人的坐标系及原理算法!这篇文章告诉大家的是原理,没有计算公式的部分!大家理解了原理对真正了解机器人坐标系还是很有好处的!

机器人坐标系

基坐标系

机器人都有一个不会变的坐标系,叫基坐标系或世界坐标系(每家叫法不同,原理一样)。

基坐标系是怎么来的呢?

拿6轴机器人举例:

第一轴的旋转轴

一般都会定义机器人第一轴的旋转轴为基坐标系Z轴,旋转中心即是坐标系原点,X和Y的方向是的电机零点确定,所以只要你不更换电机的零点和机械结构,单个机器人里这个基坐标系是永远不会变的!

机器人外部轴

有一种情况会重新设定新(基)坐标系,新坐标系为世界坐标系(每家不同的叫法,你可以认为就是一个基坐标系),那就是机器人加外部行走轴,或外部旋转轴,用行走轴举例,这种情况会把基坐标设在行走轴的零点位置,如果有多个行走轴,那就把基坐标设定到最底层那根轴的零点处,所以机器人配置外部轴的原理就是测量一些机械参数,把机器人1轴上的基坐标系变换到外部行走轴上,这种变换也叫D-H变换,下面讲工具坐标系时候详细说明。

用户坐标系

上面内容确定了一个(基)坐标系,就可以通过齐次变换推算出工具坐标系和用户坐标系了!

用户坐标系

先说用户坐标系,用户坐标系的本质是把(基)坐标系旋转偏移到工件上,是为了方便编程,让机器人的移动方向和工件表面的方向一致!例如,有个倾斜45度的工件表面,如果你用基坐标系,机器人就是沿着基座系方向行走,横平竖直的,很难沿着45度的表面行走,对编程来说难操作。所以就通过齐次变换偏移旋转(基)坐标系,得到新的用户坐标系!

其次变换旋转算法

齐次变换平移加旋转算法

齐次变换后得到新的用户坐标系

工具坐标系

工具坐标系又叫TCP,机器人的精度和这个关系很大。它是在机器人末端执行器,也就是抓手或焊枪上的。这个坐标系是相对于六轴不动,但是实际机器人六轴会不停动作,这个坐标系也就跟随6轴实时变换!

工具坐标系

我们常说的机器人在什么位置,坐标数据是多少?实际就是工具坐标系(TCP)原点在基坐标系或者用户坐标系下的X、Y、Z、A、B、C的数值,X、Y、Z就是坐标系的三个坐标轴,A、B、C是以工具坐标系原点(TCP)为旋转中心,绕坐标系X,绕Y,绕Z旋转的角度数据(有的机器人,比如KUKA旋转是A、B、C对应绕Z,绕Y,绕X;标准欧拉角也是ZYX这样旋转的。),这里注意这个旋转中心,机器人都用欧拉角,它的旋转中心是TCP,不是绕着基坐标或者用户坐标的轴旋转,这里说的绕X旋转,其实是把坐标系平移到TCP位置,再绕坐标系X旋转!懂向量的就很容易理解为什么这样了,因为转换计算都是单位向量矩阵的形式!

怎么得到TCP的呢?其实也和不会变的基坐标有很大关系,确定了基坐标,基坐标的Z轴可以想象成一轴电机的旋转轴,一轴电机的零点就可以确定X和Y方向,这样就把一轴的关节坐标数据转换成笛卡尔XYZ坐标系的形式!同样的道理,二轴的电机相对于一轴机械位置和零点也是固定的,通过机械参数就可以把二轴的关节也转换成坐标系形式,三轴相对于二轴,四轴相对于三轴,五轴相对于四轴,六轴相对于五轴,都是有相对位置和零点固定不变的情况,这个就是6轴串联机器人,这样一轴一轴转换到六轴,六轴再转换到工具(焊枪或抓手)上,得出的坐标系就是相对于六轴固定不变的工具坐标系也就是TCP,如下图。

TCP计算图示

关节坐标系

关节坐标系

这个坐标系 很简单,就是六个电机的旋转角度!在关节坐标下,我们通过改变六个电机的数据,单独动作每个关节!实际它的最大用处是逆运算,也就是我们用用户坐标系或者基坐标系加TCP运动机器人的时候,机器人内部要把坐标系的数据,反推成六个关节电机的数据,这个非常复杂,而且解还不是唯一的(我上一篇里讲的机器人姿态参数),这里就不细说了,以后有空单独讲!

所以说,机器人最重要的坐标系其实就是(基)坐标系。

机器人还有一些坐标系相关的延伸应用

例如,外部TCP,连续轨迹,圆滑过渡这些!

我讲个外部TCP的程序原理,其它的应用多数是标准应用,不需要更改啥,但是外部TCP用的比较多,有的需要在标准外部TCP的程序基础上做些改进,以满足现场需求!

外部TCP

啥是外部TCP呢?我们前面所说的TCP(工具坐标系),可以理解成机器人的旋转中心,你拿着焊枪的时候,把TCP定义在枪尖,机器人旋转就会绕着枪尖转,机器人角度动作而枪尖位置不动,这样对于焊接需要拐弯的时候特别有用,焊枪拐弯了,但是焊丝还在焊接位置,不会跑偏!

外部TCP正好是和TCP相反的操作,如果焊枪没有装在机器人上,机器人是拿着工件去焊接的,那你把机器人的旋转中心定义在哪里好呢,定义在哪里都不行,如果定义了机器人只能绕着定义那个TCP位置旋转,但是焊接轨迹是移动的,移动到其它位置你再旋转,机器人固定的焊枪就不在焊接轨迹上了,严重的会碰撞!

外部TCP的算法原理是这样的:

比如我知道第一个焊接点位,根据点位的坐标齐次变换算出一个TCP,TCP和这个焊接点位重合。

焊接移动过程中的下一个点位坐标换算出新的TCP,和当前点位重合。这样每个点位自动生成一个TCP,比如焊接100mm长的焊缝,机器人内部算法把这100mm,分割成10000份,每份都有个TCP,这样就实现了TCP的动态赋值,也就是外部TCP的原理了!

总结一下:

基座标是固定不动的,可以换算出用户坐标和工具坐标;其它的外部TCP属于扩展应用,离不开前面三种坐标系!

感觉有用的朋友,关注我,我会持续给大家分享使用的技术文章!谢谢支持!

标签: #6轴机器人姿态向量理解