《Modern Robotics》阅读笔记6——前向运动学
前向运动学(Forward Kinematics)是《Modern Robotics》一书的第三章,这章主要介绍的内容就是如何基于旋量理论使用PoE(Product of Exponentials)形式求解机器人的前向运动学。有了之前对于旋量理论的了解,这一章的内容非常简单。
前向运动学:描述的是从关节角(关节平移)到机器人末端位姿的映射关系。也就是从部分运动映射到整体运动的关系。
接下来,就以两个例子来介绍前向运动学的求解过程。第一个例子,旋量是表示在固定系{s}下的。第二个例子,旋量表示在末端坐标系{b}下。
例1:旋量轴表达在固定系下

这是一个具有3个旋转关节的在平面范围内运动的机械臂。图中,我们定义了坐标系{0},{1},{2},{3},{4}。其中,x轴沿着连杆方向,y轴与连杆方向垂直,z轴与转轴方向共线。
求解该机械臂的前向运动学,也就是求解每个关节角度[θ1,θ2,θ3]与末端坐标系{4}的关系。
D-H方法
对于这个问题,首先,我们可以用经典的D-H方法做个示范。
T04=T01T12T23T34
其中:
T01=⎣⎢⎢⎡cosθ1sinθ100−sinθ1cosθ10000100001⎦⎥⎥⎤,T12=⎣⎢⎢⎡cosθ2sinθ200−sinθ2cosθ2000010L1001⎦⎥⎥⎤
T23=⎣⎢⎢⎡cosθ3sinθ300−sinθ3cosθ3000010L2001⎦⎥⎥⎤,T34=⎣⎢⎢⎡100001000010L3001⎦⎥⎥⎤
可以看到,T04是一个与[θ1,θ2,θ3]有关的函数。
基于旋量理论的PoE方法
基于旋量的PoE方法,最大的特点就是无需对于每一根连杆建立复杂的坐标系,只需要建立固定坐标系和末端坐标系就可以对运动进行表示了。下面对这个方法进行介绍:
第一步,我们需要定义机械臂的初始位置,这里将[θ1,θ2,θ3]全为0,作为机械臂的初始姿态,也就相当于将图中的机械臂完全放平。
第二步,我们定义末端坐标系和固定坐标系,并且计算初始姿态下末端坐标系相对于固定坐标系的位姿M。这里末端坐标系就是{4}系,固定坐标系就是{1}系。初始姿态下,有:
M=⎣⎢⎢⎡100001000010L1+L2+L3001⎦⎥⎥⎤
第三步,计算旋量轴。需要注意,这里计算的旋量轴是表示在{1}系固定系下的。因此,我们从3号关节开始。假设θ1和θ2都等于0,对应于3号关节,其旋量轴的表示为:
S3=[ω3v3]=⎣⎢⎢⎢⎢⎢⎢⎡0010−(L1+L2)0⎦⎥⎥⎥⎥⎥⎥⎤
这是怎么来的呢?
前文说到,旋量轴的六个量中,前三个量定义了旋转轴矢量的方向,而后三个量和前三个量则共同定义了旋转轴的位置。另外,旋量轴也可以理解为,固定系的原点在当前的刚体运动下的角速度和线速度。(这里主要说的是旋转关节,移动关节会有一些不同)
对于3号关节,旋转轴的方向显然指向z轴,另外我们定义角速度的模为1 rad/s,结合二者,所以ω3=[0,0,1]T。对于固定系{1}的原点而言,当机械臂末端绕3号关节以ω3=[0,0,1]T的角速度运动时,该点产生的线速度为v3=[0,−(L1+L2),0]T。由此,就得到了旋量轴的表示。
于是,根据前文中介绍的刚体运动知识,我们知道当θ1=0和θ2=0时,有:
T04=e[S3]θ3M( for θ1=θ2=0)
值得注意,这里指数表达式乘在了M的左边。(左乘是因为旋量轴表达在固定系{1}系下!)
其中:
[S3]=[[ω]0v0]=⎣⎢⎢⎡0100−100000000−(L1+L2)00⎦⎥⎥⎤
以此类推,我们计算2号关节和1号关节的旋量轴,如下:
S2=[ω2v2]=⎣⎢⎢⎢⎢⎢⎢⎡0010−L10⎦⎥⎥⎥⎥⎥⎥⎤,S1=[ω1v1]=⎣⎢⎢⎢⎢⎢⎢⎡001000⎦⎥⎥⎥⎥⎥⎥⎤
有:
T04=e[S1]θ1e[S2]θ2e[S3]θ3M
读者可以验证,PoE方法计算得到T04与D-H方法得到的完全一样。
值得注意的是,在这里我们是从3号关节一直算到1号关节,为什么要这么做呢?顺序倒过来可以吗?
答案是否定的,必须从3号关节算到1号关节。由于旋量轴是定义在固定系{1}系下的,假如我们首先旋转1号关节,那么2号关节和3号关节的也会运动,这样2号关节和3号关节的旋量轴的表达就与1号关节的角度有关了,这是旋量轴就不好求了,需要建立坐标系,这样也就违背了我们使用旋量计算运动学的初衷。
而当我们先计算3号关节,然后是2号,最后是1号,这样就不会有这种麻烦。因为旋转3号关节,2号和1号相对于固定系都没有任何运动,旋量轴非常直观。
例2:旋量轴表达在末端系下
还是上文中的同一个例子,现在我们把旋量轴表达在末端系下。
依然是定义初始位置,以及末端系在固定系下的表达M:
M=⎣⎢⎢⎡100001000010L1+L2+L3001⎦⎥⎥⎤
把旋量轴表达在末端系下,那么我们的计算顺序需要改变成:首先1号关节,其次2号关节,最后3号关节。
B1=[ω1v1]=⎣⎢⎢⎢⎢⎢⎢⎡0010L1+L2+L30⎦⎥⎥⎥⎥⎥⎥⎤,B2=[ω2v2]=⎣⎢⎢⎢⎢⎢⎢⎡0010L2+L30⎦⎥⎥⎥⎥⎥⎥⎤,B3=[ω3v3]=⎣⎢⎢⎢⎢⎢⎢⎡0010L30⎦⎥⎥⎥⎥⎥⎥⎤
最终有:
T04=Me[B1]θ1e[B2]θ2e[B3]θ3
过程都与例1类似,只不过左乘换做了右乘,这也是由于旋量轴表达在末端系下的原因。
总结
前向运动学这一章内容,总体来说比较简单。大家需要掌握的就是如何计算旋量轴,然后需要特别注意旋量轴表达在哪一个坐标系下。这就足够了。