机械臂——六轴机械臂构型分析与MATLAB建模

环境:MATLAB 2017B+Robotics Toolbox 9.10.0

一、六轴机械臂构型分析

关节机器人,是应用于当前工业领域中最为广泛的工业机器人的构型之一,它也被称作关节型手臂机器人或者关节型机械手臂。它可应用于诸多工业领域,例如喷漆、自动装配、焊接等工作。多自由度关节机器人中以六自由度关节机器人最为常见,它的关节分布参考人体手臂进行设计,以与地面垂直的腰部旋转轴为主轴,带动小臂旋转的肘部旋转轴以及小臂前端的手腕等构成,手腕部分通常拥有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.

猜你喜欢

转载自blog.csdn.net/Kalenee/article/details/81990130