@
目錄
常用函數語法
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 官方指導書.