繪制IRB1200機器人工作空間
一、基本要求
1、 建立坐標系;
2、 給出D-H參數表;
3、 推導正運動學,寫出6個齊次變換矩陣;
4、 MATLAB編程繪制工作空間。
二、仿真過程
??IRB 1200是ABB公司推出一款多用途工業機器人——緊湊、敏捷、輕量的六軸機器人,包括旋轉、手臂1、手臂2、手腕、彎曲和翻轉。每個自由度對應一個旋轉關節,如下圖所示:
2.1 建立坐標系
采用D-H法建立坐標系,簡述如下:
??(1)確定Z軸:對于旋轉關節,z軸按照右手螺旋定則旋轉的方向,旋轉角θ為關節變量;對于滑動關節,z軸為沿著直線運動的方向,連桿長度是關節變量;
??(2)確定x軸:定義x_n軸的方向為z(n-1)和zn軸的公垂線方向;有以下特別情況:
?? 若z(n-1)和zn平行,此時有無數條公垂線,選取與前一關節的公垂線共線的公垂線;
??若z(n-1)和zn相交,此時沒有公垂線,選取兩條z軸叉積的方向作為x軸的方向。
按照上述方法,建立如下坐標系:
每個關節之間的距離如下:
2.2 D-H參數表
??D-H參數表分兩種,一種是標準的D-H表,一種是改進的D-H表。以下采用的是標準的D-H表,根據上述信息,按照如下四個變換規則,可以確定D-H表中的值:
(踩過的坑:第二步是沿著Z軸平移,第三步是沿著X軸平移!!!)
備注:若無法實現二三步,即無法移動,可默認這兩個坐標系同原點,即無距離移動。
IRB1200的旋轉軸的技術參數如下表:
可計算的D-H表為:
2.3 推導正運動學
??分析可知,依次進行坐標系之間的變換 ^n T_(n+1)稱為A_(n+1)是四個運動變換矩陣的乘積:
化簡結果為:
故關節0與關節1之間的變換可以簡化為:
余下關節為:
得到以上變換的A矩陣,在機器人的基座與手之間的總變換則為:
2.4 繪制機器人工作空間
??使用MATLAB進行編程,參照D-H表計算旋轉矩陣,可得仿真效果圖為:
三、誤差分析
??對于各個連桿之間的距離d的計算存在一定的估算,導致繪制出來的工作空間圖與實際存在偏差,實際輪廓與實際效果大致不差。
四、仿真心得
??本次仿真將機器人運動學里的D-H參數表知識加以運用,理解相對變換之間的聯系;機器人運動學求正解的知識是新接觸,把它們應用到仿真實踐中,是一次全新的體驗,只有把理論知識研究透應用到實際,可以做到事半功倍。從最開始在CSDN上尋找教程,發現找到的D-H表的不一樣,一度以為是自己弄錯概念,進行深一步的學習研究,才發現D-H表有兩種構建形式,即改進型和標準型,課本上使用的是標準型。再反推回來,D-H表建系也踩了一個坑,Z軸是繞旋轉的右手螺旋定則,但X軸的選定要和世界坐標系一致,不然畫出來的工作空間和實際不符合。自己動手做,自己編程寫代碼,整整兩天下來,雖然累但收獲頗豐,既提高了自學能力,能增長了在網絡的海洋中尋找碎片知識的能力,這是無可比擬的。從開始構思的手寫矩陣變換繪制機械臂,再到后來的調用robotic toolbox工具包來驗證結果,每一次嘗試都在往真理再靠一步。
??本次仿真既增長了對于機器人運動學的知識,了解機器人世界的坐標,也提高了MATLAB的實操仿真能力,是一次異于平常增長能力的學習機會。
五、代碼展示
做法一:矩陣求解運算
clear all
close all
clc
%%設置不旋轉軸
A4=RT(0,100,0,-pi/2);
A5=RT(0,0,0,pi/2);
A6=RT(0,50,0,0);
%%設置矩陣存儲參數
x=[];y=[];z=[];
% %弧度與角度轉換
per=pi/180;
% %計算工作空間
for th1 =-230*per:10*per:230*perfor th2=-115*per:5*per:113*perfor th3 = -205*per:5*per:55*perA1=RT(th1,327,0,pi/2);A2=RT(th2,0,225,0); A3=RT(th3,0,0,pi/2);T= A1*A2*A3*A4*A5*A6; x=[x T(1,4)];y=[y T(2,4)];z=[z T(3,4)]; endend
end
%%繪制圖形
plot3(x,y,z,'ro','MarkerFaceColor','w','MarkerSize', 5);hold on;
xlabel('X');ylabel('Y');zlabel('Z');grid on;
function OUTPUT=RT(th1,d,a,th2)OUTPUT=[cos(th1) -sin(th1)*cos(th2) sin(th1)*sin(th2) a*cos(th1);sin(th1) cos(th1)*cos(th2) -cos(th1)*sin(th2) a*sin(th1);0 sin(th2) cos(th2) d;0 0 0 1];
end
**做法二:robotic toolbox機器人工具包**
clear all
clc
%建立機器人模型
% theta d a alpha offset
% ML1=Link([0 0 0 0 0 ]);
ML2=Link([pi/2 327 0 pi/2 0 ]);
ML3=Link([pi/2 0 225 0 0 ]);
ML4=Link([0 0 0 pi/2 0 ]);
ML5=Link([0 100 0 -pi/2 0 ]);
ML6=Link([0 0 0 pi/2 0 ]);
ML7=Link([0 50 0 0 0 ]);
robot=SerialLink([ML2 ML3 ML4 ML5 ML6 ML7],'name','modified');
robot.plot([0,0,0,0,0,0]);
% robot.teach()
% hold on;joint1_angle_max=230/180*pi;
joint1_angle_min=-230/180*pi;
joint2_angle_max=113/180*pi+pi/2;
joint2_angle_min=-115/180*pi+pi/2;
joint3_angle_max=55/180*pi;
joint3_angle_min=-205/180*pi;
joint4_angle_max=230/180*pi;
joint4_angle_min=-230/180*pi;
joint5_angle_max=120/180*pi;
joint5_angle_min=-125/180*pi;
joint6_angle_max=400/180*pi;
joint6_angle_min=-400/180*pi;
%%步長
h=0.1
x=[];y=[];z=[];
for i=0%joint1_angle_min:0.5:joint1_angle_maxfor j=joint2_angle_min:h:joint2_angle_maxfor k=joint3_angle_min:0.05:joint3_angle_maxl=0;m=0;n=0;T=robot.fkine([i j k l m n]);x=[x T.t(1)];y=[y T.t(2)];z=[z T.t(3)];endend
end
plot3(x,y,z,'ro','MarkerFaceColor','w','MarkerSize', 5);hold on;
hold on;
記錄第一次編輯CSDN博客,如有問題歡迎批評指出。
總結
以上是生活随笔為你收集整理的绘制IRB1200机器人工作空间的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。