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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319255.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTC模块在汽车电池管理系统中的优势

汽车行业目前正在经历一个巨大的时期,关键词是 “案例”。CASE是连接、自治、共享和电气的缩写。它 表明了该汽车制造商在日益数字化的世界中的战略方向。市场的 电动汽车正在快速增长,预计将有助于减少二氧化碳排放和对抗 全球变暖 在本文中&#…

Spring事务传播问题 — PROPAGATION_REQUIRES_NEW

一、描述 Spring遇到嵌套事务时,当被嵌套的事务被定义为“PROPAGATION_REQUIRES_NEW”时, 内层Service的方法被调用时,外层方法的事务被挂起; 内层事务相对于外层事务是完全独立的,有独立的隔离性等等。 二、实验 但实…

栈和队列oj题——20. 有效的括号

个人主页:晓风飞 专栏:数据结构|Linux||C语言 文章目录 解题核心思路使用STInit(&st);初始化栈。遍历字符串:处理左括号:处理右括号:字符串遍历完成:使用STDestroy(&st);销毁栈,释放资源…

使用 SpringSecurity 发送POST请求出现 403

问题场景 在使用 SpringSecurity 时对一些访问权限进行了设置, 在用户请求资源时出现了403错误 , 通过检查代码发现请求权限是开放的, 并且切换成 GET 请求也是可以通过, 换成POST 请求就无法通过。 解决方法 在 SpringSecurity 中关闭 CSRF 因为 前端向后台发送 post 请求…

Flink Watermark和时间语义

Flink 中的时间语义 时间语义: EventTime:事件创建时间;Ingestion Time:数据进入Flink的时间;Processing Time:执行操作算子的本地系统时间,与机器无关。不同的时间语义有不同的应用场合&#x…

华为端口隔离高级用法经典案例

最终效果: pc4不能ping通pc5,pc5能ping通pc4 pc1不能和pc2、pc3通,但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…

QT上位机开发(串口界面设计)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 如果上位机要和嵌入式设备进行打交道的话,那么串口可能就是我们遇到的第一个硬件设备。串口的物理接线很简单,基本上就是收…

使用Tensorboard可视化网络结构(基于pytorch)

前言 我们在搭建网络模型的时候,通常希望可以对自己搭建好的网络模型有一个比较好的直观感受,从而更好地了解网络模型的结构,Tensorboard工具的使用就给我们提供了方便的途径 Tensorboard概况 Tensorboard是由Google公司开源的一款可视化工…

【langchain】入门初探实战笔记(Chain, Retrieve, Memory, Agent)

1. 简介 1.1 大语言模型技术栈 大语言模型技术栈由四个主要部分组成: 数据预处理流程(data preprocessing pipeline)嵌入端点(embeddings endpoint )向量存储(vector store)LLM 终端&#xff…

机器学习(四) -- 模型评估(1)

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 机器学习(三) -- 特征工程(1-2) 机器学习(四) -- 模型评估…

GaussDB数据库使用COPY命令导数

目录 一、前言 二、GaussDB数据库使用COPY命令导数语法 1、语法COPY FROM 2、语法COPY TO 3、特别说明及参数示意 三、GaussDB数据库使用COPY命令导数示例 1、操作步骤 2、准备工作(示例) 3、把一个表的数据拷贝到一个文件(示例&…

【python入门】day17:模块化编程、math库常见函数

什么叫模块 模块的导入 导入所有:import 模块名称 导入指定:from 模块名称 import 函数/变量/类 python的math库 什么是math库 Python的math库是Python的内建库之一,它提供了许多数学函数,包括三角函数、对数函数、幂函数等&a…