選了機器人的課,作業需要用matlab機器人工具箱robotic toolbox。作業要求是搭建一個機械臂,然後在工作空間某個平面內寫一個字,涉及到機器人的軌跡規劃,求逆解。步驟:
1. 搭建四軸scara機器人:
DH模型
i | α | a | d | Θ |
1 | 0 | 225 | 0 | Θ1 |
2 | 0 | 175 | 0 | Θ2 |
3 | 0 | 0 | d | 0 |
4 | 0 | 0 | 0 | Θ3 |
%DH模型-創建scara機器人
L1=link([0 225 0 0 0]);
L2=link([0 175 0 0 0]);
L3=link([0 0 0 0 1]);
L4=link([0 0 0 0 0]);
r=robot({L1 L2 L3 L4});
r.name='Scara LS3';
drivebot(r);
2. 軌跡規劃:<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">採用直線規劃,設置線段的兩個端點,然後對線段中間點進行插值,可以選擇多種的插值方式,本程序採用其自帶的ctraj函數,本質是多項式插值。</span>
如對“口”字進行規劃,設定四個頂點的位置座標:
T0=transl([300,-50,-50]); %目標點位置,下同
T1=transl([300,50,-50]);
T2=transl([250,50,-50]);
T3=transl([250,-50,-50]);
T4=transl([300,-50,-50]);
設置初始位置,時間間隔:
t=0:0.05:2;
qA=[0 0 -50 0]; %初始位置(關節空間)
需要注意初始位置是在關節空間下。
然後進行軌跡離散點生成:
t01=ctraj(T0,T1,length(t)); %直角空間軌跡規劃,多項式插值
TC1=transl(t01); %離散點
t02=ctraj(T1,T2,length(t));
TC2=transl(t02);
t03=ctraj(T2,T3,length(t));
TC3=transl(t03);
t04=ctraj(T3,T4,length(t));
TC4=transl(t04);
合併生成的軌跡爲TTC後,計算每個離散點下的機器人關節座標,即求逆解:
qs_store = []; %存儲關節向量
for i=1:size(TTC',2)
tc1=[eye(3,3),TTC(i,:)'];
TTC1=[tc1;[0 0 0 1]];
qs=ikine(r,TTC1,qA,[1 1 1 1 0 0]);%逆運動學,機器人逆解
qA=qs;
qs_store(i,:) = qA; %保存關節向量
end
求出關節向量後,驅動機器人畫圖:
plot(r,qs_store); %機器人運動仿真
結束。