机械臂建模实战篇—基于改进DH法

  • Post author:
  • Post category:其他


模型选用的是类似长得与UR5机械臂样子的GLUON_6L3机械臂,如下图

GLUON_6L3

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下面的程序是基于matlab2020b版本编写,机器人工具箱9.10。不一定要求你们的版本与我的一样,只是有的太低版本可能运行不了,再此说明一下。

pc配置:AMD5800 16G RTX3060 运行需要大概3分钟左右。如果你的电脑运行一直定住等等就行,不知道为什么运行这么慢。换成米制的时候,运行会很快。

clear;clc;close all;

% DH建模部分theta、 d、 a、 alpha

L(1)=Link([ 0, 1015, 0, 0],‘modified’);

L(2)=Link([ 0, 79.2, 0, -pi/2],‘modified’);

L(3)=Link([ 0, -79.2, 173, 0],‘modified’);

L(4)=Link([ 0, 79.2, 173, 0],‘modified’);

L(5)=Link([ 0, 79.2, 0, pi/2],‘modified’);

L(6)=Link([ 0, 41.7, 0, -pi/2],‘modified’);

L(2).offset=-pi/2; %设定关节变量偏移量

L(4).offset=pi/2;

robot= SerialLink(L, ‘name’, ‘GLUON_6L3’); %建立机械臂模型

figure(1)

robot.plot([0 0 0 0 0 0]) %显示建立的机器人模型

robot.teach %可以进行施教

robot.display %打印出机器人模型的信息

%调整坐标轴及视野

set(gca,‘XLim’,[-600,600]); %将X轴范围设定为[-400,400]

set(gca,‘YLim’,[-600,600]); %将X轴范围设定为[-500,500]

set(gca,‘ZLim’,[0,600]); %将Z轴范围设定为[0,600],最小值设定为0,可以消除模型下面的长杆

set(gca,‘XDir’,‘reverse’); %将x轴方向设置为反向

set(gca,‘YDir’,‘reverse’); %将Y轴方向设置为反向

set(gca,‘View’,[-85,10]); %设定视野方向角和俯仰角

%设定关节变量范围,deg2rad()角度转弧度

L(1).qlim=[deg2rad(-140) deg2rad(140)];

L(2).qlim=[deg2rad(-90) deg2rad(90)];

L(3).qlim=[deg2rad(-140) deg2rad(140)];

L(4).qlim=[deg2rad(-140) deg2rad(140)];

L(5).qlim=[deg2rad(-140) deg2rad(140)];

L(6).qlim=[deg2rad(-360) deg2rad(360)];

%轨迹规划参数设置

init_ang = [0,0,0,0,0,0]; %起始角度

targ_ang = [pi/3,pi/3,pi/4,pi/6,-pi/4,pi/6]; %停止角度

T =(0:0.1:6); %整个过程6秒,步长0.1秒

%5次多项式关节空间轨迹规划函数jtraj()

[q,qd,qdd] = jtraj(init_ang,targ_ang,T); %直接得到角度、角速度、角加速度的的序列

figure(2);

title(‘规划过程’);

Txy=robot.fkine(q); %正运动学

henji=transl(Txy);

x = henji(:,1);y = henji(:,2);z = henji(:,3);

plot3(x,y,z,‘b’); %绘制轨迹图像

hold on;

robot.plot(q); % 轨迹痕迹显示

figure(3);

TT=robot.fkine(q); %正运动学

guiji=transl(TT);

x = guiji(:,1);y = guiji(:,2);z = guiji(:,3);

plot3(x,y,z,‘r’); %轨迹图像绘制

xlabel(‘X/mm’),ylabel(‘Y/mm’),zlabel(‘Z/mm’);

hold on

title(‘空间轨迹’);

text(guiji(1,1),guiji(1,2),guiji(1,3),‘A点’);

text(guiji(61,1),guiji(61,2),guiji(61,3),‘B点’); %0.1步长,6秒仿真时间

%画关节位置、速度、加速度曲线,三个绘制在一幅图中,每个里面包含6个关节

figure(4)

subplot(3,1,1);

plot(T,q);title(‘关节位移’);xlabel(‘时间t/s’);ylabel(‘位移s/rad’);

legend(‘关节1’,‘关节2’,‘关节3’,‘关节4’,‘关节5’,‘关节6’,‘location’,‘northeastoutside’ );grid on;

subplot(3,1,2);

plot(T,qd);title(‘关节速度’);xlabel(‘时间t/s’);ylabel(‘速度v/(rad/s)’);

legend(‘关节1’,‘关节2’,‘关节3’,‘关节4’,‘关节5’,‘关节6’,‘location’,‘northeastoutside’ );grid on;

subplot(3,1,3);

plot(T,qdd);title(‘关节加速度’);xlabel(‘时间t/s’);ylabel(‘加速度a/(rad/s^2)’);

legend(‘关节1’,‘关节2’,‘关节3’,‘关节4’,‘关节5’,‘关节6’,‘location’,‘northeastoutside’ );grid on;

运行结果如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

关节角度均为0时,即A点

在这里插入图片描述

B点(pi/3,pi/3,pi/4,pi/6,-pi/4,pi/6)

在这里插入图片描述

换成米制单位,就很快。这么耗费电脑计算量毫米

在这里插入图片描述

在这里插入图片描述

米制单位

clear;clc;close all;

% DH建模部分theta、 d、 a、 alpha

L(1)=Link([ 0, 0.1015, 0, 0],‘modified’);

L(2)=Link([ 0, 0.0792, 0, -pi/2],‘modified’);

L(3)=Link([ 0, -0.0792, 0.173, 0],‘modified’);

L(4)=Link([ 0, 0.0792, 0.173, 0],‘modified’);

L(5)=Link([ 0, 0.0792, 0, pi/2],‘modified’);

L(6)=Link([ 0, 0.0417, 0, -pi/2],‘modified’);

L(2).offset=-pi/2; %设定关节变量偏移量

L(4).offset=pi/2;

robot= SerialLink(L, ‘name’, ‘GLUON_6L3’); %建立机械臂模型

figure(1)

% robot.plot([pi/3 pi/3 pi/4 pi/6 -pi/4 pi/6]) %显示建立的机器人模型

robot.plot([0 0 0 0 0 0])

robot.teach %可以进行施教

robot.display %打印出机器人模型的信息

%调整坐标轴及视野

set(gca,‘XLim’,[-0.6,0.6]); %将X轴范围设定为[-400,400]

set(gca,‘YLim’,[-0.6,0.6]); %将X轴范围设定为[-500,500]

set(gca,‘ZLim’,[0,0.6]); %将Z轴范围设定为[0,600],最小值设定为0,可以消除模型下面的长杆

set(gca,‘XDir’,‘reverse’); %将x轴方向设置为反向

set(gca,‘YDir’,‘reverse’); %将Y轴方向设置为反向

set(gca,‘View’,[-85,10]); %设定视野方向角和俯仰角

注:个人学习,程序仅供参考。感谢CSDN博主慕羽的机械臂模型及机械臂建模程序部分。

在这里插入图片描述



版权声明:本文为weixin_46169171原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。