六轴机械臂码垛货物堆叠仿真

news2024/11/26 18:37:03

六轴机械臂码垛货物堆叠仿真
在这里插入图片描述

1、建立模型与仿真

clear,clc,close all
addpath(genpath('.'))
%建立模型参数如下:
L(1) = Link(  'd',     0.122,  'a' , 0 , 'alpha',  pi/2,'offset',0);
L(2) = Link(  'd',    0.019 ,  'a' ,0.408 , 'alpha', 0,'offset',pi/2);
L(3) = Link(  'd',  0 ,  'a' , 0.3759 , 'alpha',0,'offset',0);
L(4) = Link( 'd',  0.1023,  'a' , 0 , 'alpha', -pi/2 ,'offset',pi/2);
L(5) = Link( 'd', -0.1023 ,  'a' , 0 , 'alpha',pi/2,'offset',pi);
L(6) = Link( 'd',  -0.25281 ,  'a' , 0 , 'alpha',0,'offset',0);
robot = SerialLink(L,'name','六轴机械臂'); %建立连杆机器
% robot.display;
% robot.teach; 
%%

%建立工作平台和货物
q0=[0 0 0 0 0 0];%初始位置
T0=robot.fkine(q0);%正运动学得到旋转矩阵
 hold on
 axis([-1.2 1.2 -1.2 1.2 -0.4 1.5] )%定义坐标系范围
 %显示机械臂初始位置
 robot.plot3d(q0,'tilesize',0.1,'view',[120,20],'path',...
   'E:\Project tasks_unfinished2\六月份\6-23 400 机械臂码垛货物堆叠\2023t5')
 %第一个参数是长方体的原点,第二个参数是长宽高,输入命令:
gx=0.5;gy=0.5;gz=0.2;
PlotCuboid([-1,-1,-0.3],[2,2,0.4],0.2)%定义工作台
plot3Cube([gx,gy,gz],0.1,'black');%第一个货物
plot3Cube([gx,-gy,gz],0.1,'black');%第二个货物      
plot3Cube([-gx,gy,gz],0.1,'black'); %第三个货物           
plot3Cube([-gx,-gy,gz],0.1,'black'); %第四个货物         

%%
%搬运第二个货物
T1=transl(gx,-gy,gz)*trotx(0);%转化为旋转矩阵
q1=robot.ikunc(T1);%求逆
[qt1,qt2,qt3]=jtraj(q0,q1,30);%利用五次多项式函数轨迹规划
%显示机械臂动画
 robot.plot3d(qt1,'tilesize',0.1,'view',[120,20])

T2=transl(gx,gy,gz+0.1)*trotx(0);%转化为旋转矩阵
q2=robot.ikunc(T2);%求逆
[qt1,qt2,qt3]=jtraj(q1,q2,30);%利用五次多项式函数轨迹规划
TR1=transl(robot.fkine(qt1));
%循环显示动画
for i=1:length(qt1)
clf
robot.plot3d(qt1(i,:),'tilesize',0.1,'view',[120,20],'delay',0)
hold on
PlotCuboid([-1,-1,-0.3],[2,2,0.4],0.2)%定义工作台
plot3Cube([gx,gy,gz],0.1,'black');%第一个货物
plot3Cube([TR1(i,1),TR1(i,2),TR1(i,3)],0.1,'black');%第二个货物      
plot3Cube([-gx,gy,gz],0.1,'black'); %第三个货物           
plot3Cube([-gx,-gy,gz],0.1,'black'); %第四个货物
pause(0)
end
%%
%搬运第三个货物
T3=transl(-gx,gy,gz)*trotx(0);%转化为旋转矩阵
Tc1=ctraj(T2, T3,30);%直线轨迹规划
q31=robot.ikunc(Tc1);%求逆得关节角度
 robot.plot3d(q31,'tilesize',0.1,'view',[120,20])

T4=transl(gx,gy,gz+0.2)*trotx(0);%转化为旋转矩阵
q4=robot.ikunc(T4);%求逆得到关节角度
Tc1=ctraj(T3, T4,30);%直线轨迹规划
q41=robot.ikunc(Tc1);%求逆得关节角度
TR2=transl(Tc1);%提取空间坐标点
%循环显示动画
for i=1:length(q41)
clf
robot.plot3d(q41(i,:),'tilesize',0.1,'view',[120,20],'delay',0)
hold on
PlotCuboid([-1,-1,-0.3],[2,2,0.4],0.2)%定义工作台
plot3Cube([gx,gy,gz],0.1,'black');%第一个货物
plot3Cube([TR1(end,1),TR1(end,2),TR1(end,3)],0.1,'black');%第二个货物      
plot3Cube([TR2(i,1),TR2(i,2),TR2(i,3)],0.1,'black'); %第三个货物           
plot3Cube([-gx,-gy,gz],0.1,'black'); %第四个货物
pause(0)
end

%%
%搬运第四个货物
T5=transl(-gx,-gy,gz)*trotx(0);%转化为旋转矩阵
q5=robot.ikunc(T5);%求逆
[qt1,qt2,qt3]=jtraj(q4,q5,30);%利用五次多项式函数轨迹规划
 robot.plot3d(qt1,'tilesize',0.1,'view',[120,20])

T5=transl(-gx,-gy,gz)*trotx(0);%转化为旋转矩阵
q5=robot.ikunc(T5);%求逆
q51=q5;
q51(1)=q51(1)+pi/2;
T=robot.fkine(q51);
T51=[T.n(1),T.o(1),T.a(1),T.t(1);%%得到旋转矩阵
    T.n(2),T.o(2),T.a(2),T.t(2);
    T.n(3),T.o(3),T.a(3),T.t(3);
    0 0 0 1];
[qt1,qt2,qt3]=jtraj(q5,q51,30);%利用五次多项式函数轨迹规划
TR31=transl(robot.fkine(qt1));%得到空间坐标点

T6=transl(gx,gy,gz+0.3)*trotx(0);%转化为旋转矩阵
% q6=robot.ikunc(T6);%求逆
Tc1=ctraj(T51, T6,30);%直线轨迹规划
q61=robot.ikunc(Tc1);%求逆得到关节角度
qtd=[qt1;q61];%合并关节角度
TR32=transl(Tc1);%提取空间坐标点
TR3=[TR31;TR32];%得到空间坐标点
%循环显示动画
for i=1:length(qtd)
clf
robot.plot3d(qtd(i,:),'tilesize',0.1,'view',[120,20],'delay',0)
hold on
PlotCuboid([-1,-1,-0.3],[2,2,0.4],0.2)%定义工作台
plot3Cube([gx,gy,gz],0.1,'black');%第一个货物
plot3Cube([TR1(end,1),TR1(end,2),TR1(end,3)],0.1,'black');%第二个货物      
plot3Cube([TR2(end,1),TR2(end,2),TR2(end,3)],0.1,'black'); %第三个货物           
plot3Cube([TR3(i,1),TR3(i,2),TR3(i,3)],0.1,'black'); %第四个货物
pause(0)
end






请添加图片描述
请添加图片描述请添加图片描述
请添加图片描述
仿真视频如下:

六轴机械臂码垛货物堆叠仿真

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++的stack和queue+优先队列

文章目录 什么是容器适配器底层逻辑为什么选择deque作为stack和queue的底层默认容器优先队列优先队列的模拟实现stack和queue的模拟实现 什么是容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总 结),…

【内联函数】

这里写目录标题 内联函数一、指定内联函数的方法很简单,只需要在函数定义处增加 inline 关键字一般是将非常短小的函数声明为内联函数内联函数与宏定义例题 内联函数 内联函数也称内嵌函数,它主要是解决程序的运行效率。 函数调用需要建立栈内存环境&am…

小白带你学习linux的MongoDB(三十四)

目录 一、概述 1、相关概念 2、特性 二、应用场景 三、安装 四、目录结构 五、默认数据库 1、admin: 2、local: 3、config: 六、数据库操作 1、库操作 2、文档操作 七、MongoDB数据库备份 1、备份命令 2、回数据库删除…

数据库内日期类型数据大于小于条件查找注意事项

只传date格式的日期取查datetime的字段的话默认是 00:00:00 日期类型字符串需要使用 ’ ’ 单引号括住 使用大于小于条件查询某一天的日期数据 前后判断条件不能是同一天 一个例子 数据库内数据: 查询2023-08-14之后的数据: select * from tetst…

Linux 内核第一版 (v0.01) 开源代码解读

探索Linux v0.01的内部结构,Linux内核经常被认为是一个庞大的开源软件。在撰写本文时,最新版本是v6.5-rc5,包含36M行代码。不用说,Linux是几十年来许多贡献者辛勤工作的成果。 Linux 内核首个开源版本 (v0.01) 的体积非常小&…

HBuilderX

HX 简介下载安装 简介 HBuilderX 是一款由 DCloud 开发的集成开发环境 (IDE),主要用于前端开发和移动应用开发。它基于 Visual Studio Code 平台,针对 Web 开发、小程序开发、移动端开发等提供了丰富的功能和插件。 DCloud官网: https://www.dcloud.io …

剑指offer57-II.和为s的连续正数序列

看完题脑子里闪过了暴力法,就是从1开始往后累加,直到累加和等于或大于target,如果等于就放进数组,如果大于就从2开始加,但是这种想法只是闪过一下,因为我觉得加上填充数组需要3层循环肯定会超时&#xff0c…

java毕业设计-智慧食堂管理系统-内容快览

首页 智慧食堂管理系统是一种可以提高食堂运营效率的管理系统。它将前端代码使用Vue实现,后端使用Spring Boot实现。这个系统的目的是简化食堂管理,提高食堂服务质量。在现代快节奏的生活中,人们对餐饮服务提出了更高的要求,食堂管…

Spring Boot实现第一次启动时自动初始化数据库流程详解

随着互联网的发展项目中的业务功能越来越复杂,有一些基础服务我们不可避免的会去调用一些第三方的接口或者公司内其他项目中提供的服务,但是远程服务的健壮性和网络稳定性都是不可控因素。 在测试阶段可能没有什么异常情况,但上线后可能会出…

一文详解Apipost数据模型功能

在Apipost数据模型中用户可以预先创建多个数据模型,并在API设计过程中重复利用这些模型来构建API 创建数据模型 在左侧导航点击「数据模型」-「新建数据模型」在右侧工作台配置数据模型参数 引入数据模型 在API设计预定义响应期望下点击引用数据模型,…

实录分享 | 使用Prometheus和Grafana监控Alluxio运行状况

欢迎来到【微直播间】,2min纵览大咖观点 本次分享主要包括三个方面: Prometheus&Grafana简介环境搭建手动调优 一、 Prometheus&Grafana简介关于Prometheus: Prometheus 是一个开源的完整监控解决方案,其对传统监控系…

[SpringBoot3]访问数据库

四、访问数据库 SpringBoot框架为SQL数据库提供了广泛的支持,既有用JdbcTemplate直接访问JDBC同时支持“object relational mapping”技术(如MyBtais、Hibernate)。SpringData独立的项目提供对多种关系型和非关系型数据库的访问支持&#xf…

【Vue-Router】命名视图

命名视图 同时 (同级) 展示多个视图,而不是嵌套展示,例如创建一个布局,有 sidebar (侧导航) 和 main (主内容) 两个视图,这个时候命名视图就派上用场了。 可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出…

【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包

SpringBoot项目使用maven-assembly-plugin插件多环境打包 1.创建SpringBoot项目并在pom.xml文件中添加maven-assembly-plugin配置 <!-- 多环境配置 --><profiles><!-- 开发环境 --><profile><id>dev</id><properties><prof…

Leaflet入门,Leaflet加载xyz地图,以vue-leaflet插件加载高德地图为例

前言 本章介绍Leaflet使用vue2-leaflet或者vue-leaflet插件方式便捷加载xyz高德地图。 # 效果演示 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定式的使用Leaflet地图,以及初始化后拿到leaflet对象,方便调用leaflet的api》 vue3…

代码随想录算法训练营之JAVA|第二十九天|1005. K 次取反后最大化的数组和

今天是第29天刷leetcode&#xff0c;立个flag&#xff0c;打卡60天。 算法挑战链接 1005. K 次取反后最大化的数组和https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/ 第一想法 题目理解&#xff1a;数组在进行K次取反后&#xff0c;求累加的最大值。…

Rust 复数运算,重载加减乘除运算

复数 基本概念 复数定义 由实数部分和虚数部分所组成的数&#xff0c;形如a&#xff0b;bi 。 其中a、b为实数&#xff0c;i 为“虚数单位”&#xff0c;i 的平方等于&#xff0d;1。 a、b分别叫做复数a&#xff0b;bi的实部和虚部。 当b&#xff1d;0时&#xff0c;a&am…

安世收购英国最大晶圆制造厂

据英国《泰晤士报》报道&#xff0c;英国Newport晶圆厂的员工 给 《 泰晤士报 》 的一封措辞强硬的信中&#xff0c;表 示 代表582名员工的员工协会表示。Newport晶圆厂员工们完全支持Nexperi a安世半导体 对工厂的所有权。因为Nexperia提供 了稳定的工作、改善了工作保障、工资…

VBA 学习笔记1 对象以及属性

目录 1 取得VBA对象1.1 取得工作簿对象1.2 取得工作表对象1.3 取得单元格对象1.4 取得对象的属性1.5 文档的方法1 进入vba 界面 方式之一&#xff1a; 快捷键&#xff1a;ALTERF11 运行方式之一&#xff1a; 进入vba界面&#xff0c;点击绿色三角符号 1 取得VBA对象 1.1 取得…

Win10基于 Anaconda 配置 Deeplabcut 环境

最近需要做动物行为学分析的相关研究&#xff0c;同时由于合作者只有 Windows 系统&#xff0c;于是只好在 Windows 中配置环境。说实话还真的是挺折磨的。。。 一、下载 Anaconda 可以通过清华源下载 Anaconda&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/ar…