MATLAB Robotics Toolbox 機械臂建模實戰(1)——常用函數語法規則


@

常用函數語法

Link——定義機器人關節

%           theta   d   a   alpha  sigma
L(1) = Link([ 0     0   10     0     0 ]);
L(2) = Link([ 0     0   20     0     0 ]);
  • 前四個為機械臂的DH參數,sigma為0時表示轉動關節,非0時表示移動關節
  • Link中還可設置其他多個參數,詳情參閱附件。

jtraj——計算關節空間的軌跡

[Q,QD,QDD] = jtraj(Q0, QF, M, QD0, QDF)
[Q,QD,QDD] = jtraj(Q0, QF, T, QD0, QDF)

語法規則

  • Q(M×N)是每個關節按照步長M或時間向量T從Q0變換到QF的位置Q、時間QD、和加速度QDD的值,一行表示每一步或每一個時間點,一列表示每一個關節。
  • 五次(5次)多項式用於速度和加速度的默認零邊界條件。
  • QD0和QDF表示每個關節的初始速度與末端速度,可省略。

舉例
例:兩個關節,分別從0轉動到90°和從45°轉動到180°

init = [0 pi/4];
targ = [pi/2 pi];
step = 200;
[q,qd,qdd]=jtraj(init,targ,step);

注:jtraj的計算與機械臂結構無關,僅計算一個關節的轉動角度。所以可以看到輸入函數中沒有與機械臂定義的量(如L(1))

fkine——輸出機器人末端的齊次變換矩陣

ETS.fkine(Q, OPTIONS)
ETS.fkine(Q, N, OPTIONS)

語法規則

  • ETS——初等變換序列類
  • 計算在某一角度Q(1×N)下機器人末端相對於首端的齊次變換矩陣
  • OPTIONS,默認弧度制,需要角度制時,使用'deg'
  • N,只處理轉換序列的前N個元素

舉例

%           theta   d   a   alpha  sigma
L(1) = Link([ 0     0   10     0     0 ]);
L(2) = Link([ 0     0   20     0     0 ]);
% 正運動學解算,得到機器人末端的齊次變換矩陣
T0=robot.fkine(init);
Tf=robot.fkine(targ);

ctraj——計算在每一步(step)變換時的末端相對於首端的齊次變換矩陣

TC=ctraj(T0,T1,N)

語法規則

  • 從T0到T1,一共經歷N步(step),計算每一步的齊次變換矩陣

舉例

%           theta   d   a   alpha  sigma
L(1) = Link([ 0     0   10     0     0 ]);
L(2) = Link([ 0     0   20     0     0 ]);
% 正運動學解算,得到機器人末端的齊次變換矩陣
T0=robot.fkine(init);
TF=robot.fkine(targ);

TC=ctraj(T0,TF,step);

transl——將齊次變換矩陣轉換為坐標值

T = transl(P)

語法規則

  • P是ctraj變換得到的每一步末端的齊次變換矩陣,通過transl函數,T為每一步(step)變換時末端的xyz坐標值(在首端坐標系中的坐標值)。

舉例

%           theta   d   a   alpha  sigma
L(1) = Link([ 0     0   10     0     0 ]);
L(2) = Link([ 0     0   20     0     0 ]);
% 正運動學解算,得到機器人末端的齊次變換矩陣
T0=robot.fkine(init);
TF=robot.fkine(targ);
% 得到機器人在變換過程中每一步(step)的齊次變換矩陣
step = 200;
TC=ctraj(T0,TF,step);
Tjtraj=transl(TC);

isrevolute——測試關節是否可以轉動

b=isrevolute(L(1));

如果該關節可以轉動,那么b=1

ikine——運動學逆解求導

q=ETS.ikine(TC,'q0',q0,'mask',m)

注:
1. ikine函數我沒找到確切的語法規則,所以我寫的不一定對
2. ikine貌似無法計算2自由度的機械臂,我試了很多方法都會報錯。

語法規則

  • q是在變換過程中每一步關節的θ或d的值
  • TC表示每一步變換過程中的齊次變換矩陣
  • q0表示初始值
  • mask表示掩膜,由於ikine默認計算6自由度以上的機械臂,所以計算6自由度一下的機械臂的時候,有幾個自由度,使用幾個1.

舉例

%           theta   d   a   alpha  sigma
L(1) = Link([ 0     0   10     0     0 ]);
L(2) = Link([ 0     0   20     0     0 ]);
% 正運動學解算,得到機器人末端的齊次變換矩陣
T0=robot.fkine(init);
TF=robot.fkine(targ);
% 得到機器人在變換過程中每一步(step)的齊次變換矩陣
step = 200;
TC=ctraj(T0,TF,step);
% 逆運動學計算
qq=robot.ikine(TC,'mask',[1 1 1 0 0 0]);

plot——顯示機器人運動的動畫

ETS.plot(Q,options)

語法規則

  • Q(1×N)為機器人的關節角(靜態)
  • 或Q(M×N)為機器人在M點軌跡移動時進行動畫制作(動態),一行表示一個時間點,一列表示一個關節的關節角
  • Options——名稱-值對組參數(主要幾個參數,詳情參見附件P105)
名稱 說明 示例
workplace W W為1×6的行向量,用來表示視野的xyz軸范圍 w=[-20 20 -20 20 -20 20]
floorlevel L 樓板的z坐標值(目前不清楚啥意思)
delay D 動畫幀之間的延遲(單位:s),用這個可以用來控制動畫中機器人動作的快慢 D=0.01
[no]loop 是否永遠在軌道上循環
fps fps 每秒鍾幀率,使用fps時候delay不起作用 fps=60
trail L 繪制機器人末端的軌跡,L的值表示軌跡顏色[1] L=‘r’
movie M 保存成動畫到當前文件夾,M是文件名 M=‘test.gif’
scale S 關節大小的比例因子 S=0.5
view V V=[az el],通過方位角az和el來調整視角[2] L=[45,25]

舉例

robot.plot(q,'workspace',[-40 40 -40 40 -40 40],'delay',0.001,'fps',120,'trail','b','view',[30,50]);

附件:https://download.csdn.net/download/EstrangedZ/35093250
鏈接: 附件:MATLAB robotics toolbox 官方指導書.


  1. 如果使用了loop,那么前一個循環末尾的位置和下一個循環初始位置之間會有一條連線 ↩︎

  2. az-方位角,表示為與負y軸形成的角度,單位deg,增加此角度時從上方看x-y平面繞z軸逆時針旋轉;
    el-仰角,視線與x-y平面之間的最小角度,單位deg, ↩︎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM