【机器人学的数学基础】(1)李群、李代数和螺旋运动

刚体变换/3维空间中的旋转运动/3维空间中的刚体运动

这篇文章的内容来源于《A Mathematical Introduction to Robotic Manipulation》。

一、重要数学符号的含义

首先介绍若干符号及含义,一些同学可能已经知道旋转矩阵和齐次变换矩阵的形式,现在是将其一般化,即用 SO(3) <script type="math/tex" id="MathJax-Element-2172">SO\left( 3 \right)</script>和 SE(3) <script type="math/tex" id="MathJax-Element-2173">SE\left( 3 \right)</script>表示,另外一些符号是为了引出螺旋运动概念而做的铺垫。

  1. SO(3) <script type="math/tex" id="MathJax-Element-2174">SO\left( 3 \right)</script>:特殊正交矩阵群,可以表示为刚体的位形空间。即可表示刚体的位形,也可以实现同一点在不同坐标系中的变换, SO(3)={RR3×3:RRT=I,detR=+1} <script type="math/tex" id="MathJax-Element-2175">SO\left( 3 \right)=\left\{ R\in {{R}^{3\times 3}}:R{{R}^{T}}=I,\det R=+1 \right\}</script>。
  2. so(3) <script type="math/tex" id="MathJax-Element-2176">so\left( 3 \right)</script> :是反对称矩阵 w <script type="math/tex" id="MathJax-Element-2177">\overset{\wedge }{\mathop{w}}\,</script>,是 SO(3) <script type="math/tex" id="MathJax-Element-2178">SO\left( 3 \right)</script>的李代数。 w=0w3w2w30w1w2w10 <script type="math/tex" id="MathJax-Element-2179">\overset{\wedge }{\mathop{w}}=\left[ \begin{matrix} 0 & -{{w}_{3}} & {{w}_{2}} \\ {{w}_{3}} & 0 & -{{w}_{1}} \\ -{{w}_{2}} & {{w}_{1}} & 0 \\ \end{matrix} \right]</script>;
  3. SE(3) <script type="math/tex" id="MathJax-Element-2180">SE\left( 3 \right)</script> :特殊欧氏群,即可用于确定刚体的位形(configuration),又可用于一点由一个坐标到另一个坐标的坐标变换, SE(3)={(p,R):pR3,RSO(3)}=R3×SO(3) <script type="math/tex" id="MathJax-Element-2181">SE(3)=\left\{ (p,R):p\in {{R}^{3}},R\in SO(3) \right\}={{R}^{3}}\times SO(3)</script>;
  4. se(3) <script type="math/tex" id="MathJax-Element-2182">se\left( 3 \right)</script> : SE(3) <script type="math/tex" id="MathJax-Element-2183">SE\left( 3 \right)</script>的李代数,其中的元素叫做运动旋量(twisit), se(3)={(w,v)|wso(3),vR3} <script type="math/tex" id="MathJax-Element-2184">se\left( 3 \right)=\left\{ (\overset{\wedge }{\mathop{w}}\,,v)|\overset{\wedge }{\mathop{w}}\,\in so\left( 3 \right),v\in {{R}^{3}} \right\}</script>
  5. w <script type="math/tex" id="MathJax-Element-2185">w</script> :关节转动中心轴的向量表示形式;
  6. w<script type="math/tex" id="MathJax-Element-2186">\overset{\wedge }{\mathop{w}}\,</script> :关节转动中心轴的反对称矩阵表示形式,
    w=0w3w2w30w1w2w10
    <script type="math/tex; mode=display" id="MathJax-Element-2187">\overset{\wedge }{\mathop{w}}=\left[ \begin{matrix} 0 & -{{w}_{3}} & {{w}_{2}} \\ {{w}_{3}} & 0 & -{{w}_{1}} \\ -{{w}_{2}} & {{w}_{1}} & 0 \\ \end{matrix} \right]</script>;
  7. ξ <script type="math/tex" id="MathJax-Element-2188">\overset{\wedge }{\mathop{\xi }}\,</script> : se(3) <script type="math/tex" id="MathJax-Element-2189">se\left( 3 \right)</script> 的 4×4 <script type="math/tex" id="MathJax-Element-2190">4\times 4</script>矩阵形式:
    ξ=[w0v0]
    <script type="math/tex; mode=display" id="MathJax-Element-2191">\overset{\wedge }{\mathop{\xi }}= \begin{bmatrix} {\overset{\wedge }{w}} & v \\ 0 & 0 \end{bmatrix} </script>;
  8. ξ <script type="math/tex" id="MathJax-Element-2192">\xi </script> : ξ=(vw )R6 <script type="math/tex" id="MathJax-Element-2193">\xi =\left( \begin{matrix} v & w \ \end{matrix} \right)\in {{R}^{6}}</script>为 ξ <script type="math/tex" id="MathJax-Element-2194">\overset{\wedge }{\mathop{\xi }}</script>的运动旋量坐标(twist coordination)。
  9. eξθ <script type="math/tex" id="MathJax-Element-2195">{{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}</script>:这是引出螺旋运动的重要的定义,表示从 se(3) <script type="math/tex" id="MathJax-Element-2196">se\left( 3 \right)</script> 到 SE(3) <script type="math/tex" id="MathJax-Element-2197">SE\left( 3 \right)</script> 的指数变换,对于给定的 ξse(3) <script type="math/tex" id="MathJax-Element-2198">\xi \in se\left( 3 \right)</script> 和 θR <script type="math/tex" id="MathJax-Element-2199">\theta \in R</script> , ξθ <script type="math/tex" id="MathJax-Element-2200">\overset{\wedge }{\mathop{\xi }}\,\theta </script> 的指数为 SE(3) <script type="math/tex" id="MathJax-Element-2201">SE\left( 3 \right)</script> 的元素,即 eξθSE(3) <script type="math/tex" id="MathJax-Element-2202">{{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}\in SE\left( 3 \right)</script>, eξθ <script type="math/tex" id="MathJax-Element-2203">{{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}</script>的一般形式为:
    ewθ0(Iewθ)(w×v)+wwTvθ1(w0)
    <script type="math/tex; mode=display" id="MathJax-Element-2204">\left[ \begin{matrix} {{e}^{\overset{\wedge }{\mathop{w}}\,\theta }} & \left( I-{{e}^{\overset{\wedge }{\mathop{w}}\,\theta }} \right)\left( w\times v \right)+w{{w}^{T}}v\theta \\ 0 & 1 \\ \end{matrix} \right](w\ne 0)</script>

二、螺旋运动

螺旋运动(Chasles定理):任意刚体运动均可通过绕一轴的转动加上平行于该轴的移动实现。
螺旋运动以 eξθ <script type="math/tex" id="MathJax-Element-1933">{{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}</script>为核心,下面是分别对点和坐标系的作用及含义:

  1. p(θ)=eξθp(0) <script type="math/tex" id="MathJax-Element-1934">p\left( \theta \right)={{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}p\left( 0 \right)</script>:对于一点, eξθ <script type="math/tex" id="MathJax-Element-1935">{{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}</script>作为一个映射,将一点(起始坐标 p(0)R3 <script type="math/tex" id="MathJax-Element-1936">p\left( 0 \right)\in {{R}^{3}}</script>)变换到经刚体运动后的坐标 p(θ)=eξθp(0) <script type="math/tex" id="MathJax-Element-1937">p\left( \theta \right)={{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}p\left( 0 \right)</script> ,注意变换前和变换后的坐标均以相同的坐标系为参考坐标。
    这里写图片描述
  2. gab(θ)=eξθgab(0) <script type="math/tex" id="MathJax-Element-1938">{{g}_{ab}}\left( \theta \right)={{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}{{g}_{ab}}\left( 0 \right)</script>:如果B系固连在刚体上,经螺旋运动后,B系相对于固定的A系的瞬时位形为: gab(θ)=eξθgab(0) <script type="math/tex" id="MathJax-Element-1939">{{g}_{ab}}\left( \theta \right)={{e}^{\overset{\wedge }{\mathop{\xi }}\,\theta }}{{g}_{ab}}\left( 0 \right)</script> ,该变换的意义是:乘上 gab(0) <script type="math/tex" id="MathJax-Element-1940">{{g}_{ab}}\left( 0 \right)</script>表示将一点相对于B系的坐标变换为相对于A系的坐标,指数变换则是将点变换到最终位置(仍以A系为参考坐标)。

三、李群、李代数和螺旋运动的应用

李群和李代数是SLAM和机械臂运动规划的基本数学基础。另外李群、李代数和螺旋理论还可以构造机械臂的正运动学模型,是DH建模方法的一种有效的替代方法,这种方法叫做指数积公式法,对SCARA机械臂和拟人机械臂的正运动学建模示例可见点此链接

参考文献:
A Mathematical Introduction to Robotic Manipulation.

posted @ 2017-06-24 22:21  gpeng832  阅读(384)  评论(0)    收藏  举报  来源