輪式移動機器人運動學基礎(1) 6自由度18變數
在正式學習輪式機器人之前, 先複習一下6自由度18變數的運動學.
1: 一個點用3個自由度描述 X3 = {x,y,z}
有三個小的細節需要說明一下:
1) 行變數, 還是列變數? 這個問題無傷大雅, 但是如果用行變數, 則X3=[[x,y,z]]; 如果是列變數, 其實是X3=[[x],[y],[z]]; 雖然三者都寫成[x,y,z],或者{x,y,z}形式, 但實際上還是不同的. 在進行矩陣運算時, 也會注意採用左乘還是右乘. 對OpenGl和DirectX等圖形處理引擎的底層也有一定的要求.
2) 使用過程中, 用X4={x,y,z,1}進行增廣之後的齊次坐標描述方便計算, 然後再轉換回X3.
3) 同理與2) 在二次元世界裡, 大量的使用X2={x,y}作為坐標的描述, 在進行複雜的變換過程中(如平面世界Html5與Css3的結合)也要採用三維的方式更加方便 X3={x,y,0}
2, 一個剛體的姿態用3個自由度描述. U3={u,v,w}
歐拉角用{u,v,w}(章動角 θ、旋進/進動角ψ和自轉角j)表示, 根據選擇的坐標系不同共有24種排列組合, 我們默認採用剛體局部坐標系的xyz方式.
- 剛體局部坐標系:
- xyz, xzy, yzx, yxz, zxy,zyx;
- xyx,xzx, yzy, yxy, zxz, zyz;
- 全局坐標系:
- XYZ, XZY, YZX, YXZ, ZXY, ZYX;
- XYX, XZX, YZY, YXY, ZXZ, ZYZ;
用單位四元數描述姿態是一個計算上很高效的做法, 由於單位四元數本身要滿足一個度量為1的約束條件, 所以實際也是3個自由度. (哈密爾頓四元數對於旋轉很重要, 自行搞定)
3, 一個剛體的位姿(位置和姿態)用6個自由度描述 X6={x,y,z,u,v,w}
綜上1,2,則一個剛體的形狀用六個自由度來表述.
4, 剛體的位姿, 本身就是剛體和剛體之間的變換, 用T44的變換矩陣描述
一個剛體, 相當於剛體上的一個坐標系;
一個剛體(相對於另外一個剛體/坐標系)的位姿, 就是兩個坐標系之間的坐標變換,
坐標變換可以用T44矩陣描述,
5, T44矩陣的自由度為12, 其中剛體僅需要6個(即X6),
- T44共有4*4=16個數字, 其中:
- 有4個啞元(3個0,1個1)
- 3個平移, x,y,z方向的平移
- 3個旋轉自由度, x軸(yz平面),y軸(zx平面),z軸(xy平面)方向的旋轉
- 3個放縮自由度, x,y,z方向的放縮
- 3個剪切自由度, x軸(yz平面),y軸(zx平面),z軸(xy平面)方向的剪切,很少用
由於剛體假設本身要求放縮自由度, 和剪切自由度被禁止, 所以,3個放縮自由度永遠為{1,1,1}, 3個剪切自由度永遠為{0,0,0}, 所以, T44與X6的變換矩陣可以寫為:
- T44 = Txyz* Tu* Tv * Tw, 其中,
- Txy= [[ 1, 0, 0, x],[0,1,0,y], [0,0,1,z],[0,0,0,1]]
- Tu= [[ 1, 0, 0, 0],[0,cos(u),-sin(u),0], [0,sin(u),cos(u),0],[0,0,0,1]]
- Tv= [[ cos(v), 0, -sin(v) , 0],[0,1,0,0], [sin(v),0,cos(v),0],[0,0,0,1]]
- Tw= [[ cos(w), -sin(w), 0,0],[sin(w),cos(w),0,0], [0,0,1,0],[0,0,0,1]]
- 還有一個常用的鏡像變換Tmirror=[[1, 0, 0, 0],[0,1,0,0], [0,0,-1,0],[0,0,0,1]], 其實是放縮矩陣的一種, 建議轉為統一由z軸旋轉. 不要進行兩次鏡像, 等於沒變.
6,剛體的6自由度運動, 考慮位移, 速度, 加速度, 就共有18個數字了
加速度A6 =d2(X6)/dt2=[ax, ay, az, au, av, aw];
速度V6 =d(X6)/dt =[vx,vy,vz, vu,vv,vw],
為區分後續討論, 將相對位移S6與絕對位姿X6進行分離.
相對位移/移動量:S6=對V6的積分 = [sx,sy,sz, su,sv,sw],
絕對位移/坐標值: X6是相對於某一坐標系(不確定其為慣性系)的絕對坐標, X6=[x,y,z,u,v,w], 在特別需要聲明的時候, 標誌為[xx,xy,xz, xu,xv,xw], 以說明其絕對屬性.
小結:
位置 X3 +姿態 U3 = 剛體位姿 X6, (等價於坐標變換T44),
* 時間相關[1,速度d/dt,加速度d2/dt2] = X18,
用於未來單剛體運動的狀態感知, 和剛體動力學分析, 和SVA三閉環控制.
說明: 由於行業各個書本出現的時代不完全相同, 所以符號也不相同.
特別注意1)行列向量, 2)矩陣左乘右乘, 3)歐拉角的選擇和乘法順序, 4)2維3維兼容背後的左右手系問題, 5)3維和高維的兼容和擴展問題, 6)位移/相對位移/坐標/變換/距離的概念,7)位置/姿態/位姿等定義的問題, 所以目前機器人行業和其他行業的大融合才剛剛開始, 標準的產生還需要一段時間的團隊協同和融合.
定標準者定天下, 亂定標準者亂天下.
----------------
應邀寫上T44變換的完整版
- T44 = Txyz* Tu* Tv * Tw * Trst * Ta*Tb*Tc, 其中,
- Txy= [[ 1, 0, 0, x],[0,1,0,y], [0,0,1,z],[0,0,0,1]]
- Tu= [[ 1, 0, 0, 0],[0,cos(u),-sin(u),0], [0,sin(u),cos(u),0],[0,0,0,1]]
- Tv= [[ cos(v), 0, -sin(v) , 0],[0,1,0,0], [sin(v),0,cos(v),0],[0,0,0,1]]
- Tw= [[ cos(w), -sin(w), 0,0],[sin(w),cos(w),0,0], [0,0,1,0],[0,0,0,1]]
- Trst=[[r, 0, 0, 0],[0,s,0,0], [0,0,t,0],[0,0,0,1]], 當r=-1, s=1,t=1時為常用的鏡像矩陣
- Topq=[[ 1, o, q, 0],[0,1,q,0], [0,0,1,0],[0,0,0,1]]
------------------
n維高維運算的T(n+1)(n+1)矩陣變換, 有人建議補充, 用的人不多, 只說乾貨, 自行灌水: 旋轉和剪切, 是平面內的變換, 而不是軸的變換, 所以n維空間中有n(n-1)/2種旋轉, 有n(n-1)/2種剪切, 但是有n种放縮, n種平移. 公式同T44, 用二維空間更容易理解
T33 = Tposition* Trotate* Tscale * Tshear, 其中,
- T_position= [[1, 0, x],[0,1,y], [0,0,1]]
- T_rotate= [[cos(u),-sin(u),0], [sin(u),cos(u),0],[0,0,0,1]]
- T_scale=[[r, 0, 0],[0,s,0],[0,0,1]], 當r=-1, s=1時為常用的鏡像矩陣
- T_shear=[[ 1, xy, 0],[0,1, 0], [0,0,1]]
非笛卡爾坐標系, 可以自行推導, 在加速度計算時有附加項.
非歐幾何坐標系, 建議換工具, 流體力學基礎的微分幾何是更合適的工具.
畢竟本文只研究剛體/准剛體的運動學.
推薦閱讀:
※移動機器人導航技術(1)概述
※雙足機器人 四足機器人行走控制?
※移動機器人應用(1)難度排名
※移動機器人感知技術(2) 鼻子
※移動機器人導航技術(2) IMU之智能的腳