Matlab机械臂运动学示教演示

对于昨天的matlab程序,又进行了优化,直接将3*3姿态矩阵转为欧拉角(ZYX)显示。优化后的程序如下:

T = robot.fkine([0 0 0 0 0 0]).T
%T = robot.fkine([-0.081522 0.590650 2.562666 0.439001 1.575855 -0.840727]).T
%robot.plot([0 0 0 0 0 0])


%转出来不一致,后续有机会再研究
R = T(1:3, 1:3)
[yaw pitch roll]= dcm2angle(R, 'ZYX')
rad2deg(yaw)
rad2deg(pitch)
rad2deg(roll)


RPY = rotm2eul(R, 'ZYX')
rad2deg(RPY(1))
rad2deg(RPY(2))
rad2deg(RPY(3))

在昨天基础上,优化注释(对D-H参数注释),如何调整零位姿态。

添加示教界面,通过控制关节,直接显示逆解后位置和姿态。

优化UI视野及坐标轴范围。

最终效果如下:

ff53dc6034ecd5549228531ed96ae11d.jpeg

1、零位姿态调整

调整前如图:

c457bcc6048d558ce9c64cda8b8cb4c0.jpeg

调整后如下:

8fb900b0f9a18947543578bbe4b9b323.jpeg

旋转1、2、4关节,使得零位姿态与aubo i5机械臂一致。

2、示教正解验证

Matlab机械臂1、3关节旋转90度,如下

432bdf83fbcd5d0d0d48e7965227844a.jpeg

Aubo 机械臂做同样操作,如下:

7ce34890ec7c1c7ac794376e27a2e70b.jpeg

3、Matlab程序如下

% Link函数调用格式: L(i)=Link( [theta,D,A,alpha,sigma],‘convention’)
% 其参数与D-H参数相对应
% 前四个参数依次表示:参数‘theta’代表关节角,参数‘D’代表横距,
% 参数‘A’代表杆件长度,参数‘alpha’代表扭转角,参数‘sigma’代表关节类型:0代表旋转关节,非0代表移动关节,默认值为0。
% 参数 ‘convention’ 表示使用D-H参数法创建机器人模型的类型:
% ‘standard’表示采用标准D-H参数法创建机器人模型;‘modified’表示采用该改进D-H参数法创建机器人模型,默认值为'standard'。
clear;
clc;
%建立机器人模型
%       theta    d        a        alpha     sigma   offset
L1=Link([0       0.0985    0        0          0     pi     ],'modified'); %定义连杆的D-H参数
L2=Link([0       0.1215    0        -pi/2      0     -pi/2  ],'modified');
L3=Link([0       0         0.408    pi         0     0      ],'modified');
L4=Link([0       0         0.376    pi         0     -pi/2  ],'modified');
L5=Link([0       0.1025    0        -pi/2      0     0      ],'modified');
L6=Link([0       0.094     0        pi/2       0     0      ],'modified');




%轴的旋转限度
L(1).qlim =[-2*pi, 2*pi];
L(2).qlim =[-2*pi, 2*pi];
L(3).qlim =[-2*pi, 2*pi];
L(4).qlim =[-2*pi, 2*pi];
L(5).qlim =[-2*pi, 2*pi];
L(6).qlim =[-2*pi, 2*pi];
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','auboi5'); %连接连杆,机器人取名auboi5
%robot =SerialLink(L,'name','aubo_i5')
title("aubo_i5")


figure(1);
robot.display();
robot.teach('rpy/zyx');


%调整坐标轴及视野
set(gca,'XLim',[-1.121, 1.121]);  %将X轴范围设定
set(gca,'YLim',[-1.121, 1.121]);  %将X轴范围设定
set(gca,'ZLim',[0, 1.121]);      %将Z轴最小值设定为0,可以消除模型下面的长杆
%set(gca,'XDir','reverse');    %将x轴方向设置为反向
%set(gca,'YDir','reverse');    %将Y轴方向设置为反向
%set(gca,'View',[-85,10]);     %设定视野方向角和俯仰角

写在后面:

程序在网上都找的到,最后是拼接成一个具象的东西。

正解的原理可以简化成6个4*4矩阵连乘,逆解那个看起来就头大,不过如果最终捋顺后也就是被封装成了一个函数。

如需程序可公众号后台留言“Matlab机械臂运动学示教演示”。

欢迎关注公众号:

f6b1fa3e5f90eecd870ea8b604dcaafc.png

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值