基于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实测完整代码)
https://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:用于表示文件系统路径。它提供了一系列方法,允许你对路径进行各种操作,如拼接…...
别再写错pyqtgraph实时绘图了!一个QTimer+setData搞定动态曲线(附完整代码)
PyQtGraph实时绘图性能优化:QTimer与setData的正确打开方式 第一次接触PyQtGraph时,我像大多数从Matplotlib转来的开发者一样,习惯性地在每次数据更新时重新绘制整个图表。直到程序卡顿到无法运行,才意识到自己掉进了性能陷阱。本…...
【C# .NET 11 AI推理加速终极指南】:实测提升3.7倍吞吐量、降低62%延迟的5大硬核优化法
第一章:C# .NET 11 AI推理加速全景概览.NET 11 标志着 C# 在原生 AI 推理支持上的重大跃迁——它不再仅依赖外部 Python 运行时或 REST API 调用,而是通过深度集成 ONNX Runtime、硬件感知推理调度器与 JIT 编译优化,实现端到端的高性能、跨平…...
分布式MIMO与多静态ISAC时空同步技术解析
1. 分布式MIMO与多静态ISAC的时空同步技术解析在6G通信系统的演进中,分布式MIMO(D-MIMO)架构正成为突破性能瓶颈的关键解决方案。不同于传统集中式MIMO,D-MIMO通过地理分布的射频节点构建虚拟天线阵列,其核心优势在于&…...
GD32F103替换STM32F103,除了Pin to Pin还要注意这几点(硬件篇)
GD32F103替换STM32F103硬件设计实战指南 当硬件工程师面临元器件替换决策时,GD32F103系列作为STM32F103的经济型替代方案,确实能显著降低BOM成本。但在实际项目中,我们往往发现那些宣称"Pin to Pin兼容"的芯片,总会在某…...
Docker Daemon国产化配置失效?97%运维忽略的4个内核参数与2个systemd服务单元文件改造细节
第一章:Docker Daemon国产化配置失效的典型现象与根因定位在基于国产操作系统(如麒麟V10、统信UOS、欧拉openEuler)部署Docker时,常出现Docker Daemon启动后无法加载自定义配置、/etc/docker/daemon.json 中的国产化适配参数&…...
语际电话点歌台服务流程详解,3分钟上手,心意轻松传递
想给在意的人点一首专属歌曲,传递藏在心底的心意,却不知道电话点歌台怎么操作?担心流程复杂、耗时费力,或是怕操作不当无法精准传递心意?其实,语际电话点歌台的服务流程简单易懂,全程3分钟就能完…...
重新定义四足机器人:openDogV2从机械执行到环境感知的颠覆性演进
重新定义四足机器人:openDogV2从机械执行到环境感知的颠覆性演进 【免费下载链接】openDogV2 项目地址: https://gitcode.com/gh_mirrors/op/openDogV2 在机器人技术快速发展的今天,开源四足机器人项目openDogV2正在重新定义智能机械伙伴的可能性…...
格恩朗电磁流量计 精工硬核造 精准长稳计量
格恩朗科技(大连)有限公司扎根北方流体测控领域,集仪表研发、精密生产、方案适配与本地一站式服务于一体,专注全系列工业流量仪表研发制造。企业深耕电磁测量核心技术,严控元器件选材与整机制造工艺,打造全…...
从‘调参噩梦’到‘一键收敛’:全局快速Terminal滑模控制参数整定心得分享
从‘调参噩梦’到‘一键收敛’:全局快速Terminal滑模控制参数整定实战指南 滑模控制工程师的日常,往往始于理论推导的兴奋,终于参数调试的崩溃。当你在Simulink里反复拖动α、β、p、q的滑块,看着仿真曲线在发散与抖振之间反复横跳…...
SpringerLink投稿LaTeX,你的.bst和.cls文件选对类型了吗?一个设置解决所有乱码问题
SpringerLink投稿LaTeX:.bst与.cls文件类型选择的底层逻辑与实战指南 当你满怀期待地将精心撰写的学术论文通过SpringerLink系统提交时,系统却返回了一堆令人绝望的编译日志和乱码——这种经历足以让任何研究者崩溃。问题的根源往往不在于你的LaTeX代码本…...
