当前位置: 首页 > news >正文

基于MATLAB的关节型六轴机械臂轨迹规划仿真

笛卡尔空间下的轨迹规划,分为直线轨迹规划和圆弧轨迹规划,本文为笛卡尔空间下圆弧插值法的matlab仿真分析

目录

1 实验目的

2 实验内容

2.1标准D-H参数法

2.2实验中使用的Matlab函数

3 全部代码

4 仿真结果 


1 实验目的

基于机器人学理论知识,利用标准D-H参数法建立关节型机器人的数学模型,使用Matlab的Robotics Toolbox工具包搭建模型。

2 实验内容

2.1标准D-H参数法

标准D-H参数法常用于建立关节型机器人的数学模型,D-H参数法是一种对连杆的坐标描述,而关节机器人本质上就是一系列连杆通过关节连接起来而组成的空间开式运动链。

对于连杆本身,其功能在于保持其两端的关节轴线具有固定的几何关系,连杆的特性由轴线决定,通常用四个连杆参数来描述,连杆长度,连杆扭转角,连杆偏移量和关节角

2.2实验中使用的Matlab函数

Link函数

用于定义六轴机器人的一个轴。
包含了机器人的运动学参数、动力学参数、刚体惯性矩参数、电机和传动参数;
可采用DH法建立模型,其中包含参数:关节转角,关节距离,连杆长度,连杆转角,关节类型(0转动,1移动)。

% 定义六轴机器人的一个轴
L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')

SerialLink函数

用于构建机械臂。
它的类函数比较多,包括显示机器人、动力学、逆动力学、雅可比等;

% 'six'为机械臂名称
robot = SerialLink(L,'name','six');

fkine正解函数

用于求解出末端位姿p。

theta = [0.1,0,0,0,0,0];    %指定的关节角
p=robot.fkine(theta)        %fkine正解函数,根据关节角theta,求解出末端位姿p


ikine逆解函数

用于求解出关节角q。

q=ikine(robot,p)           %ikine逆解函数,根据末端位姿p,求解出关节角q

轨迹规划

(1)jtraj
已知初始和终止的关节角度,利用五次多项式来规划轨迹;

T1=transl(0.5,0,0);		  %根据给定起始点,得到起始点位姿
T2=transl(0,0.5,0);		  %根据给定终止点,得到终止点位姿
init_ang=robot2.ikine(T1);%根据起始点位姿,得到起始点关节角
targ_ang=robot2.ikine(T2);%根据终止点位姿,得到终止点关节角
step = 20;
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数

(2)ctraj
已知初始和终止的末端关节位姿,利用匀加速、匀减速运动来规划轨迹。

T0 = robot2.fkine(init_ang);%运动学正解
T1 = robot2.fkine(targ_ang);%运动学正解
Tc = ctraj(T0,T1,step);     %得到每一步的T阵
tt = transl(Tc);

3 全部代码

%% MATLAB素质三连https://www.guyuehome.com/34853
clear;
close all;
clc;
%% 实验一 基于MATLAB的关节型六轴机械臂仿真%% 参数定义
%机械臂为六自由度机械臂
clear L;%角度转换
angle=pi/180;  %度%D-H参数表
theta1 = -pi/2;   D1 = 89.2;   A1 = 0;      alpha1 = -pi/2; offset1 = 0;
theta2 = 0;       D2 = 0;      A2 = 425;    alpha2 = 0;     offset2 = 0;
theta3 = 0;       D3 = 0;      A3 = 392;    alpha3 = 0;     offset3 = 0;
theta4 = pi/2;    D4 = 109.3;  A4 = 0;      alpha4 = pi/2;  offset4 = 0;
theta5 = -pi/2;   D5 = 94.75;  A5 = 0;      alpha5 = -pi/2; offset5 = 0;
theta6 = 0;       D6 = 82.5;   A6 = 0;      alpha6 = 0;     offset6 = 0;%% DH法建立模型,关节转角,关节距离,连杆长度,连杆转角,关节类型(0转动,1移动)L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')
L(2) = Link([theta2, D2, A2, alpha2, offset2], 'standard')
L(3) = Link([theta3, D3, A3, alpha3, offset3], 'standard')
L(4) = Link([theta4, D4, A4, alpha4, offset4], 'standard')
L(5) = Link([theta5, D5, A5, alpha5, offset5], 'standard')
L(6) = Link([theta6, D6, A6, alpha6, offset6], 'standard')% 定义关节范围
L(1).qlim =[-180*angle, 180*angle];
L(2).qlim =[-180*angle, 180*angle];
L(3).qlim =[-180*angle, 180*angle];
L(4).qlim =[-180*angle, 180*angle];
L(5).qlim =[-180*angle, 180*angle];
L(6).qlim =[-180*angle, 180*angle];%% 显示机械臂
robot0 = SerialLink(L,'name','ur5');
f = 1 									%画在第1张图上
theta = [0 pi/2 0 0 pi 0];				%初始关节角度
figure(f)
robot0.plot(theta);
title('六轴机械臂模型');
%% 加入teach指令,则可调整各个关节角度
robot1 = SerialLink(L,'name','ur5');
f = 2
figure(f)
robot1.plot(theta);
robot1.teach
title('六轴机械臂模型可调节');
%% 实验二 基于MATLAB的六轴机械臂轨迹规划仿真%% 2.2求解运动学正解
robot2 = SerialLink(L,'name','ur5');
theta2 = [0.1,0,0,0,0,0];   			%实验二指定的关节角
p=robot2.fkine(theta2)       			%fkine正解函数,根据关节角theta,求解出末端位姿p
q=ikine(robot2,p)            			%ikine逆解函数,根据末端位姿p,求解出关节角q
robot2.plot(q,'movie','circleCHAZHI.gif');%保存
%% 2.3 jtraj 已知初始和终止的关节角度,利用五次多项式来规划轨迹
% T1=transl(0.5,0,0);					%根据给定起始点,得到起始点位姿
% T2=transl(0,0.5,0);					%根据给定终止点,得到终止点位姿
T1=transl(400,-500,0);						%根据给定起始点,得到起始点位姿
T2=transl(0,400,600);						%根据给定终止点,得到终止点位姿
init_ang=robot2.ikine(T1);				%根据起始点位姿,得到起始点关节角
targ_ang=robot2.ikine(T2);				%根据终止点位姿,得到终止点关节角
step = 20;
f = 3%轨迹规划方法
figure(f)
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数
grid on
T=robot2.fkine(q);						%根据插值,得到末端执行器位姿
nT=T.T;
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)),'LineWidth',2);%输出末端轨迹
title('输出末端轨迹');
robot2.plot(q);							%动画演示 %% 求解位置、速度、加速度变化曲线
f = 4
figure(f)
subplot(3,2,[1,3]); 					%subplot 对画面分区 三行两列 占用1到3的位置
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%输出末端轨迹
robot2.plot(q);							%动画演示figure(f)
subplot(3, 2, 2);
i = 1:6;
plot(q(:,1));
title('位置');
grid on;figure(f)
subplot(3, 2, 4);
i = 1:6;
plot(qd(:,1));
title('速度');
grid on;figure(f)
subplot(3, 2, 6);
i = 1:6;
plot(qdd(:,1));
title('加速度');
grid on;t = robot2.fkine(q);					%运动学正解
rpy=tr2rpy(t);   						%t中提取位置(xyz)
figure(f)
subplot(3,2,5);
plot2(rpy);%% ctraj规划轨迹 考虑末端执行器在两个笛卡尔位姿之间移动  
f = 5
T0 = robot2.fkine(init_ang);			%运动学正解
T1 = robot2.fkine(targ_ang);			%运动学正解Tc = ctraj(T0,T1,step);  				%得到每一步的T阵tt = transl(Tc);
figure(f)
plot2(tt,'r');
title('直线轨迹');

4 仿真结果 

转载于基于MATLAB的关节型六轴机械臂轨迹规划仿真(2021实测完整代码) - 古月居基于MATLAB的关节型六轴机械臂轨迹规划仿真(2021实测完整代码)icon-default.png?t=N7T8https://www.guyuehome.com/34853

相关文章:

基于MATLAB的关节型六轴机械臂轨迹规划仿真

笛卡尔空间下的轨迹规划,分为直线轨迹规划和圆弧轨迹规划,本文为笛卡尔空间下圆弧插值法的matlab仿真分析 目录 1 实验目的 2 实验内容 2.1标准D-H参数法 2.2实验中使用的Matlab函数 3 全部代码 4 仿真结果 1 实验目的 基于机器人学理论知识&…...

双11狂欢最后一天

大家好,本年度双11即将到来,为了答谢大家多年来的支持及更广泛的推广VBA的应用,“VBA语言専功”在此期间推出巨大优惠:此期间打包购买VBA技术资料实行半价优惠。 1:面向对象:学员及非学员 2:打…...

YOLOX: Exceeding YOLO Series in 2021(2021.8)

文章目录 AbstractIntroduction介绍前人的工作提出问题解决 YOLOXYOLOX-DarkNet53Implementation detailsYOLOv3 baselineDecoupled headStrong data augmentationAnchor-freeMulti positivesSimOTAEnd-to-end YOLOOther BackbonesModified CSPNet in YOLOv5Tiny and Nano dete…...

HBuilderX 运行Android App项目至雷电模拟器

一、下载安装HBuilderX HBuildeX官网 安装最新的正式版,或者点击历史版本查看更多版本;【ps:Alpha版本为开发版,功能更多,但是也不稳定,属于测试版本】 直接将压缩包解压,运行HBuildeX即可。 二…...

Java进阶(JVM调优)——阿里云的Arthas的使用 安装和使用 死锁查找案例,重新加载案例,慢调用分析

前言 JVM作为Java进阶的知识,是需要Java程序员不断深度和理解的。 本篇博客介绍JVM调优的工具阿里云的Arthas的使用,安装和使用,命令的使用案例;死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案…...

续:将基于Nasm汇编的打字小游戏,移植到DOSBox

续:将基于Nasm汇编的打字小游戏,移植到DOSBox 文章目录 续:将基于Nasm汇编的打字小游戏,移植到DOSBox前情提要细说1 编译2 程序入口3 定位段 运行体验 前情提要 上一篇:【编程实践】黑框框里的打字小游戏,但…...

外部访问K8S集群内部的kafka集群服务

不许转载 kafka 部署 把 kafka 部署到 k8s 后,我们肯定是通过 service 从 k8s 外部访问 kafaka。这里的 service 要么是 NodePort, 要么是 LoadBalancer 类型。我们使用的方式是 LoadBalancer。 我们先看下面这张图,这是 kafka 在集群中的网…...

AttributeError: module ‘tensorflow‘ has no attribute ‘contrib‘解决办法

在TensorFlow2环境下执行1.X版本的代码时报错: AttributeError: module ‘tensorflow‘ has no attribute ‘contrib‘ 当然第一时间想到的是利用 如下代码 来解决问题(大部分情况都是这样), tf.compat.v1但是又出现以下报错 Att…...

物奇平台耳机恢复出厂设置功能实现

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙音频,DSP音频项目核心开发资料, 物奇平台耳机恢复出厂设置功能实现 一 需求 1 耳机接收到充电盒长按12S指令后触发, 2 接收到…...

RFID携手制造业升级,为锂电池生产带来前所未有的可靠性

应用背景 随着科技的发展和全球化的推进,产品的生产过程越来越复杂,且对品质的要求也越来越高。在锂电池生产领域,由于其高能量密度、长寿命和环保特性,已被广泛应用于电动汽车、储能系统等领域。然而,锂电池的安全性和…...

【星海出品】flask (四) 三方工具使用

学习的灵魂是公社,学习的目标是人民自治.学习是非暴力革命方式的社会改革.学习是人民对抗资本剥夺的文明方式.学习失败了,就如同巴黎公社失败了一样.但是它为今后进行成功的社会改革指明了正确的方向.学习的逻辑并不复杂,一句话,必须让知识数量与知识价值基本吻合.管理学习也不…...

MongoDB 索引

类似关系型数据库,mongodb也建立自己的一套索引机制和查询优化方法。本文简单介绍mongodb的索引。后续文章讲详细介绍索引的操作,监控和查询优化方法等。 索引 索引,是一组按照特殊结构排列的,方便检索的数据。索引中保存了集合…...

[Hive] INSERT OVERWRITE DIRECTORY要注意的问题

在使用Hive的INSERT OVERWRITE语句时,需要注意以下问题: 数据覆盖:INSERT OVERWRITE语句会覆盖目标目录中的数据。因此,在执行该语句之前,请确保目标目录为空或者你希望覆盖的数据已经不再需要。数据格式:…...

刚柔相济铸伟业 ——访湖南顺新金属制品科技有限公司董事长张顺新

时代在变,唯初心不改。 精致、谦虚、谨慎、儒雅、温和——他就是张顺新,湖南顺新金属制品科技有限公司、湖南顺新供应链管理有限公司董事长,民建长沙市委常委,民建湖南省环资委副主任,省、市民建企联会常务副会长&…...

DHorse(K8S的CICD平台)的实现原理

综述 首先,本篇文章所介绍的内容,已经有完整的实现,可以参考这里。 在微服务、DevOps和云平台流行的当下,使用一个高效的持续集成工具也是一个非常重要的事情。虽然市面上目前已经存在了比较成熟的自动化构建工具,比如…...

类图复习:类图简单介绍

入职新公司在看新项目的代码,所以借助类图梳理各个类之间的关系,奈何知识已经还给了老师,不得不重新学习下类图的相关知识,此处将相关内容记录下方便后续使用。 文章目录 类图语法类与类的关系画类图 类图语法 语法描述public-pr…...

【字符串】【双指针翻转字符串+快慢指针】Leetcode 151 反转字符串中单词【好】

【字符串】【双指针翻转字符串快慢指针】Leetcode 151 反转字符串中单词 解法1 双指针翻转字符串快慢指针更新数组大小 ---------------🎈🎈题目链接🎈🎈------------------- ---------------🎈🎈解答链接…...

3D Gaussian Splatting:用于实时的辐射场渲染

Kerbl B, Kopanas G, Leimkhler T, et al. 3d gaussian splatting for real-time radiance field rendering[J]. ACM Transactions on Graphics (ToG), 2023, 42(4): 1-14. 3D Gaussian Splatting 是 Siggraph 2023 的 Best Paper,法国团队在会议上展示了其实现的最…...

【nlp】文本处理的基本方法

文本处理的基本方法 1 什么是分词2 什么是命名实体识别3 什么是词性标准1 什么是分词 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形…...

C++17 std::filesystem

std::filesystem 是 C17 标准引入的文件系统库,提供了一套用于处理文件和目录的 API。它主要包括以下几个核心类: std::filesystem::path:用于表示文件系统路径。它提供了一系列方法,允许你对路径进行各种操作,如拼接…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...