【机器人学的数学基础】(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>表示,另外一些符号是为了引出螺旋运动概念而做的铺垫。
- SO(3) <script type="math/tex" id="MathJax-Element-2174">SO\left( 3 \right)</script>:特殊正交矩阵群,可以表示为刚体的位形空间。即可表示刚体的位形,也可以实现同一点在不同坐标系中的变换, SO(3)={R∈R3×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>。
- 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∧=⎡⎣⎢0w3−w2−w30w1w2−w10⎤⎦⎥ <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>;
- SE(3) <script type="math/tex" id="MathJax-Element-2180">SE\left( 3 \right)</script> :特殊欧氏群,即可用于确定刚体的位形(configuration),又可用于一点由一个坐标到另一个坐标的坐标变换, SE(3)={(p,R):p∈R3,R∈SO(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>;
- 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)|w∧∈so(3),v∈R3} <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>
- w <script type="math/tex" id="MathJax-Element-2185">w</script> :关节转动中心轴的向量表示形式;
w∧ <script type="math/tex" id="MathJax-Element-2186">\overset{\wedge }{\mathop{w}}\,</script> :关节转动中心轴的反对称矩阵表示形式,w∧=⎡⎣⎢0w3−w2−w30w1w2−w10⎤⎦⎥<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>;-
ξ∧
<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>矩阵形式:
ξ∧=[w∧0v0]<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>;
- ξ <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)。
-
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(I−ew∧θ)(w×v)+wwTvθ1⎤⎦⎥(w≠0)<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>为核心,下面是分别对点和坐标系的作用及含义:
-
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> ,注意变换前和变换后的坐标均以相同的坐标系为参考坐标。
- 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.
浙公网安备 33010602011771号