2、matlab串联机器人正反解计算

该博客详细介绍了如何在MATLAB中进行串联机器人的正反解计算,包括使用工具箱计算、手写算法两种方式。作者提供了手写正解算法的两种方法,并对MDH矩阵进行了说明。此外,还通过Main主程序对比了正解和逆解计算结果,并对手写逆解计算结果进行了验证,发现工具箱的逆解计算存在不准确的情况。
摘要由CSDN通过智能技术生成

目录

1、程序和计算

(1)程序打包下载

(2)计算结果

2、使用工具箱 正反解计算

3、手写正解算法

(1)手写正解计算方法1

(2)手写正解计算方法2

(3)MDH矩阵说明

4、手写逆解计算

5、Main主程序运行

(一)正解计算结果

(1)手写正解1结果

(2) 手写正解2结果

(3) 工具箱正解结果

(二)反解计算结果

(1)工具箱反解结果

(2)手写反解结果

(三) 逆解计算结果带入正解验证

(1)手写逆解结算结果验证

(2)工具箱逆解结果计算结果带入正解计算


1、程序和计算

(1)程序打包下载

程序包含:工具箱正反解计算、手写算法正反解计算。

工程链接:6轴机器人手写正反解Matlab算法.rar-制造文档类资源-CSDN下载

(2)计算结果

①正解结果

②逆解结果

2、使用工具箱 正反解计算

clear;
clc;
%建立机器人模型
%alpha:连杆扭角;?
%a:连杆长度;?
%theta:关节转角;?
%d:关节距离;?
%offset:偏移

%       theta    d        a        alpha     offset
L1=Link([0       0.4      0.025    pi/2      0     ]);  %定义连杆的D-H参数
L2=Link([pi/2    0        0.56     0         0     ]);
L3=Link([0       0        0.035    pi/2      0     ]);
L4=Link([0       0.515    0        pi/2      0     ]);
L5=Link([pi      0        0        pi/2      0     ]);
L6=Link([0       0.08     0        0         0     ]);
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','BiPan');   %连接连杆,机器人取名BiPan
%theta=[0,0,0,0,0,0];           %指定的关节角
theta=[0,pi/2,0,0,pi,0];        %指定的关节角
p=robot.fkine(theta)            %fkine正解函数,根据我们给定的关节角theta,求解出末端位姿p
q=robot.ikine(p)                %ikine逆解函数,根据我们给定的末端位姿p,求解出关节角q

robot.plot([0,pi/2,0,0,pi,0]);  %输出机器人模型,后面的六个角为输出时的theta姿态
teach(robot);                   %调整各个关节角度

运行结果

3、手写正解算法

(1)手写正解计算方法1

(推荐使用方法2,方法1是根据参数简化的)

改进D-H模型

%改进DH模型——手写正解(T01-T65矩阵内部都是经过化简得)
function [T06]=mymodfkine(theta1,theta2,theta3,theta4,theta5,theta6)
%    ti   di     ai-1     alphai-1 
MDH=[theta1   0       0         0;
     theta2   0       0.180    -pi/2;
     theta3   0       0.600     0;
     theta4   0.630   0.130    -pi/2;
     theta5   0       0         pi/2;
     theta6   0       0        -pi/2];
T01=[cos(MDH(1,1))                 -sin(MDH(1,1))                 0               MDH(1,3);
     cos(MDH(1,4))*sin(MDH(1,1))    cos(MDH(1,4))*cos(MDH(1,1))  -sin(MDH(1,4))  -MDH(1,2)*sin(MDH(1,4));
     sin(MDH(1,4))*sin(MDH(1,1))    sin(MDH(1,4))*cos(MDH(1,1))   cos(MDH(1,4))   MDH(1,2)*cos(MDH(1,4));
     0                              0                             0               1];
T12=[cos(MDH(2,1))                 -sin(MDH(2,1))                 0               MDH(2,3);
     cos(MDH(2,4))*sin(MDH(2,1))    cos(MDH(2,4))*cos(MDH(2,1))  -sin(MDH(2,4))  -MDH(2,2)*sin(MDH(2,4));
     sin(MDH(2,4))*sin(MDH(2,1))    sin(MDH(2,4))*cos(MDH(2,1))   cos(MDH(2,4))   MDH(2,2)*cos(MDH(2,4));
     0                              0                             0               1];
T23=[cos(MDH(3,1))                 -sin(MDH(3,1))                 0               MDH(3,3);
     cos(MDH(3,4))*sin(MDH(3,1))    cos(MDH(3,4))*cos(MDH(3,1))  -sin(MDH(3,4))  -MDH(3,2)*sin(MDH(3,4));
     sin(MDH(3,4))*sin(MDH(3,1))    sin(MDH(3,4))*cos(MDH(3,1))   cos(MDH(3,4))   MDH(3,2)*cos(MDH(3,4));
     0                              0                             0               1];
T34=[cos(MDH(4,1))                 -sin(MDH(4,1))                 0               MDH(4,3);
     cos(MDH(4,4))*sin(MDH(4,1))    cos(MDH(4,4))*cos(MDH(4,1))  -sin(MDH(4,4))  -MDH(4,2)*sin(MDH(4,4));
     sin(MDH(4,4))*sin(MDH(4,1))    sin(MDH(4,4))*cos(MDH(4,1))   cos(MDH(4,4))   MDH(4,2)*cos(MDH(4,4));
     0                              0                             0               1];
T45=[cos(MDH(5,1))                 -sin(MDH(5,1))                 0               MDH(5,3);
     cos(MDH(5,4))*sin(MDH(5,1))    cos(MDH(5,4))*cos(MDH(5,1))  -sin(MDH(5,4))  -MDH(5,2)*sin(MDH(5,4));
     sin(MDH(5,4))*sin(MDH(5,1))    sin(MDH(5,4))*cos(MDH(5,1))   cos(MDH(5,4))   MDH(5,2)*cos(MDH(5,4));
     0                              0                             0               1];
T56=[cos(MDH(6,1))                 -sin(MDH(6,1))                 0               MDH(6,3);
     cos(MDH(6,4))*sin(MDH(6,1))    cos(MDH(6,4))*cos(MDH(6,1))  -sin(MDH(6,4))  -MDH(6,2)*sin(MDH(6,4));
     sin(MDH(6,4))*sin(MDH(6,1))    sin(MDH(6,4))*cos(MDH(6,1))   cos(MDH(6,4))   MDH(6,2)*cos(MDH(6,4));
     0                              0                             0               1];

T06=T01*T12*T23*T34*T45*T56;

(2)手写正解计算方法2

和《5、matlab串联机器人DH改进型-手写正解函数(推荐)》手写正解计算相同。

改进D-H模型

%改进型D-H建模
function [T06]=myfkine2(theta1,theta2,theta3,theta4,theta5,theta6)
 
%    theta      d         a           alpha
%    关节转角   关节距离   连杆长度     连杆扭角
 
% MDH=[theta1     0.4       0.025       pi/2;
%      theta2     0       
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
并联机器人正反是指根据机器人的关节位置或末端执行器的位姿反推出机器人的关节角度或末端执行器的运动学参数的过程。Matlab是一种常用的科学计算软件,也广泛应用于机器人领域。在Matlab中进行并联机器人正反编程可通过以下步骤实现: 1. 正解编程:根据机器人的运动学模型,通过定义机器人的DH参数、关节角度或末端执行器的位姿,利用正解公式计算机器人的关节位置或末端执行器的位姿。可以使用Matlab中的矩阵运算和符号计算工具箱来简化计算过程。 2. 反编程:反是通过给定机器人的关节位置或末端执行器的位姿,计算机器人的关节角度或末端执行器的运动学参数。常用的方法包括析法和数值法。析法适用于简单的机器人模型,通过代数运算求。数值法适用于复杂的机器人模型,通过迭代算法近似求。 3. 利用Matlab进行正反编程时,可以使用Matlab中的矩阵运算、数值计算和优化工具箱,简化计算过程,提高计算效率和精度。 总结:并联机器人正反机器人运动学中的重要问题,在Matlab中进行编程实现可通过正解公式计算机器人的关节位置或末端执行器的位姿,或者通过析法或数值法计算机器人的关节角度或末端执行器的运动学参数。Matlab中的矩阵运算、符号计算和优化工具箱可提供便捷的计算方法,帮助实现并联机器人正反编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Big_潘大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值