200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 机械臂机器人——使用Matlab Robotic ToolBox建立四轴机械臂模型并实现运动控制仿真

机械臂机器人——使用Matlab Robotic ToolBox建立四轴机械臂模型并实现运动控制仿真

时间:2019-05-26 22:00:52

相关推荐

机械臂机器人——使用Matlab Robotic ToolBox建立四轴机械臂模型并实现运动控制仿真

文章目录

四轴机械臂实物Robotic ToolBox机械臂建模1.建立机械臂的D-H表建立机械臂坐标系根据坐标系建立D-H表2.代码建模机械臂运动学仿真1.正运动学仿真2.逆运动学仿真

为了能够实现机械臂的运动轨迹规划,同时更加深入学习机器人学相关理论知识,并将其运用在时间当中,我采用Robotic ToolBox建立四轴机器人模型并实现运动控制仿真,并作以记录分享。

四轴机械臂实物

Robotic ToolBox机械臂建模

1.建立机械臂的D-H表

在这里我选用的是标准D-H参数进行建模,各个参数含义如图所示:

需要注意的是:

在确定轴线时,Z轴为连杆关节的旋转轴(在这里即舵机的旋转轴),X轴为当前关节的Z轴和下一关节(一个一个往上走)的Z轴的公垂线(在这里就是机械臂杆的平行线)。

建立机械臂坐标系

坐标系建立方法:

该机械臂坐标系建立如图所示:

根据坐标系建立D-H表

首先需要做的就是给该机械臂建立D-H表

2.代码建模

%% 机械臂建模% 定义各个连杆以及关节类型,默认为转动关节% thetad a alphaL1=Link([ 0 00pi/2 ], 'standard'); % [四个DH参数], optionsL2=Link([ 0 0 0.105 0], 'standard');L3=Link([0 0 0.090], 'standard');L4=Link([0 0 0.040], 'standard');robot=SerialLink([L1,L2,L3,L4]); % 将四个连杆组成机械臂robot.name='4DOF Robotic Arm';robot.display();view(3); % 解决robot.teach()和plot的索引超出报错robot.teach();robot.plot([0 pi/2 0 0]);

机械臂运动学仿真

1.正运动学仿真

给定每个关节的转动角度,让机器人实现运动控制。

clc;clear;%% 机械臂建模% 定义各个连杆以及关节类型,默认为转动关节%thetad aalphaL1=Link([0 0 0pi/2], 'standard'); % [四个DH参数], optionsL2=Link([0 00.1050], 'standard');L3=Link([0 00.090], 'standard');L4=Link([0 00.040], 'standard');b=isrevolute(L1);robot=SerialLink([L1,L2,L3,L4],'name','Irvingao Arm'); % 将四个连杆组成机械臂robot.name='4DOF Robotic Arm';robot.display();%% 轨迹规划% 初始值及目标值init_ang=[0 0 0 0];targ_ang=[0, -pi/6, -pi/5, pi/6];step=200;[q,qd,qdd]=jtraj(init_ang,targ_ang,step); %关节空间规划轨迹,得到机器人末端运动的[位置,速度,加速度]T0=robot.fkine(init_ang); % 正运动学解算Tf=robot.fkine(targ_ang);subplot(2,4,3); i=1:4; plot(q(:,i)); title("位置"); grid on;subplot(2,4,4); i=1:4; plot(qd(:,i)); title("速度"); grid on;subplot(2,4,7); i=1:4; plot(qdd(:,i)); title("加速度"); grid on;Tc=ctraj(T0,Tf,step); % 笛卡尔空间规划轨迹,得到机器人末端运动的变换矩阵Tjtraj=transl(Tc);subplot(2,4,8); plot2(Tjtraj, 'r');title('p1到p2直线轨迹'); grid on;subplot(2,4,[1,2,5,6]);plot3(Tjtraj(:,1),Tjtraj(:,2),Tjtraj(:,3),"b"); grid on;hold on;view(3); % 解决robot.teach()和plot的索引超出报错qq=robot.ikine(Tc, 'q0',[0 0 0 0], 'mask',[1 1 1 1 0 0]); % 逆解算robot.plot(qq);

机械臂运动效果如下:

2.逆运动学仿真

在这里为了我们方便定义目标点的坐标,所以我们将a的单位改成m。

%% 机械臂建模% 定义各个连杆以及关节类型,默认为转动关节%thetad aalphaL1=Link([0 0 0pi/2], 'standard'); % [四个DH参数], optionsL2=Link([0 010.50], 'standard');L3=Link([0 090], 'standard');L4=Link([0 040], 'standard');b=isrevolute(L1);robot=SerialLink([L1,L2,L3,L4],'name','Irvingao Arm'); % 将四个连杆组成机械臂robot.name='4DOF Robotic Arm';robot.display();view(3);robot.teach();robot.plot([0 pi/2 0 0]);

参考文章:

机械臂机器人——(4)Robotics Toolbox机器人仿真报错解决1:MATLAB机器人工具箱RVC报错:Number of robot DOF must be >= the same number of 1s in the mask matrix报错解决2:matlab机器人工具箱求逆解报错Number of robot DOF must be >= the same number of 1s in the mask matrix

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。