目录
一、offset
绕Z1轴旋转的旋转角度是90+θ2,而不是θ2。这是因为当θ2是0度的时候,x1和x2之间还有一个90度的offset需要考虑。在确定机器人的零点的时候这是个需要考虑的重要因素。
1.0.0第三个关节没有offset的零点位置
%1.没有offset
%2.创建一个具有n个自由度的机械臂 sdh
L(1)=Link('revolute', 'd',0, 'a', 1, 'alpha', 0);
L(2)=Link('revolute', 'd', 0, 'a', 0.8, 'alpha', 0);
L(3)=Link('revolute', 'd', 0, 'a', 1, 'alpha', 0);
%3.通过构造函数给创建的机械臂对象命名,并显示出对象的信息
three_link=SerialLink(L,'name','three link')
%机器人正运动学
%1.数组中的参数是每一个关节的角度
% 获得的是坐标系N相对于坐标系0 的变换矩阵
three_link.fkine([0 0 0]);%获得的是T30变换矩阵
%2.将创建的机械臂可视化 数组中的参数是每一个关节的角度three_link.plot([0 0 0])
1.0.1第三个关节转动pi/6
three_link.plot([0 0 pi/6])
1.1.0第三个关节有offset的零点位置
%1.offset的一点解释
%2.创建一个具有n个自由度的机械臂 sdh。第三个关节有offset
L(1)=Link('revolute', 'd',0, 'a', 1, 'alpha', 0);
L(2)=Link('revolute', 'd', 0, 'a', 0.8, 'alpha', 0);
L(3)=Link('revolute', 'd', 0, 'a', 1, 'alpha', 0,'offset',pi/6);
%3.通过构造函数给创建的机械臂对象命名,并显示出对象的信息
three_link=SerialLink(L,'name','three link')
%机器人正运动学
%1.数组中的参数是每一个关节的角度
% 获得的是坐标系N相对于坐标系0 的变换矩阵
three_link.fkine([0 0 0]);%获得的是T30变换矩阵
%2.将创建的机械臂可视化 数组中的参数是每一个关节的角度three_link.plot([0 0 0])
1.1.1 第三个关节转动pi/6
three_link.plot([0 0 pi/6])
和没有offset的1.0.1小节的图相比,有offset的机械臂看起来多转动了pi/6。
二、零点
在机械臂的的实际应用当中会有一个configuration规定为机械臂的零点。此时机械臂的每一个关节的角度规定为0度。理论上任何一个configuration都可以规定为机械臂的零点。

2.0什么是零点丢失?
现象是在机械臂本体的零刻度的时候示教器上各个轴的度数不是零 。
2.1是什么原因造成了零点的丢失?
(a)当未用控制器移动了机器人轴
(b)更换齿轮箱后
要更深入地理解这方面的知识还需要了解机器人上编码器的知识。常见的工业机械臂上使用的都是多圈的绝对值编码器。
单圈绝对值编码器原理:(码盘上的每一个位置都有唯一的编码)绝对值增量编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。
单圈绝对值编码器与多圈绝对值编码器 : 所谓单圈和多圈编码器都是指绝对式编码器,绝对式编码器可以在任何时刻,尤其是在刚上电的时刻,就能感知当前的绝对角位置。单圈的只可以感知一圈之内的绝对角位置;多圈的不仅可以感知一圈之内的绝对角位置,而且可以感知编码器自使用之日起已经转过了多少角度。绝对编码器由机械位置决定每个位置的唯一性(当然这个角度是编码器正转和翻转的累加和)[1]。
2.2零点丢失之后,机器人各轴到达零点附近位置,对模型的精度有影响吗?
对机械臂的绝对位置精度会造成影响,造成一定的误差。如果只是简单地使用示教器使机器人的各个轴回到零点附近没有进一步的进行零点校正。这样就会造成此时机械臂TCP的实际绝对位置和算法里计算出的的机器人TCP绝对位置就会有差别,这个差别就会造成误差。可以参考库卡机器人是如何进行机器人的零点校正的。
参考:
[1]https://blog.csdn.net/pinbodexiaozhu/article/details/43454955