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

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 onaxis([-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




仿真视频如下:
六轴机械臂码垛货物堆叠仿真
相关文章:
六轴机械臂码垛货物堆叠仿真
六轴机械臂码垛货物堆叠仿真 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, …...
text-decoration 使用
text-decoration text-decoration 用于设置文本上的装饰性线条的外观。 它是 text-decoration-line、text-decoration-style、text-decoration-color 和text-decoration-thickness的缩写。 text-decoration: underline wavy red;text-decoration-line 设置文本装饰类型 可以…...
linux shell快速入门
linux shell快速入门 0 、前置1、简单使用 0 、前置 一安装linux的虚拟环境 1、简单使用 1、新建/usr/shell目录 2、新建hello.sh 文件 3、编写脚本文件# !/bin/bashecho "hello world"查看是否具备执行权限 新增执行权限 chomd x hello.sh执行hello.sh文件 /b…...
【Spring源码】小白速通解析Spring源码,从0到1,持续更新!
Spring源码 参考资料 https://www.bilibili.com/video/BV1Tz4y1a7FM https://www.bilibili.com/video/BV1iz4y1b75q bean的生命周期 bean–>推断构造方法(默认是无参构造,或指定的构造方法)–>实例化成普通对象(相当于ne…...
Unity 鼠标实现对物体的移动、缩放、旋转
文章目录 1. 代码2. 测试场景 1. 代码 using UnityEngine;public class ObjectManipulation : MonoBehaviour {// 缩放比例限制public float MinScale 0.2f;public float MaxScale 3.0f;// 缩放速率private float scaleRate 1f;// 新尺寸private float newScale;// 射线pri…...
67Class 的基本语法
Class 的基本语法 类的由来[constructor() 方法](https://es6.ruanyifeng.com/#docs/class#constructor() 方法)类的实例实例属性的新写法取值函数(getter)和存值函数(setter)属性表达式[Class 表达式](https://es6.ruanyifeng.c…...
企业数字化转型:无形资产占比测算(2007-2021年)
在本次数据中,参考张永珅老师的做法,利用无形资产占比测算数字化转型程度。 一、数据介绍 数据名称:企业数字化转型:无形资产占比 数据年份:2007-2021年 样本数量:32960条 数据说明:包括数…...
[centos]设置主机名
1、设置 hostnamectl set-hostname 名字 2、查看是否生效 hostnamectl status 3、打开一个新链接就可以了...
华为OD真题--新学习选址--带答案
2023华为OD统一考试(AB卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) 为了解新学期学生暴涨的问题,小乐村要建立所新学校 考虑到学生上学安全问题,需要所有学生家到学校的…...
Qt自定义对话框
介绍 自定义框主要通过对现有对话框QDialog类的派生,根据需求编写成员函数、重载信号函数、槽函数,进而实现在主QWidget中点击某个按钮后,一个对话框的弹出 流程 简化创建派生类 最后点击完成即可。 自定义ui界面,编写成员函数…...
Python 程序设计入门(018)—— format() 函数的用法详解
Python 程序设计入门(018)—— format() 函数的用法详解 目录 Python 程序设计入门(018)—— format() 函数的用法详解一、format() 函数的基本格式二、不提供 format_spec 参数三、设置字符串的对齐方式(align&#x…...
演进式架构
演进能力是一种元特征和保护其他所有架构特征的架构封装器IEEE 的软件架构定义中的41 视图模型。它关注不同角色的不同视角,将整个系统划分成了逻辑视图、开发视图、进程视图和物理视图架构师确定了可审计性、数据、安全性、性能、合法性和伸缩性是该应用的关键架构…...
OCP China Day 2023:五大社区齐聚,加速开源开放创新与落地
8月10日,2023年开放计算中国社区技术峰会(OCP China Day 2023)在北京举行。智慧时代,计算多元化、应用多样化、技术复杂化正驱动数据中心新一轮变革,开源开放社区已成为推动数据中心持续创新的重要力量,通过…...
【Linux】进程间通信之管道
【Linux】进程间通信之管道 进程间通信进程间通信目的进程间通信的方式 管道(内核维护的缓冲区)匿名管道(用于父子间进程间通信)简单使用阻塞状态读写特征非阻塞状态读写特征 匿名管道特点命名管道 匿名管道与命名管道的区别 进程…...
记录一个正则表达式
正则表达式要求如下: 至少 8 个字符; 至少包含一个小写英文字母; 至少包含一个大写英文字母; 至少包含一个数字; 至少包含一个特殊字符,特殊字符为:“!#$%^&*()-” 中的一个; 不包含2个连续…...
用于全局复根和极点查找算法的自适应网格生成器(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
修改Linux中SSH的端口
文章目录 修改Linux中SSH的端口Linux中默认的ssh端口关闭SELinux测试新端口 修改Linux中SSH的端口 Linux中默认的ssh端口 使用root用户操作 修改前先备份ssh_config cp /etc/ssh/sshd_config /etc/ssh/sshd_config_date "%Y%m%d%H%M%S"修改配置文件,找…...
Ansible从入门到精通【六】
大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步! 我的主页:早九晚十二 专栏名称:Ansible从入门到精通 立志成为ansible大佬 ansible templates 模板(templa…...
国企的大数据岗位方向的分析
现如今大数据已无所不在,并且正被越来越广泛的被应用到历史、政治、科学、经济、商业甚至渗透到我们生活的方方面面中,获取的渠道也越来越便利。 今天我们就来聊一聊“大屏应用”,说到大屏就一定要聊到数据可视化,现如今…...
【MySQL--->数据类型】
文章目录 [TOC](文章目录) 一、数据类型分类二、整型类型三、bit(位)类型四、float类型五、decimal类型六、char和varchar类型1.char类型2.varchar3.char与varchar的区别 七、日期与时间类型八、enum和set 一、数据类型分类 二、整型类型 数值类型有数据存储上限,而且每个类型都…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
