机器人模型的建立

1、Link()

link对象保存于机器人关节和连接有关的所有信息(如运动学参数、刚体惯性参数等)

L = Link([theat , d , a , alpha,sigma] , options)

  • 属性

L.type: 获取连杆关节类型 L.theta : 获取连杆关节角 L.d : 获取连杆偏距

L.a :获取连杆长度 L.alpha:获取连杆扭转角

L.mdh : 默认为0(标准D-H); 1表示其他

  • sigma : 默认0(转动关节,可省略),1(移动关节)

2、SerialLink()

描述串行链接手臂型机器人,将所创建的Link整合在一起。

Robot = SerialLink ([L1,L2...] , options)

根据下图PUMA 560 操作臂运动参数和坐标系数分布建立相应的机器人模型。

连杆参数
%创建六个连杆,运用改进型D-H模型参数
L1 = Link([0 ,   0 ,   0 ,   0   ], 'modified');
L2 = Link([0,    0 ,   0,   -pi/2], 'modified');
L3 = Link([0,    0.3, 1.5,    0  ], 'modified');
L4 = Link([0,    1,   0.5,  -pi/2], 'modified');
L5 = Link([0,    0 ,   0,   pi/2 ], 'modified');
L6 = Link([0,    0 ,   0,   -pi/2], 'modified');
Robot = SerialLink([L1, L2, L3, L4, L5, L6]); %创建了一个6自由度机器人

  • 操作属性

links :连杆向量信息 offset:关节偏移量 gravity :重力加速度 name: 机器人名字

base:基坐标系 tool:与基坐标系的变换矩阵 qlim:关节极限位置 n:关节数

config:关节配置(如’RRRRRR’)

links = Robot.links       %关节向量
n = Robot.n               %关节名称
config = Robot.config     %配置信息

  • Robot.plot(theta)

根据输入的关节参数变量画出对应的机器人图形。

  Robot.plot ([pi/2,0,0,0,0,0])   %画出关节变量1旋转90°后的图形
  • Robot.display( )

把建立机器人模型的一些相关信息展示出来。

  • Robot.teach

画出机器人模型,并在图窗左侧出现一些可控元件。

(x , y , z )表示末端执行器想对于及基坐标的位置

q1~q6: 分表表示个关节变量的数值。在上图中表示六自由度中的各个旋转变量。可通过拖动滑块控件来调节机器人的位姿(也可以在滑块控件后的方框内输入所需的数值等),同时,在右图机器人模型中会根据数值的改变而进行相应的转动(或平移)。

至此,一个简单机器人模型就建立完成了。

3、运动学

  • Robot.fkine() %正运动学函数

该函数为正向运动学求解,输入为各关节变量参数(如上面6自由度机器人各关节角度),输出为末端的姿态矩阵(4x4)。例如求解上面Robot.polt()所画机器的末端姿态。

T = Robot.fkine([pi/2,0, 0 , 0 0 0])  %求解特定角度下末端相对于基坐标的姿态
  • Robot.ikine6s( ) & Robot.ikine( ) %逆运动学函数

这两个函数都是用来求解机器人逆运动学,前者是逆运动学的封闭解(几何解和代数解),后者是逆运动学的数值解。通过输入末端的姿态矩阵可以得到该姿态的一组解(注:对于有多个解的态,解不唯一。同时,ikine6s只能对标准D-H模型求解,对改进性D-H模型会报错)

Th = Robit.ikine(T)        %求出末端姿态矩阵的逆运动学解
T1 = Robot.fkine(Th)       %验证求出的解是否正确