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

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

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






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

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于三菱PLC的码垛机械手控制系统设计与组态仿真可以分为以下几个步骤。 首先,需要对码垛机械手的动作进行分析和建模。通过分析码垛过程中的各种动作,如抓取、举升、放置等,可以确定机械手的运动轨迹和动作顺序。 其次,需要设计PLC的控制程序。根据机械手的动作模型,可以编写PLC的控制程序,实现对机械手的各种操作和动作控制。这个控制程序可以使用三菱PLC编程软件进行编写,使用Ladder图或者其他图形化编程方式进行组态。 然后,进行仿真验证。通过使用PLC仿真软件,可以对编写好的控制程序进行仿真验证。在仿真环境中,可以模拟机械手的各种动作和操作,检查控制程序的正确性和效果。 在仿真验证过程中,可以进行一些额外的优化和调试工作。例如,可以调整机械手的运动轨迹,改进机械手的抓取和放置方式,以提高垛码的效率和准确性。 最后,进行实际系统的搭建和调试。当控制程序经过仿真验证后,可以将其上传到真实的三菱PLC控制器中,并与机械手和其他设备进行连接和调试。在实际系统中,可以通过监测机械手和其他设备的运行状态,进行调整和优化,以实现更好的码垛效果。 综上所述,基于三菱PLC的码垛机械手控制系统设计与组态仿真是一个涉及到机械手建模、PLC控制程序设计和仿真验证的综合性工作。通过这个过程,可以实现对码垛机械手的精确控制和优化,提高生产效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CAE工作者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值