Matlab 机器人工具箱 (一)DH参数和正逆运动学

这篇具有很好参考价值的文章主要介绍了Matlab 机器人工具箱 (一)DH参数和正逆运动学。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者为大三学生,本博客为边学习边使用,如有错误,请见谅。

在文章结束附加代码。

一、DH参数

matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

前置坐标系对应改进版:modified

后置坐标系对应标准版:standard

因为学习过程中大部分为前置坐标系,故本文仅讨论前置坐标系。

二、Link函数

matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

用的最习惯的是如下的代码:

 L =Link([theta  D A alpha sigma offset], CONVENTION)

参数‘alpha’代表扭转角 ,参数‘A’代表杆件长度,参数‘theta’代表关节角,参数‘D’代表横距,参数‘sigma’代表关节类型:0代表旋转关节,非0代表移动关节。

参数CONVENTION可以取‘standard’和‘modified’,其中‘standard’代表采用标准的D-H参数,‘modified’代表采用改进的D-H参数。

一般是四个参数起步,如果输入的不到六个参数,则依次取前几项。

移动关节的移动轴为Z轴,在变换的时候记得特别注意。

操作函数

%  A               连杆变换矩阵
%  RP            关节类型: 'R' 或 'P'
%  friction      摩擦力
%  nofriction    摩擦力忽略

%  dyn           显示动力学参数
%  islimit       测试关节是否超出软限制
%  isrevolute    测试是否为旋转关节
%  isprismatic   测试是否为移动关节
%  display       连杆参数以表格形式显示
%  char          转为字符串

例如:
matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

三、SerialLink函数

matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

L(1) = Link([theta1, D1, A1, alpha1, sigma1,offset1], 'modified');
L(2) = Link([theta2, D2, A2, alpha2, sigma2,offset2], 'modified');
L(3) = Link([theta3, D3, A3, alpha3, sigma3,offset3], 'modified');
L(4) = Link([theta4, D4, A4, alpha4, sigma4,offset4], 'modified');
robot = SerialLink(L,'name','four');

这个创建还是比较简单的。

操作函数

%  plot          以图形形式显示机器人

%  teach         驱动机器人

%  isspherical   测试机器人是否有球腕关节

%  islimit       测试机器人是否抵达关节极限

%  fkine         前向运动学求解

%  ikine6s       6旋转轴球腕关节机器人的逆向运动学求解

%  ikine3        3旋转轴机器人的逆向运动学求解

%  ikine         采用迭代方法的逆向运动学求解

%  jacob0        在世界坐标系描述的雅克比矩阵

%  jacobn        在工具坐标系描述的雅克比矩阵

%  maniplty      可操纵性度

%  jtraj         关节空间轨迹

%  accel         关节加速度

%  coriolis      关节柯氏力

%  dyn           显示连杆的动力学属性

%  fdyn          关节运动

%  friction      摩擦力

%  gravload      关节重力

%  inertia       关节惯性矩阵

%  nofriction    设置摩擦力为0

%  rne           关节的力/力矩

%  payload       在末端坐标系增加负载

%  perturb       随机扰动连杆的动力学参数

例如:

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

matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

(紧跟着上面的代码)

正解 fkine

在输入未知参数的时候,会出现数据溢出的情况,于是我去查了fkine的源码

matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

matlab求解标准型机器人逆运动学的函数,matlab,机器人,算法

如下是源码的解析

这个函数用于计算给定关节配置下机器人末端执行器的位姿。以下是函数的一些关键部分解释:

  • 在输入参数中,robot 是一个 SerialLink 对象,q 是关节坐标。如果 q 是矩阵,则会计算每个关节坐标对应的末端执行器位姿,并返回结果的三维矩阵。
  • 如果 opt.deg 为真,则假设关节坐标是角度而不是弧度(默认为假)。
  • 如果需要输出所有关节坐标对应的各个关节坐标系的位姿,可以通过设置 nargout 大于 1 来实现。
  • L 是机器人的关节链信息。
  • 如果 q 是一个列向量(关节坐标),则会依次计算每个关节坐标对应的变换矩阵,并将其与之前的变换矩阵相乘。
  • 如果 q 是一个矩阵(多个关节坐标),则会循环计算每个关节坐标对应的变换矩阵,并将结果存储在 t 中。

这个函数的作用是根据给定的关节坐标计算机器人末端执行器的位姿。它可以根据单个关节坐标或多个关节坐标计算。并且在识别接收到符号函数的时候,会将矩阵转换为符号矩阵进行运算。

也就是说,其实不应该出现数据溢出的情况。那这是为什么呢

其实是由于浮点数运算导致的。

如果一个浮点数矩阵与含符号变量的矩阵相乘,又恰好涉及到0的运算,就会出现数据溢出等情况。(根据实际操作得出结论,不知道具体原理,欢迎大佬在评论区探讨)

本周作业为一个四关节自由度的正运动学解算,用符号参数表示最终结果。我写了如下代码。

syms s1 s2 s3 s4 l0 l2 d4 real;
theta(1) = 0; D(1) = 0;  A(1) = 0;  alpha(1) = 0;     sigma(1)=0; offset(1) = 0;
theta(2) = 0; D(2) = 0;  A(2) = 0;  alpha(2) = pi/2;  sigma(2)=0; offset(2) = 0;
theta(3) = 0; D(3) = 0;  A(3) = 1;  alpha(3) = 0;     sigma(3)=0; offset(3) = 0;
theta(4) = 0; D(4) = 1; A(4) = 0;  alpha(4) = pi/2;  sigma(4)=1; offset(4) = 0;
%DH法建立模型,关节转角,关节距离,连杆长度,连杆转角,关节类型(0转动,(1)移动),'standard':建立标准型D-H参数
L((1)) = Link([theta(1), D(1), A(1), alpha(1), sigma(1),offset(1)], 'modified');
L((2)) = Link([theta(2), D(2), A(2), alpha(2), sigma(2),offset(2)], 'modified');
L((3)) = Link([theta(3), D(3), A(3), alpha(3), sigma(3),offset(3)], 'modified');
L((4)) = Link([theta(4), D(4), A(4), alpha(4), sigma(4),offset(4)], 'modified');
robot = SerialLink(L,'name','four');
robot.plot([0 0 0 0],'workspace',[-10,10,-10,10,-10,10)];
robot.teach();


 

逆解ikine

     

该函数用于求解机器人的逆运动学问题,即根据机器人末端执行器的位置和姿态,计算出机器人关节角度值。主要介绍了函数的使用方式和参数及返回值的含义,其中包括:

  1. 输入参数:
  • T:表示末端执行器的位置和姿态,是一个4x4的齐次变换矩阵。
  • Q0:表示初始估计的机器人关节角度值(可选参数,默认为0)。
  • M:表示掩码矩阵,用于指定忽略的自由度(可选参数)。
  • OPTIONS:表示优化选项(可选参数)。
  1. 返回值:
  • Q:表示计算得到的机器人关节角度值,是一个MxN的矩阵。

其中,M表示末端执行器位置和姿态的数量,N表示机器人的自由度数目。

此外,注释还介绍了一些注意事项,如:

  • 该函数使用伪逆方法和迭代算法求解逆运动学问题。
  • 逆运动学解不唯一,取决于初始估计值。
  • 伪逆方法可以在奇异点处得到解,但是在零空间内的关节角度值是任意的。

另外,ikine函数无法接受一个含函数参量的T矩阵进行运算,这样会出现一些问题,会报错。

这就说明,用参数表示的时候只能手搓。

作业是求一个六自由度的机械臂的逆运算,还是用参数表示,出题人真的动脑子?

结束!

   文章来源地址https://www.toymoban.com/news/detail-781575.html

到了这里,关于Matlab 机器人工具箱 (一)DH参数和正逆运动学的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】

    rvctools下载地址:rvctools下载 截图如下,点击红色箭头指示的 “ Download Shared Folder ” 即可下载 下载之后进行解压,解压到 D:MATLABtoolbox 这个工具箱目录,这个安装路径根据自己的情况来选择,没有安装MATLAB,感兴趣的可以查阅:MatLab的下载、安装与使用(亲测有效) 然后我们

    2024年02月05日
    浏览(37)
  • MATLAB机器人工具箱详解1—RTB 10.4版本简介及安装

    机器人学工具箱(Robotic Toolbook for Matlab) 是matlab中专门用于机器人仿真的工具箱,在机器人建模、轨迹规划、控制、可视化方面使用非常方便。本次安装环境为Windows 11+MATLAB 2023a,所安装的机器人工具箱的版本为RTB 10.4,后续将有详细的讲解不同的机器人工具箱的版本区别。

    2024年02月05日
    浏览(34)
  • Matlab机械臂建模:机器人工具箱的使用&&导入自己的机械臂模型

            本文主要介绍 如何在matlab中建立机械臂模型( 前提要下载了Robotics Toolbox机器人工具箱~ ),并进行基于正逆运动学计算的轨迹运动 。对于已有的Solidworks机械臂三维模型,如何导入Matlab,并对其进行运动控制。         关于 机器人工具箱的安装 及函数的详细

    2024年02月07日
    浏览(36)
  • Matlab 机器人工具箱中SE3是什么,如何转换成double

    先看如下代码 ML1 = Link([0   0 0     pi/2      0     ],\\\'modified\\\'); ML2 = Link([0 0     1    0     0   ],\\\'modified\\\'); ML3 = Link([0 0     1     0     0     ],\\\'modified\\\'); rob = SerialLink([ML1 ML2 ML3],\\\'name\\\',\\\'modified\\\'); rob.tool=[eye(3),[1;0;0];0 0 0 1]; rob.plot([40,20,30]/180*pi,\\\'scale\\\',0.5,\\\'delay\\\',0.00001

    2024年02月09日
    浏览(41)
  • 使用Matlab机器人工具箱完成四元数到旋转矩阵的转换,附程序

    在进行机械臂操作或写论文时,经常需要进行四元数、旋转矩阵、欧拉角等的转换。 此时,我们利用matlab里的机器人工具箱(Peter 开发)内置的函数就可完成,具体程序如下: 环境:Matlab2020b+robotics toolbox(安装方法在前几期文章里有) 此时运行matlab可得以下结果: 重要注

    2024年02月13日
    浏览(35)
  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

    随着我们了解到机器人如何建立运动学模型和动力学模型之后,我们可以使用Matlab中的仿真工具箱内来对模型的准确性进行验证,并且可以通过内置的函数进行简单的轨迹规划和可视化观察,本节涉及到的工具箱是MATLAB自带的Robotics Toolbox工具箱。 平移与旋转函数: SE2(x,y,t

    2024年02月07日
    浏览(34)
  • 【RTB机器人工具箱学习记录】轨迹规划实例

    给定位置: 位姿插值: trinterp() trinterp(T0, T1, M) ​ T0:初始变换矩阵 ​ T1:结束变换矩阵 ​ M: 线性插值轨迹动画:(轨迹如上图左所示) 五次多项式插值轨迹动画:(轨迹如上图右所示,和上面用mtraj遍历方式的轨迹相同) 笛卡尔轨迹 ctraj() : TC = ctraj(T0, T1, N) ​ T0:初始变

    2023年04月22日
    浏览(33)
  • 2023超级AI大脑-开源AI工具箱网站 支持机器人聊天和AI绘画等

    超级AI大脑是一个开源AI工具箱,基于Spring Boot架构,支持web,Android,IOS,H5多端应用,使用了OpenAI的ChatGPT模型实现了智能聊天机器人。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。同时也支持画图,用户输入文本,便可以自动制作文

    2024年02月11日
    浏览(61)
  • 机器人修正DH参数(MDH)和标准DH(SDH)参数

    1.1.1 连杆坐标系定义 (a) 运动链中间位置连杆坐标系{ i {i} i }的定义 固连在连杆i上的固连坐标系称为坐标系{ i i i } O i O_i O i ​ 原点:关节轴i和i+1的交点或关节轴i和i+1公垂线与关节轴i的交点 Z ^ i hat{Z}_i Z ^ i ​ 轴:关节轴 i i i X ^ i hat{X}_i X ^ i ​ 轴:沿 Z ^ i hat{Z}_i Z ^ i ​

    2024年03月14日
    浏览(38)
  • Matlab机器人仿真(五):利用DH法建立六轴机器人(复现,整合,记录)

    DH法包括两种:一种为标准DH法,另一种为改进型DH法,如图所示(图片转载来自https://blog.csdn.net/qq_26565435/article/details/91460988): 例子:建立一个常见的简单3轴机器人: 在建立一个常见的六轴机器人: 例子如图所示: case1: case 2: case 3: 在matlab中建立机械臂模型 MATLAB代码:

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包