位置与姿态形貌
1 位姿的抽象符号体现
提示:在本文中,我们会用到这几个抽象的符号:“ ξ \xi ξ”、“·”和“ ⊕ \oplus ⊕”。读者只需知道它们的作用就行,在后续文章会将其转化为MATLAB中实现的尺度的数学对象和运算符。
呆板人和计算机视觉中的一个根本要求是能够体现物体在环境中的位置和方向。这些物体包罗呆板人、摄像机、工件、障碍物和路径。
空间中的点可以被形貌为一个坐标向量,也被称为一个约束向量。如下图所示,点 P P P由一个相对于绝对坐标系的坐标向量体现。
而对于空间中的物体,我们体现它时并不但仅形貌其上单独的点,而是用该物体坐标系的位置和方向来形貌。坐标系的位置和方向总称为位姿,图形上用一组坐标轴体现。相对于一个参考坐标系的某个坐标系的相对位姿用符号 ξ \xi ξ体现。
更多时候我们需要思量组成物体的一组点。我们认为物体是刚性的,构成它的点相对于物体坐标系保持固定的相对位置,如下图所示。
在上图中
- 小车坐标系用 { B } \{B\} {B}标志,由一个相对位姿 ξ B \xi_B ξB(如果没有初始上标,我们默认位姿的变革是相对于用 { О } \{О\} {О}体现的世界坐标系的,即 O ξ B ^O\xi_B OξB)体现(细的玄色箭头)。
- 坐标系 { B } \{B\} {B}的坐标以坐标系的标志作为其下标,用 x B x_B xB和 y B y_B yB体现。(粗的赤色箭头体现)
- 组成小车的点用相对于坐标系 { B } \{B\} {B}的向量体现(细的赤色箭头)。
下图显示了两个坐标系 { A } \{A\} {A}、 { B } \{B\} {B},以及 { B } \{B\} {B}相对于 { A } \{A\} {A}的相对位姿 A ξ B ^A\xi_B AξB。前面的上标体现参考坐标系,下标体现被形貌的坐标系。
我们也可以认为 A ξ B ^A\xi_B AξB形貌了一组动作——对 { A } \{A\} {A}施加平移和旋转使它转化为 { B } \{B\} {B}。
在上图中的 P P P点可用 { A } \{A\} {A}, { B } \{B\} {B}任何一个坐标系体现(坐标系 { B } \{B\} {B}相对于坐标系 { A } \{A\} {A}的位姿记作 A ξ B ^A\xi_B AξB)。用式子体现为:
A p = A ξ B ⋅ B p ^Ap=^A\xi_B\cdot^Bp Ap=AξB⋅Bp
等式右侧体现从 { A } \{A\} {A}到 { B } \{B\} {B}然后到 P P P的动作。运算符“ ⋅ · ⋅”将一个向量转换为一个新的向量,它们是用一个差别的坐标系来形貌的相同点。
相对位姿一个重要的特点是它们可以被合成或组合。以下图情况为例,
如果一个坐标系可以被其他坐标系用相对位姿形貌,那么它们的关系可以记为
A ξ C = A ξ B ⊕ B ξ C ^A\xi_C=^A\xi_B\oplus^B\xi_C AξC=AξB⊕BξC
用语言可以表述为, { C } \{C\} {C}相对于 { A } \{A\} {A}的位姿可由 { B } \{B\} {B}相对于 { A } \{A\} {A}的位姿和 { C } \{C\} {C}相对于 { B } \{B\} {B}的位姿合成得到。我们使用运算符“ ⊕ \oplus ⊕”体现相对位姿的合成。
在这种情况下点 P P P可以用相对于坐标系 { A } \{A\} {A}, { B } \{B\} {B}或 { C } \{C\} {C}的坐标向量体现。这些坐标系用相对位姿形貌:
A p = ( A ξ B ⊕ B ξ C ) ⋅ C p ^Ap=(^A\xi_B\oplus^B\xi_C)\cdot^Cp Ap=(AξB⊕BξC)⋅Cp
在前面的例子中主要讨论了二维坐标系的情况,能适用于一大类呆板人的问题,特别是在平面世界里作业的移动呆板人。对于其他问题,我们需要用三维坐标系来体现三维世界中的物体,如飞行呆板人、水下呆板人的位姿大概呆板人手臂夹持的工具末了。
下图中给出了一个更复杂的三维变更的例子:
其中每个实体上都固接了一个三维坐标系,并体现出了它们之间的相对位姿。固定摄像头从固定的视角观察物体,并估计物体相对于摄像头自己的位姿。另一个摄像头是不固定的,它固接到呆板人上,与呆板人有固定的相对位姿,并估计出物体相对于该摄像头的位姿。
另一个体现空间关系的方式是有向图,如下图所示。
图中的每个节点代表一个位姿,每条边代表一个相对位姿。从 X X X到 Y Y Y的箭头记作 X ξ Y ^X\xi_Y XξY,体现 Y Y Y相对于 X X X的位姿。前面我们提到过可以用运算符 ⊕ \oplus ⊕来复合成相对位姿,这里可以用它写出一些空间关系:
ξ F ⊕ F ξ B = ξ R ⊕ R ξ C ⊕ C ξ B ξ F ⊕ F ξ R = 0 ξ R \begin{array}{l}\xi_{F} \oplus^{F} \xi_{B}=\xi_{R} \oplus^{R} \xi_{C} \oplus{ }^{C} \xi_{B} \\\xi_{F} \oplus^{F} \xi_{R}={ }^{0} \xi_{R}\end{array} ξF⊕FξB=ξR⊕RξC⊕CξBξF⊕FξR=0ξR
每个方程体现了图中的一个闭环。方程等号两侧的每一边各体现一条网络的通路,即一组按照从头至尾顺序毗连的边(箭头线)。等式双方的起始节点和结束节点必须相同。
位姿体现的一个非常有用的属性是其代数运算本领。以上面第二个闭环方程为例,
ξ F ⊕ F ξ R = 0 ξ R \xi_{F} \oplus^{F} \xi_{R}={ }^{0} \xi_{R} ξF⊕FξR=0ξR
它体现呆板人的位姿等同于两个相对位姿的合成:从世界坐标系 { O } \{O\} {O}到固定摄像机坐标系 { F } \{F\} {F}的相对位姿,以及从固定摄像机 { F } \{F\} {F}到呆板人 { R } \{R\} {R}的相对位姿。
我们可以通过在等式双方同时加上一个逆来消除,,记作
⊖ ξ F ⊕ ξ F ⊕ F ξ R = ⊖ ξ F ⊕ ξ R F ξ R = ⊖ ξ F ⊕ ξ R \begin{aligned}\ominus \xi_{F} \oplus \xi_{F} \oplus^{F} \xi_{R} &=\ominus \xi_{F} \oplus \xi_{R} \\{ }^{F} \xi_{R} &=\ominus \xi_{F} \oplus \xi_{R}\end{aligned} ⊖ξF⊕ξF⊕FξRFξR=⊖ξF⊕ξR=⊖ξF⊕ξR
其效果就是呆板人 { R } \{R\} {R}相对于固定摄像机 { F } \{F\} {F}的位姿。
下面是几个代数运算规则:
ξ ⊕ 0 = ξ , ξ ⊖ 0 = ξ ξ ⊖ ξ = 0 , ⊖ ξ ⊕ ξ = 0 \begin{array}{l}\xi \oplus 0=\xi, \xi \ominus 0=\xi \\\xi \ominus \xi=0, \ominus \xi \oplus \xi=0\end{array} ξ⊕0=ξ,ξ⊖0=ξξ⊖ξ=0,⊖ξ⊕ξ=0
其中0体现一个零相对位姿。一个位姿可以有逆位姿:
⊖ X ξ Y = Y ξ X \ominus^{X} \xi_{Y}={ }^{Y} \xi_{X} ⊖XξY=YξX
该逆位姿在图中可体现为从 Y Y Y到 X X X的一条箭头线。相对位姿可以被复合或合成:
X ξ Y ⊕ Y ξ Z = X ξ Z { }^{X} \xi_{Y} \oplus{ }^{Y} \xi_{Z}={ }^{X} \xi_{Z} XξY⊕YξZ=XξZ
需要注意的是位姿的代数运算规则差别于一般的代数运算规则,位姿复合运算中各个项的位置不能互换:
ξ 1 ⊕ ξ 2 ≠ ξ 2 ⊕ ξ 1 \xi_{1} \oplus \xi_{2} \neq \xi_{2} \oplus \xi_{1} ξ1⊕ξ2=ξ2⊕ξ1
ξ 1 ⊕ ξ 2 = 0 \xi_{1} \oplus \xi_{2}=0 ξ1⊕ξ2=0时才可以互换位置。可以用相对位姿将一个点从一个坐标系中的一个向量转换为另一个坐标系中的另一个向量:
X p = X ξ Y ⋅ Y p { }^{X} \boldsymbol{p}={ }^{X} \xi_{Y} \cdot{ }^{Y} \boldsymbol{p} Xp=XξY⋅Yp
那么, ξ \xi ξ是什么,才可以支持上述代数运算,并适用于我们身边常见的二维或三维的的问题?
在后续的文章中我们将讨论一些对象,其中包罗向量以及一些更奇特的数学对象,如齐次变更矩阵、正交旋转矩阵和四元数等。这些数学对象都可以支持上述代数运算,并且非常适合MATLAB的数学编程环境!
参考:
[1] 呆板人学、呆板视觉与控制:MATLAB算法底子;Peter Corke 著; 刘荣等译.
[2] Robotics,Vision and Control Fundamental Algorithms in MATLAB;Peter Corke
THE END.
感谢阅读。
来源:https://blog.csdn.net/weixin_44378835/article/details/111795657
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |