机械臂正逆运动学及轨迹规划基础
目錄運動學(kinematics) :將機器人機械手的關節位置映射為感興趣的坐標系的位置和方向(一般是末端)正運動學求解逆運動學求解路徑規劃/運動插補動力學(dynamics) :將所需的關節力和扭矩映射為它們的位置,速度和加速度參考
運動學(kinematics) :將機器人機械手的關節位置映射為感興趣的坐標系的位置和方向(一般是末端)
已知機械臂的連桿的長度,則只要確定了各個關節的轉動的角度,就可以確定末端機構(end-effector)的最終位置和方向,稱之為正向運動學(forward kinematics)
反過來,知道end-effector的最終位置和方向,也可以推導出各個關節的角度,稱之為反向運動學(inverse kinematics)
此外,如果末端機構(end-effector)要走一段比較長的路程(path),那么為了使得機械臂的末端機構的路徑平滑,需要規劃一系列的路徑點(waypoints),稱之為路徑規劃(trajectory planning)或者叫運動插補(interpolation),這里所說的平滑是指“速度連續”,“加速度連續”,“沒有頓挫”等等。
如下圖所示,若已知各個關節的角度變量,則末端執行器的位姿是確定的,即(x,y). 但是若已知末端執行器的位姿,反求關節空間的解時,則會存在多組解的情況。如下圖中實線和虛線兩種情況。
正運動學求解
如上述,若已知,連桿的關節長度為(l_1和l_2),并且已知兩個關節的轉動角度分別為( heta_1和 heta_2),那么其末端執行器的位置((x,y))可以由下式計算出來。
[x=l_1cos( heta_1)+l_2cos( heta_1+ heta_2)\
y=l_1sin( heta_1)+l_2sin( heta_1+ heta_2)
]
逆運動學求解
反之,若知末端執行器的位置,反求關節的轉動角度(( heta_1和 heta_2)),那么就有下式:
其中關于(alpha_1和alpha_2)的計算如下:
路徑規劃/運動插補
對于直線軌跡規劃,一般是直接利用起始點和終點的位置和姿態通過直線插補的形式計算出中間點的位置。因為在直線運動過程中機械臂的姿態保持不變,所以直線運動不需要對機械臂的姿態進行插補。
直線運動插補:設機械臂末端執行器要從點(p_1(x_1,y_1))直線運動到點(p_2(x_2,y_2)),則可以計算出兩點之間的距離為:
[L=sqrt{(x_1-x_2)^2+(y_1-y_2)^2)}
]
設機械臂末端執行器沿直線運行的速度為(v),方向通過矢量來表示,即(p_1到p_2)的方向為:
[p_{21}=p_2-p_1=(x_2-x_1)i+(y_2-y_1)j
]
則該直線運動方向上的單位方向矢量為:
[n_{12}=frac{p_{21}}{L}
]
則任意t時刻末端執行器的位置可以表示為:
[p_t=p_1+n_{12}vt,其中p_t和p_1均用矢量表示,即p_1=x_1i+y_1j,p_t=x_ti+y_tj
]
設直線插補時間間隔為(t_s),則此段時間內末端執行器的運動距離為(d=vt_s),則從點(p_1到點p_2)距離為(L)的長度上共需要插補的步數為:
[N=frac{L}{d+1}
]
則各個軸的增量為:
[Delta x=(x_2-x_1)/N\
Delta y=(y_2-y_1)/N
]
則各個插補點的坐標為:
[x_{i+1}=x_1+iDelta x\
y_{i+1}=y_1+iDelta y\
]
動力學(dynamics) :將所需的關節力和扭矩映射為它們的位置,速度和加速度
機械臂的關節位置一般用電機來驅動,電機通過產生力矩來轉動機械裝置,從而驅動機械臂。而不同場合時,需要的力矩也不同。如在機械臂快速運動的時候,需要的力矩就要比緩慢移動的時候的要大;還有機械臂彎曲或者平展的時候,重心發生變化,由于慣量((I=mr^2))的不同,所以需要的關節力矩也不同等等。將這些需要考慮力矩的因素稱之為動力學,同樣也可以分為正向動力學和反向動力學。
參考
MATLAB 中的機械臂算法——運動學
邱詩元-基于腦機接口的機械臂遙操作控制
總結
以上是生活随笔為你收集整理的机械臂正逆运动学及轨迹规划基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP 电商云 Spartacus UI
- 下一篇: xss挑战赛小记 0x01(xsstes