机器人基础之雅克比矩阵
機器人基礎之雅克比矩陣
- 概述
- 雅克比矩陣的構造
- 微分運動和廣義速度
- 微分變換法
- MATLAB實現
概述
雅克比矩陣J(q)J(q)J(q)是從關節空間向操作空間的速度傳遞的線性關系,借助于機械原理中的概念,可以理解為廣義傳動比。
對于nnn個關節的機器人,其雅克比矩陣是6×n6\times n6×n階矩陣。其中前3行代表機器人末端坐標系線速度vvv的傳遞比;后3行代表對手爪的角速度ω\omegaω的傳遞比。另一方面,每一列代表相應的關節速度對末端坐標系線速度和角速度的傳遞比。因此,可將雅克比矩陣分塊,即[vω]=[Jl1Jl2???JlnJa1Ja2???Jan][q1q2q˙1q˙2???q˙n](1)\left[ \begin{matrix} v\\ \omega \end{matrix} \right] = \left[ \begin{matrix} J_{l1} & J_{l2} & \cdot\cdot\cdot & J_{ln}\\ J_{a1} & J_{a2} & \cdot\cdot\cdot & J_{an} \end{matrix} \right] \left[ \begin{matrix} q_1\\ q_2\\ \dot q_1\\ \dot q_2\\ \cdot \\ \cdot \\ \cdot \\ \dot q_n\\ \end{matrix} \right] \tag{1} [vω?]=[Jl1?Ja1??Jl2?Ja2?????????Jln?Jan??]?????????????q1?q2?q˙?1?q˙?2????q˙?n???????????????(1)
雅克比矩陣的構造
微分運動和廣義速度
剛體或坐標系的微分運動包含微分移動矢量ddd和微分轉動矢量δ\deltaδ。前者由沿三個坐標軸的微分移動組成,后者由繞三坐標軸的微分轉動組成。將兩者合并為6維列矢量DDD,稱為剛體或坐標系的微分運動矢量。D=[dδ](2)D=\left[ \begin{matrix} d\\ \delta\\ \end{matrix} \right] \tag{2} D=[dδ?](2) 相應地,剛體或坐標系的廣義速度VVV是由線速度vvv和角速度ω\omegaω組成的6維列矢量。即V=D˙=[d˙δ˙](3)V=\dot D=\left[ \begin{matrix} \dot d\\ \dot\delta\\ \end{matrix} \right] \tag{3} V=D˙=[d˙δ˙?](3) 微分運動矢量D和廣義速度V也是相對于某坐標系而言的,在不同坐標系中表達式不同。若坐標系{T}相對于基坐標系的齊次變換矩陣為 T=[nxoxaxpxnyoyaypynzozazpz0001]=[noap](4)T=\left[ \begin{matrix} n_x & o_x & a_x & p_x \\ n_y & o_y & a_y & p_y \\ n_z & o_z & a_z & p_z \\ 0& 0& 0& 1\\ \end{matrix} \right] = \left[ \begin{matrix} n & o & a & p \\ \end{matrix} \right]\tag{4} T=?????nx?ny?nz?0?ox?oy?oz?0?ax?ay?az?0?px?py?pz?1??????=[n?o?a?p?](4) 則坐標系{T}中的微分運動TD{^T}DTD和基坐標系中的微分運動DDD之間的關系為: TD=[nxnyax(p×n)x(p×n)y(p×n)zoxoyoz(p×o)x(p×o)y(p×o)zaxayaz(p×a)x(p×a)y(p×a)z000nxnyax000oxoyoz000axayaz]D(5){^T}D = \left[ \begin{matrix} n_x & n_y & a_x & (p\times n)_x & (p\times n)_y & (p\times n)_z \\ o_x & o_y & o_z & (p\times o)_x & (p\times o)_y & (p\times o)_z\\ a_x & a_y & a_z & (p\times a)_x & (p\times a)_y & (p\times a)_z\\ 0& 0& 0& n_x & n_y & a_x\\ 0& 0& 0& o_x & o_y & o_z\\ 0& 0 & 0& a_x & a_y & a_z\\ \end{matrix} \right] D\tag{5} TD=?????????nx?ox?ax?000?ny?oy?ay?000?ax?oz?az?000?(p×n)x?(p×o)x?(p×a)x?nx?ox?ax??(p×n)y?(p×o)y?(p×a)y?ny?oy?ay??(p×n)z?(p×o)z?(p×a)z?ax?oz?az???????????D(5) 上式簡寫為 TD=[RT?RTS(p)0RT]D(6){^T}D = \left[ \begin{matrix} R^T & -R^TS(p) \\ 0 & R^T\\ \end{matrix} \right] D\tag{6} TD=[RT0??RTS(p)RT?]D(6) 其中 R=[nxoxaxnyoyaynzozaz](7)R=\left[ \begin{matrix} n_x & o_x & a_x \\ n_y & o_y & a_y \\ n_z & o_z & a_z \end{matrix} \right] \tag{7} R=???nx?ny?nz??ox?oy?oz??ax?ay?az?????(7) 反對稱矩陣S(p)S(p)S(p)定義為S(p)=[0?pzpypz0px?pypx0](8)S(p)=\left[ \begin{matrix} 0& -p_z & p_y \\ p_z & 0 & p_x \\ -p_y & p_x & 0 \end{matrix} \right] \tag{8} S(p)=???0pz??py???pz?0px??py?px?0????(8) 類似的,任意兩坐標系{A}和{B}之間微分運動的坐標變換為BD=[BRT?ABRTS(BpBO)0ABRT]AD(9){^B}D = \left[ \begin{matrix} {^B}R^T & -{^B_A}R^TS({^B}p_{BO}) \\ 0 & {^B_A}R^T\\ \end{matrix} \right] {^A}D\tag{9} BD=[BRT0??AB?RTS(BpBO?)AB?RT?]AD(9)
微分變換法
下面采用構造性的方法,不需要求導而直接構造出JliJ_{li}Jli?和JaiJ_{ai}Jai?。
以六自由度機械臂為例。
若關節iii為旋轉運動,則取微分運動變化矩陣的第六列作為雅克比矩陣的第iii列;
對于六自由度機械臂而言,顯然取微分運動變化矩陣的第六列作為雅克比矩陣的第iii列。
至此,構造出機器人的雅克比矩陣。
MATLAB實現
function J = calJacobi(DH_parameter) % 計算雅克比矩陣 % DH_parameter:DH參數表;[dim_row, dim_col] = size(DH_parameter); J = zeros(6, dim_row);for i = 1 : dim_rowT = calT(DH_parameter, i - 1, dim_row);R = T(1:3, 1:3);P = T(1:3, 4);DiffM = [R', -R' * antiSymMatrix(P); zeros(3, 3), R'];J(:, i) = DiffM(:, 6); end總結
以上是生活随笔為你收集整理的机器人基础之雅克比矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人技术创新与实践旧版本大纲
- 下一篇: 机器人学随堂笔记(1)ᝰ机器人简介、构成