機械臂——六軸機械臂構型分析與MATLAB建模

環境:MATLAB 2017B+Robotics Toolbox 9.10.0

機械臂逆解計算:https://blog.csdn.net/Kalenee/article/details/82155800

 

一、六軸機械臂構型分析

關節機器人,是應用於當前工業領域中最爲廣泛的工業機器人的構型之一,它也被稱作關節型手臂機器人或者關節型機械手臂。它可應用於諸多工業領域,例如噴漆、自動裝配、焊接等工作。多自由度關節機器人中以六自由度關節機器人最爲常見,它的關節分佈參考人體手臂進行設計,以與地面垂直的腰部旋轉軸爲主軸,帶動小臂旋轉的肘部旋轉軸以及小臂前端的手腕等構成,手腕部分通常擁有2到3個自由度。因爲該構型機器人的動作空間與球體類似,所以也被稱爲多關節球面機器人。自由度關節機器人的主要優點有兩個,第一爲可通過連續控制實現複雜的運動軌跡,第二爲通過各關節配合可獲得多種末端姿態。六自由度關節機器人根據不同的工作環境也有不同的類別,下圖是幾種較爲常見的六自由度關節機器人。

                             

                         a) 垂直六關節L型手腕機器人      b)垂直六關節串聯機器人             c)關節碼垛機器人

 

二、數學模型的建立與分析

 標準D-H參數法常用於建立關節型機器人的數學模型,D-H參數法是一種對連桿的座標描述,而關節機器人本質上就是一系列連桿通過關節連接起來而組成的空間開式運動鏈。對於連桿本身,其功能在於保持其兩端的關節軸線具有固定的幾何關係,連桿的特性由軸線決定,如下圖所示,通常用四個連桿參數來描述,連桿長度a _i,連桿扭轉角\alpha _i,連桿偏移量d_i和關節角\Theta _i

 

這裏所設計的機械臂由六個轉動副構成,關節分佈方式參考現有成熟的工業機器人進行設計,如下圖所示。第一軸爲垂直於地面的旋轉軸,第二軸、第三軸和第五軸都爲平行與地面的旋轉軸,第四軸和第六軸則是與連桿方向平衡的旋轉軸。

根據標準D-H參數法,建立機械臂的D-H參數模型,其對應的參數表如下表所示,該表的參數根據自己的機器人實物進行設定。

以上表的參數構建機械臂的模型如下圖所示。 

機械臂建模MATLAB程序

%機械臂爲六自由度機械臂
clear L;

%角度轉換
du=pi/180;     %度
radian=180/pi; %弧度

%關節長度
L1=4.324;L2=16;L3=2.35;L4=16.085;L5=14.675;

%% 字符串法建立模型,
q0=0;L0=0;%過渡關節
% hand = 'Rz(q1).Tz(L1).Ry(q2).Tz(L2).Ry(q3).Tz(L3).Rx(q4).Tx(L4).Ry(q5).Rz(q6).Tz(L5)';
% dhand = DHFactor(hand)
% six_hand =eval(dhand.command('hand'));
plotopt = {'noraise', 'nowrist', 'nojaxes', 'delay',0};
% tool_dh=[1 0 0 0;
%          0 1 0 0;
%          0 0 1 0;
%          0 0 0 1];
% six_hand_link=SerialLink(six_hand,'name','six hand','tool',tool_dh)

%% DH法建立模型,關節角,連桿偏移,連桿長度,連桿扭轉角,關節類型(0轉動,1移動)
L(1) = Link( 'd',L1  ,  'a',0,   'alpha',-pi/2, 'offset',0   );
L(2) = Link( 'd',0   ,  'a',-L2, 'alpha',0    , 'offset',pi/2);
L(3) = Link( 'd',0   ,  'a',-L3, 'alpha',pi/2 , 'offset',0   );
L(4) = Link( 'd',L4  ,  'a',0 ,  'alpha',-pi/2, 'offset',0   );
L(5) = Link( 'd',0   ,  'a',0,   'alpha',pi/2 , 'offset',pi/2);
L(6) = Link( 'd',L5  ,  'a',0,   'alpha',0   ,  'offset',0   );
tool_char=[1 0 0 0;
           0 1 0 0;
           0 0 1 0;
           0 0 0 1];
six_link=SerialLink(L,'name','six link','tool',tool_char);

%顯示機械臂
T_orgink=six_hand_link.fkine([0 0 0 0 pi/2 0 0])
figure(1)
hold on 
six_hand_link.plot([0 0 0 0 0 0], plotopt{:});
hold off

 

三、工作空間的計算

機器人的工作空間是機器人在運轉過程中,手部參考點在空間所能達到的點的集合。工作空間是一種重要的運動學指標,常用於衡量機器人活動範圍,機器人無法到達處於工作空間以外的目標。機器人的工作空間的種類有三種,分別是全工作空間,可達工作空間和靈巧工作空間,本課題中計算的是機器人給定所有位姿時,末端可到達目標點的集合,即全工作空間。

這裏採用數值法進行機器人全工作空間的繪製,具體流程如下圖所示。首先是設置各關節角度限制,然後以某一步距值對各關節分別進行累加並計算正解獲得末端點位置,當各關節都到達最大限制角度後停止計算,最後對獲得的所有末端點進行處理繪製出機器人的邊界曲線,根據這些邊界曲線可以繪製出代表機器人的工作空間的邊界曲面。

 

繪製的工作空間如下圖所示。 

 計算工作空間MATLAB程序

%六軸機械臂工作空間計算
clc;
clear;
format short;%保留精度

%角度轉換
du=pi/180;  %度
radian=180/pi; %弧度

%% 模型導入
robot_hand;

%% 求取工作空間
    %關節角限位
    q1_s=-180;q1_end=180;
    q2_s=0;q2_end=90;
    q3_s=-90;q3_end=90;
    q4_s=-180;q4_end=180;
    q5_s=-90;q5_end=90;
    q6_s=0;q6_end=360;
    
    %計算參數
    step=30;%計算步距
    i=1;
    t=0:1:(q5_end-q5_s)/step;%產生時間向量  
    T_cell={((q1_end-q1_s)/step)*((q2_end-q2_s)/step)*((q3_end-q3_s)/step)*((q4_end-q4_s)/step)};
    
    %窮舉法正運動學計算工作空間
    tic;%tic1    
    for  q1=q1_s:step:q1_end
        for  q2=q2_s:step:q2_end
              for  q3=q3_s:step:q3_end
                  for  q4=q4_s:step:q4_end
                        qA= [q1*du q2*du q3*du  q4*du q5_s*du   0*du ];%機械手初始關節角度  
                        qAB=[q1*du q2*du q3*du  q4*du q5_end*du 0*du ];%機械手終止關節角度
                        q=jtraj(qA,qAB,t);%生成關節運動軌跡
                        T_cell{i}=fkine(six_link,q);%正向運動學仿真函數 
                        i=i+1;
                 end
             end
        end 
    end
    disp(['循環運行時間:',num2str(toc)]); 
    t1=clock;
    
    %繪製工作空間
    figure('name','六軸機械臂工作空間')
    hold on
    plotopt = {'noraise', 'nowrist', 'nojaxes', 'delay',0};
    six_link.plot([0 0 0 0 0 0], plotopt{:});
     figure_x=zeros(0,1);
     figure_y=zeros(0,1);
     figure_z=zeros(0,1);
     x=zeros((q5_end-q5_s)/step,1);
     y=zeros((q5_end-q5_s)/step,1);
     z=zeros((q5_end-q5_s)/step,1);
     for cout=1:1:i-1
         T=T_cell{cout};
         x=squeeze(T(1,4,:));
         y=squeeze(T(2,4,:));
         z=squeeze(T(3,4,:));
         figure_x=[figure_x;x];
         figure_y=[figure_y;y];
         figure_z=[figure_z;z];
     end
     plot3(figure_x,figure_y,figure_z,'r.','MarkerSize',3);
     disp(['繪製工作空間運行時間:',num2str(etime(clock,t1))]);  
     
     %獲取X,Y,Z空間座標範圍,及圓範圍用於判讀座標可靠性
     X_min=min(figure_x);
     Y_min=min(figure_y);
     Z_min=min(figure_z);
     X_max=max(figure_x);
     Y_max=max(figure_y);
     Z_max=max(figure_z);
     R_min_squre=X_min^2+Y_min^2+Z_min^2;
     R_max_squre=X_max^2+Y_max^2+Z_max^2;
     Point_range=[X_min X_max Y_min Y_max Z_min Z_max R_max_squre]
     hold off

 figure('name','機器人末端位移圖')
 subplot(3,1,1);   
 plot(t, squeeze(T(1,4,:))); xlabel('Time (s)'); ylabel('X (m)');
 subplot(3,1,2);   
 plot(t, squeeze(T(2,4,:))); xlabel('Time (s)'); ylabel('Y (m)'); 
 subplot(3,1,3);   
 plot(t, squeeze(T(3,4,:))); xlabel('Time (s)'); ylabel('Z (m)'); 

 

參考:

熊有倫. 機器人技術基礎[M]. 華中理工大學出版社, 1996.

徐衛良. 機器人工作空間分析的蒙特卡洛方法[J]. 東南大學學報(自然科學版), 1990, 20(1):1-8.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章