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函式。所以可將該工具箱解除安裝來解決該問題。該問題可以參考
部分符號說明:
2.1 Working in Two Dimensions (2D)
2.1.1 Orientation in 2-Dimensions
2.1.1.1 Orthonormal Rotation Matrix 正交旋轉矩陣
Y座標系相對於X座標系的正交旋轉矩陣為:
2.1.1.2 Matrix Exponential 矩陣指數
矩陣指數存在的性質: R = rot2() 正交旋轉矩陣 S = logm® R = expm(S) 矩陣指數 S = skew() = vex(S)
2.1.2 Pose in 2-Dimensions
2.1.2.1 Homogeneous Transformation Matrix 齊次變換矩陣
從B座標系到A座標系的變換: 其中t=(x,y)。 引入齊次座標,則上述變換可寫為: 其中是齊次變換矩陣。T的值為: T的性質:
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座標系:
3維旋轉矩陣的一些性質:
- 正交性,每列是單位向量,且列與列之間是正交的
- 正交旋轉矩陣共9個元素,但是並不是彼此獨立,各列是單位向量且彼此正交,提供6個約束條件,所以9個元素只有三個是獨立的
各個軸的正交旋轉矩陣: