六轴UR机械臂正逆运动学求解_MATLAB代码(标准DH参数表)

 

代码逻辑参考: https://blog.csdn.net/fengyu19930920/article/details/81144042#comments

 

2020/7/22补充:我把所有文件和机器人工具箱打包了,新来的朋友可以不往下看了,直接下载用吧。

链接:https://pan.baidu.com/s/

1n7uyCeUrw1zO1b7UGNDSnw 

%%%%%%%%%%%%%%%%%%%%%自行把上面链接放到一行,进行搜索%%%%%%%%%%%%%%%%%%%%%
提取码:csdn

2020/7/22 补充:用机器人工具箱迭代求逆解有时报错,但niyundongxue.m求逆解没问题。所以有两种方法解决:1. 注释掉工具箱求逆解过程:

%  AA=ikine(robot_UR5,A);

2. 更换下theta角度值,比如更换为:

theta=[1,1/2,1/3,1,1,1];%没有什么含义,随便取的

此博客目的在于写个能求正逆解的MATLAB程序,便于其他功能开发,比较速成,被验证可行。

2019/5/30 新编辑:已经有两个小伙伴证明了:我这个程序在我的MATLAB2017b上运行没问题,但在2018版本上就会报错,我也不知道是什么原因!!!

2019/4/25 新编辑:改正了zhengyundongxue和niyundongxue中的DH表(之前写错了,汗。。。)

背景介绍: 

本人想用    MATLAB+V-REP  仿真机器人,对机器人的正逆运动学简单写了下代码实现部分。

 首先是正运动学求解代码

MATLAB中,可以使用逆运动学方程来求解机器人的关节角度。在给定末端执行器的位置(px,py,pz)的情况下,可以使用zq_robot_qiunijie函数来计算关节角度。该函数的代码如下: function [th1,d2,th3] = zq_robot_qiunijie(px,py,pz) ToDeg = 180/pi; ToRad = pi/180; th1 = -atan2(px,py); th3 = acos((100-pz)/100); d2 = py*cos(th1)-px*sin(th1)-100*sin(th3); fprintf('th1=%4.2f \n',th1*ToDeg); fprintf('d2=%4.2f \n',d2); fprintf('th3=%4.2f \n',th3*ToDeg); end 该函数会返回关节角度th1、d2和th3,分别对应机器人的第一、二和三个关节角度。你可以将机器人执行器的位置作为输入传递给该函数,并观察输出结果来得到关节角度的值。 另外,如果你想在MATLAB中画出一个方体,并使用运动学方程计算各个点的坐标,你可以使用draw_cube函数。该函数的代码如下: function draw_cube() close all; clear; ToDeg = 180/pi; ToRad = pi/180; point1 = []; point2 = []; point3 = []; num = 1; global Link; for z = 0:5:50 for y = -25:5:25 for x = 50:5:100 [th1,d2,th3] = zq_robot_qiunijie(x,y,z); th1 = th1*ToDeg; th3 = th3*ToDeg; move = zq_robot_dh(th1,d2,th3,1); point1(num) = Link(4).p(1); point2(num) = Link(4).p(2); point3(num) = Link(4).p(3); plot3(point1,point2,point3,'r.');hold on; fprintf('point1=%4.2f \n',point1(num)); fprintf('point2=%4.2f \n',point2(num)); fprintf('point3=%4.2f \n',point3(num)); num = num + 1; end end end grid on; end 该函数会根据逆运动学方程得到的关节角度计算各个点的坐标,并在MATLAB中画出方体。你可以观察输出的点的情况来了解各个点的坐标值。 最后,如果你想在MATLAB中使用运动学方程来计算DH矩阵,请使用zhengyundongxue函数。该函数的代码如下: function [result] = zhengyundongxue(A) zeta = A(1); d = A(2); a = A(3); alf = A(4); result = [cos(zeta) -sin(zeta)*cos(alf) sin(zeta)*sin(alf) a*cos(zeta); sin(zeta) cos(zeta)*cos(alf) -cos(zeta)*sin(alf) a*sin(zeta); 0 sin(alf) cos(alf) d; 0 0 0 1]; end 该函数接收一个输入矩阵A,其中包含了逆运动学方程中的参数值。函数会根据参数值计算出DH矩阵,并返回计算结果。 综上所述,MATLAB可以通过使用逆运动学方程、运动学方程和DH矩阵来求解机器人逆运动学问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论 107
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值