(二)正向运动学

定义

   正向运动学:描述的是由机器人的关节空间到笛卡尔空间的映射。
   
   通俗的说就是知道机器人n个关节角度得到机器人末端执行器的三维姿态信息与三维位置坐标,
   以后简称六维位姿(6D位姿)。
   为什么需要姿态信息呢,因为在抓取,采摘等复杂认为在,以何种姿态完成任务影响任务成败。

两种形式

DH参数

DH参数是一种应用非常广泛的正运动建模方式。
优点是:可以用较少的参数描述正运动学。
缺点是:对每个轴都需要建立坐标系。非常麻烦。
下面以franka机器人为例
结构如下
在这里插入图片描述

需要先建立DH参数表如下
在这里插入图片描述

再通过如下公式建立其次矩阵:

在这里插入图片描述
最后
T = T 1 ∗ T 2 . . . . . . . ∗ T n T=T_1*T_2.......*T_n T=T1T2.......Tn
得到正运动学的映射,可以看出有点麻烦,但是在动力学建模时,DH参数非常重要,运动学没必要使用这样麻烦的建模。使用PoE更加方便。

PoE

PoE的建模过程非常简单,只需要定义两个坐标系即可。即基座标系和末端坐标系。下面只介绍具体操作,不涉及理论(理论见《现代机器人学》P86)。
还是以Franka机器人为例
在这里插入图片描述

首先,构建初始位形

M=[[1,0,0,d2],
   [0,-1,0,0],
   [0,0,-1,L1+L2+L3-L4],
   [0,0,0,1]]

这里实际上只需要 x 0 y 0 z 0 x_0y_0z_0 x0y0z0 x f y f z f x_fy_fz_f xfyfzf两个坐标系和每个转轴的转动方向即可。
以1号轴为例
w 1 = ( 0 , 0 , 1 ) , q 1 = ( 0 , 0 , L 1 ) w_1=(0,0,1),q_1=(0,0,L_1) w1=(0,0,1),q1=(0,0,L1),其中 q q q是转轴上的任一一点,再通过 v 1 = w 1 × q 1 v_1=w_1\times q_1 v1=w1×q1 计算 v v v.
需要注意的是:可以取转轴上面的任一点,因为转轴上的量叉乘之后会是0,不影响 v v v.
如第4轴,转轴方向是y方向,则 q 4 q_4 q4在y轴上面取值可以随意,叉乘出来并不影响,但是 x x x z z z方向不能随意取值

wq
(0,0,1)(0,0, L 1 L_1 L1)
(0,1,0)(0,0, L 1 L_1 L1)
(0,0,1)(0,0, L 1 + L 2 L_1+L_2 L1+L2)
(0,-1,0)( d 1 d_1 d1,0, L 1 + L 2 L_1+L_2 L1+L2)
(0,0,1)(0,0, L 1 + L 2 + L 3 L_1+L_2+L_3 L1+L2+L3)
(0,-1,0)(0,0, L 1 + L 2 + L 3 L_1+L_2+L_3 L1+L2+L3)
(0,0,-1)( d 2 d_2 d2,0, L 1 + L 2 + L 3 L_1+L_2+L_3 L1+L2+L3)

再通过 v 1 = w 1 × q 1 v_1=w_1\times q_1 v1=w1×q1 计算 v v v. S l i s t = ( w , v ) Slist=(w,v) Slist=(w,v)即组成了关节旋量。

Slist=np.array([[0,0,1,-0.,-0.,-0.],
                [0,1,0,-0.333,-0.,-0.],
                [0,0,1,-0.,-0.,-0.],
                [0,-1,0,0.649,-0.,-0.082],
                [0,0,1,-0.,-0.,-0.],
                [0, -1, 0, 1.033, -0., -0.],
                [0,0,-1,-0.,0.088,-0.]]);

至此建模完成,最后通过

T_end=mr.FKinSpace(M, Slist.T, thetalist)

计算出对应角度 t h e t a l i s t thetalist thetalist下的位姿 T e n d T_{end} Tend。这个函数是《现代机器人学》一书中对应的代码库可以通过下面链接下载
代码库

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐