1. 程式人生 > >Robotics, Vision and Control, Second Edition讀書筆記

Robotics, Vision and Control, Second Edition讀書筆記

Reading Note

摘錄

  • Robots are data-driven machines. They acquire data, process it and take action based on it.
  • instant gratification: 及時行樂
  • Robot definition: a goal oriented machine that can sense, plan and act.
  • Further Reading: The Handbook of Robotics (Siciliano and Khatib 2016)

一個非常重要的問題:Matlab Robotics Toolbox中函式的引數涉及角度時使用的單位預設是弧度rad,但是在使用時發現實際情況是度deg,該問題的主要原因是呼叫的函式可能與MATLAB自帶工具箱Phased Array System Toolbox中的函式重名導致的,比如rotx函式。所以可將該工具箱解除安裝來解決該問題。該問題可以參考

Matlab Robotics Toolbox的官網,其中有介紹“Toolbox is using degrees not radians”問題。

部分符號說明: 在這裡插入圖片描述

2.1 Working in Two Dimensions (2D)

2.1.1 Orientation in 2-Dimensions

2.1.1.1 Orthonormal Rotation Matrix 正交旋轉矩陣

Y座標系相對於X座標系的正交旋轉矩陣為: XRY(θ)=(cos(θ)sin(θ)sin(θ)cos(θ)) ^{X}R_{Y}(\theta) = \begin{pmatrix} cos(\theta)& -sin(\theta)\\ sin(\theta)& cos(\theta) \end{pmatrix}

2.1.1.2 Matrix Exponential 矩陣指數

矩陣指數存在的性質: R = rot2(θ\theta) 正交旋轉矩陣 S = logm® R = expm(S) 矩陣指數 S = skew(θ\theta) θ\theta = vex(S)

2.1.2 Pose in 2-Dimensions

2.1.2.1 Homogeneous Transformation Matrix 齊次變換矩陣

從B座標系到A座標系的變換: (AxAy1)=(ARBt01×21)(BxBy1) \begin{pmatrix} ^{A}x& \\ ^{A}y& \\ 1& \end{pmatrix} = \begin{pmatrix} ^{A}R_{B}& t\\ 0_{1\times2}& 1 \end{pmatrix} \begin{pmatrix} ^{B}x& \\ ^{B}y& \\ 1& \end{pmatrix}

其中t=(x,y)。 引入齊次座標,則上述變換可寫為: Ap~=(ARBt01×21) Bp~= ATB Bp~ ^{A}\tilde{p} = \begin{pmatrix} ^{A}R_{B}& t\\ 0_{1\times2}& 1 \end{pmatrix} \, ^{B}\tilde{p} = \, ^{A}T_{B}\,^{B}\tilde{p} 其中ATB^{A}T_{B}是齊次變換矩陣。T的值為: T=(cos(θ)sin(θ)xsin(θ)cos(θ)y001) T = \begin{pmatrix} cos(\theta)& -sin(\theta)& x\\ sin(\theta)& cos(\theta)& y \\ 0& 0& 1 \end{pmatrix} T的性質: T1=(Rt01×21)1=(RTRTt01×21) T^{-1} = \begin{pmatrix} R& t\\ 0_{1\times2}& 1 \end{pmatrix}^{-1} = \begin{pmatrix} R^{T}& -R^{T}t\\ 0_{1\times2}& 1 \end{pmatrix}

MATLAB相關命令:

T1 = transl2(1, 2) * trot2(30, 'deg')
plotvol([0 5 0 5]);
trplot2(T1, 'frame', '1', 'color', 'b')
T2 = transl2(2, 1)
T3 = T1*T2
trplot2(T2, 'frame', '2', 'color', 'r');
trplot2(T3, 'frame', '3', 'color', 'g');

T4 = T2*T1
trplot2(T4, 'frame', '4', 'color', 'c');

在這裡插入圖片描述

注意:T3和T4結果的差別說明,T1*T2表示,T2的變換是相對於T1座標系進行的,所以3座標系的原點不是(3,3),而4座標系的原點是(3,3)。

另一個例子:

P=[3;2]   %座標(3,2)點
plot_point(P, 'label', 'P', 'solid', 'ko');

%求P點相對於座標系1的座標
P1 =  inv(T1) * [P;1] %此處將P點寫為齊次座標的形式
%使用e2h函式也可實現普通點到齊次座標的變化,h2e反之,即:
P1 = h2e(inv(T1) * e2h(P))

2.1.2.2 Centers of Rotation旋轉中心

plotvol([-5 4 -1 5]);
T0 = eye(3,3);
trplot2(T0, 'frame', '0');
X = transl2(2, 3);
trplot2(X, 'frame', 'X');
R = trot2(2);
trplot2(R*X, 'framelabel', 'RX', 'color', 'r');
trplot2(X*R, 'framelabel', 'XR', 'color', 'r');
C = [1 2]';
plot_point(C, 'label', ' C', 'solid', 'ko')
RC = transl2(C) * R * transl2(-C)
trplot2(RC*X, 'framelabel', 'XC', 'color', 'r');

在這裡插入圖片描述

R*X: 旋轉中心是原始座標原點 X*R: 旋轉中心是X座標系原點 以任意點為旋轉中心對X旋轉變換:transl2© * R * transl2(-C) * X

2.1.2.3 Twists in 2D

  • 使用Twist型別進行旋轉變換
%建立以C點為旋轉中心的Twist,C=[1 2]'
tw = Twist('R', C)

%獲取以C點為旋轉中心,旋轉2 radians的變換矩陣
%該結果與上一節RC = transl2(C) * R * transl2(-C)得到的結果一樣
T = tw.T(2)

%從Twist得到旋轉中心
tw.pole()
  • 使用Twist型別完成某方向上的平移變換
%沿(1,1)方向平移的Twist
tw = Twist('T', [1 1])

%平移√2
tw.T(sqrt(2))
  • 更一般的變換
T = transl2(2, 3) * trot2(0.5)

%計算Twist向量值
tw = Twist(T)

%得到T
tw.T

#2.2 Working in Three Dimensions (3D)

Euler’s rotation theorem: Any two independent orthonormal coordinate frames can be related by a sequence of rotations (not more than three) about coordinate axes, where no two successive rotations may be about the same axis.

在這裡插入圖片描述

2.2.1 Orientation in 3-Dimensions

2.2.1.1 Orthonormal Rotation Matrix

從B座標系旋轉至A座標系: (AxAyAz)= ARB(BxByBz) \begin{pmatrix} ^{A}x& \\ ^{A}y& \\ ^{A}z& \end{pmatrix} = \, ^{A}R_{B} \begin{pmatrix} ^{B}x& \\ ^{B}y& \\ ^{B}z& \end{pmatrix}

3維旋轉矩陣的一些性質:

  • 正交性,每列是單位向量,且列與列之間是正交的
  • R1=RTR^{-1} = R^{T}
  • 正交旋轉矩陣共9個元素,但是並不是彼此獨立,各列是單位向量且彼此正交,提供6個約束條件,所以9個元素只有三個是獨立的

各個軸的正交旋轉矩陣: Rx(θ)=(1000cos(θ)sin(θ)0sin(θ)cos(θ)) R_{x}(\theta) = \begin{pmatrix} 1& 0& 0\\ 0& cos(\theta)& -sin(\theta)\\ 0& sin(\theta)& cos(\theta) \end{pmatrix}

Ry(θ)=(cos(θ)0sin(θ)010sin(θ)0cos(θ)) R_{y}(\theta) = \begin{pmatrix} cos(\theta)& 0& sin(\theta)\\ 0& 1& 0\\ -sin(\theta)& 0& cos(\theta) \end{pmatrix}

Rz(θ)=(cos(θ)sin(θ)0sin(θ)cos(θ)0001) R_{z}(\theta) = \begin{pmatrix} cos(\theta)& -sin(\theta)& 0 \\ sin(\theta)& cos(\theta)& 0\\ 0& 0& 1 \end{pmatrix}