輪式移動機器人運動學基礎(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之智能的腳

TAG:移动机器人 | 运动学 | 人工智能 |