Matlab机器人工具箱使用2 DH建模与加载模型

第一个mujoco仿真逆解项目

我的第一个mujoco逆解仿真如上,是自己建模的4DOF机械臂,使用几何逆解,但是没有做详细的DH建模展示PPT,因此还是使用视频教程的机械臂。

教程视频来源:【MATLAB机器人工具箱10.4 机械臂仿真教学】 https://www.bilibili.com/video/BV1q44y1x7WC/?p=2\&share_source=copy_web\&vd_source=2c56c6a2645587b49d62e5b12b253dca

这一节主要讲在matlab如何对模型进行描述,在其他的仿真软件中,我们常常用到xml、urdf、srdf等结构描述文件进行描述,实际上matlab也支持urdf,但本节的核心是如何进行DH参数建模,因此,我们使用matlab提供的类的描述,即通过对SerialLink的实例属性赋值完成描述。

至于如何从solidworks中导入自己的stl文件,这个我们之后再讲,不是本节的核心内容。

标准DH建模复习速通

建模的方式不是去填表格,那表格填不明白的,最好的方式是如下通过坐标系间的变换来建模,这位up的方法和我之前不谋而合。

即描述下一个坐标系相对于上一个坐标系做了哪些变换?

这不仅能帮助建模,更是为计算相邻连杆的变换矩阵,以至于正逆运动学打下基础。

标准DH描述包含四个参数,分别对于连杆和连接连杆的关节,分别描述了机械结构的静态特性与动态特性。

连杆参数------

连杆长度:公垂线长度,指到之间公垂线。

扭转角:轴线夹角,指从向右手方向的夹角。

关节参数------

偏距:两公垂线在轴线的距离,指在上,公垂线与的距离。

关节角:两公垂线在关节处夹角,指在上,公垂线与的夹角。

当关节i是移动关节时,连杆偏距di是变量;

当关节i是转动关节时,关节角θi是变量;

改进型最大的区别就是坐标系和连杆的相对位置不同,允许描述正交型相邻的坐标系。

标准DH建模

参数分别是:(关节类型、第一参数:值,第二参数:值,第三参数:值,建模类型)

其中,注意到offset,他代表着该关节的关节变量,比如旋转关节,那么θ就是offset,θ就不必定义;平移关节,那么d就是offset,d就不必定义;(因为他们作为动态参数)

SerialLink描述串联机器人

机器人实例可以通过类来管理。

这里用SerialLink(串联机器人)这个类定义了一个实例Five_dof,这个实例包含定义的各关节参数L、以及名称"五轴机器人"。

transl指基坐标系的平移量(就是上节课的平移变换矩阵对基坐标系作用),是类属性调整。

teach就是示教,是类函数调用。你可以理解为mujoco的simulate XX.xml,我们写的L定义就类似于XML文档/urdf文档。

Matlab支持urdf描述,但本节只是为了让大家熟悉如何进行DH建模因此使用SerialLink类来描述。

Matlab 复制代码
%%standard DH

L(1)=Link('revolute','d',0.216,'a',0,'alpha',pi/2);

L(2)=Link('revolute','d',0,'a',0.5,'alpha',0,'offset',pi/2);

L(3)=Link('revolute','d',0,'a',sqrt(0.145^2+0.42746^2),'alpha',0,'offset',-atan(427.46/145));

L(4)=Link('revolute','d',0,'a',0,'alpha',pi/2,'offset',atan(427.46/145));

L(5)=Link('revolute','d',0.258,'a',0,'alpha',0);

Five_dof=SerialLink(L,'name','五轴机器人');

Five_dof.base=transl(0,0,0.28);

Five_dof.teach;

改进DH建模

参数分别是:(关节类型、第一参数:值,第二参数:值,第三参数:值,建模类型)

其中,注意到offset,他代表着该关节的关节变量,比如旋转关节,那么θ就是offset,θ就不必定义;平移关节,那么d就是offset,d就不必定义;

其他同上。

Matlab 复制代码
%%Modified DH

L(1)=Link('revolute','d',0,'a',0,'alpha',0,'modified');

L(2)=Link('revolute','d',0,'a',0,'alpha',pi/2,'offset',pi/2,'modified');

L(3)=Link('revolute','d',0,'a',0.5,'alpha',0,'offset',-atan(427.46/145),'modified');

L(4)=Link('revolute','d',0,'a',sqrt(0.145^2+0.42746^2),'alpha',pi/2,'offset',atan(427.46/145),'modified');

L(5)=Link('revolute','d',0.258,'a',0,'alpha',pi/2,'modified');

Five_dof_mod=SerialLink(L,'name','五轴机器人');

Five_dof_mod.base=transl(0,0,0.496);

Five_dof_mod.teach;

两份代码展示的结果都应一样:

相关推荐
小和尚同志4 小时前
54.6k star 的 Multica: 集多 Agent 和看板于一体的 AI 平台
人工智能·aigc·three.js
一枕槐安4875 小时前
少样本提示(Few-shot)在业务场景的落地实践
大数据·人工智能·意图分类·mmr多样性·knn检索·动态示例选择
王中阳Go6 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
海宇AI6 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
tellmewhoisi6 小时前
深度学习32:卷积神经网络:卷积层(卷积运算,填充,步幅)
人工智能·深度学习·cnn
weixin_307779137 小时前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
Sinokap7 小时前
OpenAI 披露 AI 安全实验:智能体如何突破隔离边界?
人工智能·安全
云和数据.ChenGuang7 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
重生之我在番茄自学网安拯救世界7 小时前
AI 开发者日报 第1期(本周精选)| 插件市场投毒、智能体搞出“官僚饥荒村”,十年前的 CNN 打赢大模型
人工智能·网络安全·大模型·ai编程·智能体
涛声依旧-底层原理研究所8 小时前
拆解 Cordis 底座:Agent 是如何被「组合」出来的
人工智能·架构