机器人制作开源方案 | 智能立体仓储系统模型

news2024/11/14 23:33:29

1. 功能说明

      本文示例将通过程序控制模拟立体仓储系统的运动效果--模拟立体仓储系统进行运输货物时各个结构的运动方式。立体仓储系统的运动有整体系统的水平移动、载货台的纵向移动、货叉的平动,所有的运动表现形式都是旋转运动转化为平动。

2. 结构说明

      该立体仓储系统的水平移动使用丝杠平移,丝杠平移可以承载较重的物体;载货台的纵向移动使用丝杠平移,其稳定性较强,位移距离长;货叉的平动使用滑块平移机构,平移距离较短。

3. 电子硬件

      本实验中采用了以下硬件:

主控板Basra控制板(兼容Arduino Uno)
扩展板Bigfish2.1扩展板
传感器触碰传感器
电池7.4v锂电池

      电路连接说明:在下图所示的2个位置分别安装一个触碰传感器作为限位(限位:限定机械设备的运动极限位置)。

      ① 2个触碰传感器分别连接在Bigfish扩展板的A0、A4端口;

      ② 舵机连接在Bigfish扩展板的D4端口;

      ③ 2个电机分别连在Bigfish扩展板的D5,D6接口和D9,D10接口。

4. 功能实现

4.1 实现思路

      实现模拟立体仓储系统运输一个物体的功能。

      初始位置:整体立体仓库的运输机构沿-X向移动到极限位置(2号电机控制,传感器限位);载货台沿-Z向移动到极限位置(1号电机控制,传感器限位);货叉收回(3号舵机角度控制);

      装货:货叉伸出去,停顿(3号舵机角度控制,大概延迟0.3s);货叉收回,停顿(3号舵机角度控制,大概延迟0.3s);

      运输:载货台沿+X向移动到中间位置(2号电机控制,运动所需延迟时间大概7s);载物台沿+Z向移动到中间位置(1号电机控制,运动所需延迟时间大概7s);

      卸货:货叉伸出去,停顿(3号舵机角度控制,大概延迟0.3s);货叉收回,停顿(3号舵机角度控制,大概延迟0.3s);

      复位:整体立体仓库的运输机构沿-X向移动到极限位置(2号电机控制,传感器限位);载货台沿-Z向移动到极限位置(1号电机控制,传感器限位);货叉收回(3号舵机角度控制)。

4.2 示例程序

       编程环境:Arduino 1.8.19

下面提供一个参考例程(smartStoreHouse.ino),具体实验效果可参考演示视频。

/*------------------------------------------------------------------------------------

   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

           Distributed under MIT license.See file LICENSE for detail or copy at

           https://opensource.org/licenses/MIT

           by 机器谱 2023-06-15 https://www.robotway.com/

   ------------------------------*/

int sensor[4]= {A0,A2,A4,A3}; //定义数组~传感器接口

/* 宏定义舵机角度,以及延时时间 */

#define SERVO_OUT 70

#define SERVO_IN   120

#define Delay_right 7000

#define Delay_up 7000

#include <Servo.h>

Servo myservo;

void setup() {

   // put your setup code here, to run once:

   for(int i=0;i<4;i++) //传感器接口设置为输入

    pinMode(sensor[i],INPUT_PULLUP);

/* 电机接口设置为输出*/

   pinMode(9, OUTPUT);

   pinMode(10, OUTPUT);

   pinMode(11, OUTPUT);

   pinMode(12, OUTPUT);   

   pinMode(5, OUTPUT);

   pinMode(6, OUTPUT);   

   Serial.begin(9600);   //串口初始化

   myservo.attach(4);   

   myservo.write(SERVO_IN);   // 3号舵机收回来

   delay(300);

   motorReset(); // 电机初始化,回到复位位置

       

}

void loop()

{

   myservo.write(SERVO_OUT); // 3号舵机伸出去

   delay(300);

   myservo.write(SERVO_IN);   // 3号舵机收回来

   delay(300);

   X_Motor_right();          // 2 号电机右移 Delay_right时间,然后停止

   delay(Delay_right);

   X_Motor_stop();

   Y_Motor_up();             // 1号电机上移 Delay_up时间,然后停止

   delay(Delay_up);

   Y_Motor_stop();

   myservo.write(SERVO_OUT); // 3号舵机伸出去

   delay(300);

   myservo.write(SERVO_IN);   // 3号舵机收回来

   delay(300);

   motorReset(); // 电机初始化,回到复位位置

   

}

/***************************** MOTOR **************************************/

void X_Motor_left()

{

   digitalWrite(5,LOW);

   digitalWrite(6,HIGH);

}

void X_Motor_right()

{

   digitalWrite(5,HIGH);

   digitalWrite(6,LOW);

}

void X_Motor_stop()

{

   digitalWrite(5,LOW);

   digitalWrite(6,LOW);

}

void Y_Motor_up()

{

   digitalWrite(9,HIGH);

   digitalWrite(10,LOW);

}

void Y_Motor_down()

{

   digitalWrite(9,LOW);

   digitalWrite(10,HIGH);

}

void Y_Motor_stop()

{

   digitalWrite(9,LOW);

   digitalWrite(10,LOW);

}

void motorReset(){

   while(!SensorTrigger(0))   //A0传感器不触发,2号电机左移

   {

      X_Motor_left();

      Serial.print("A0:   ");

      Serial.println(digitalRead(A0));

   }

   X_Motor_stop();        //A0传感器触发,2号电机停止

   while(!SensorTrigger(2))//A4传感器不触发,1号电机向下移动

   {

      Y_Motor_down();

      Serial.print("A4:   ");

      Serial.println(digitalRead(A4));

   }

   Y_Motor_up();//A0传感器触发,2号电机向上300ms,然后停止

   delay(300);

   Y_Motor_stop();

}

/***********************************************************************************/

boolean SensorTrigger( int which )

{

   boolean where = false;

   if( !digitalRead( sensor[ which ] ) )

   {

    delay( 100 );

    if( !digitalRead( sensor[ which ] ) ) where = true;

   }   

   return( where );

}

 程序源代码及样机3D文件详见 智能立体仓储系统模型

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

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

相关文章

netcat(nc)安装

网络工具中有“瑞士军刀”美誉的NetCat&#xff08;以下简称nc&#xff09;可以使用TCP或UDP协议的网络连接去读写数据。 问题 使用命令 nc -zv ip port 发现报错Ncat&#xff1a;Connection refused&#xff0c;其实是混淆了netcat&#xff08;nc&#xff09;与ncat where …

只要你会vue,5分钟学不会 svelte 你来找我

&#x1f33b; 前言 2023年了&#xff0c;国内前端领域基本被Vue、React占领市场&#xff0c;近几年似乎前端技术栈的迭代更新缓慢了下来。 当然近几年也出现了像svelte、solid.js等一些新兴的前端框架&#xff0c;这些框架有很多创新的点&#xff0c;比如svelte相比于vue,re…

SSTI-lab

Level-1 no waf {{2*2}}测试发现存在ssti漏洞 {{.__class__}}{{.__class__.__bases__[0]}}{{.__class__.__bases__[0].__subclasses__}}import requestsurl"http://node1.anna.nssctf.cn:28430/level/1"#payload{{.__class__.__bases__[0].__subclasses__()[1]}} …

基于智慧消防系统的建设与应用

安科瑞 华楠 【摘要】随着“智慧城市”建设热潮的兴起&#xff0c;对推动人类社会发展与进步发挥重要作用&#xff0c;而“智慧消防”作为“智慧城市”的重要组成部分&#xff0c;其建设工作也越来越受到社会各界人士的高度关注&#xff0c;这对推动“智慧城市”构建发挥作用。…

途乐证券|Prada总部上海荣宅失事?230亿龙头突现重大利空,黑马也被带崩

Prada和蔡徐坤同时刷屏&#xff01; 今天一早&#xff0c;Prada冲上微博热搜&#xff0c;原因是有网友称&#xff0c;“Prada总部上海荣宅起火”&#xff0c;相关视频在网上热传。据上海静安消防发布火情通报&#xff0c;2023年7月2日18时14分&#xff0c;静安区陕西北路靠近南…

登录校验-会话技术/JWT令牌

登录校验 会话技术 会话&#xff1a; 用户打开浏览器&#xff0c;访问web资源的时候&#xff0c;会话建立。直到一方断开连接&#xff0c;会话结束&#xff0c;一次会话中包含多次响应 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需要识别多次请求是否来…

【MySQL】count()查询性能梳理

【MySQL】count()查询性能梳理 1、背景 使用的数据库是MySQL8&#xff0c;使用的存储引擎是Innodb。 通常情况下&#xff0c;分页接口一般会查询两次数据库&#xff0c;第一次是获取具体数据&#xff0c;第二次是获取总的记录行数&#xff0c;然后把结果整合之后&#xff0c…

【VB6|第19期】vb6通过COM组件操作Excel

日期&#xff1a;2023年7月3日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xff…

软件测试工程师必备的27个基础技能

混迹于软件测试这么长时间了&#xff0c;一直想写一篇关于软件测试的经验分享的文章&#xff0c;但苦于工作原因迟迟未下笔。最近终于有了些闲余时间&#xff0c;遂决定把自己的心路历程及所感所想记录下来&#xff0c;与各位同行共勉。 以我多年的工作经验来看&#xff0c;软…

处理glibc堆栈缓冲区溢出漏洞(CVE-2018-11236)

GNU C Library&#xff08;又名glibc&#xff0c;libc6&#xff09;是一种按照LGPL许可协议发布的开源免费的C语言编译程序。 GNU C库&#xff08;aka glibc或libc6&#xff09;中的stdlib/canonicalize.c处理非常长的路径名参数到realpath函数时&#xff0c;可能会遇到32位体系…

判断平台现货白银价格趋势方法有哪些?

新手投资者面对平台现货白银走势总是束手无策&#xff0c;那是因为新手投资者对市场的运行规律&#xff0c;以及对一些常用的技术分析工具并不熟悉&#xff0c;最后无法判断市场走向&#xff0c;所以交易获利也无从谈起。下面&#xff0c;我们一起来讨论一些可以判别趋势的工具…

imazing是什么软件? iMazing 2.17.3备份神器,iPhone相册管理超方便!!!

相信很多小伙伴们听说过imazing&#xff0c;那么imazing这是一款什么软件呢&#xff0c;imazing是一款iOS设备管理软件&#xff0c;这款软件支持对基于iOS系统的设备进行数据传输与备份。 imazing是什么软件 答&#xff1a;imazing是一款iOS设备管理软件。 imazing是一款iOS设…

Steam搬运饰品诈骗套路,及补救措施

这几个月&#xff0c;圈内频频有人曝出Steam库存饰品被盗。今天我就来聊聊饰品安全问题&#xff0c;相信也是大家最关注的问题。 其实&#xff0c;市面上绝大多数库存被盗问题都是因为Steam安全信息泄露导致的。 最常见的钓鱼信息就是从Steam自身而来&#xff0c;例如Steam好友…

【测试数据】关于多路播放在mesh中卡顿问题

测试环境 ![(https://img-blog.csdnimg.cn/ab2c3fb7f4b945c3af2a8ecf36bd3d99.jpeg#pic_center) 各种场景数据 WEB端播放 web6路 VID_3路慢点 web第三路慢点 客户端播放 客户端6路 客户端vsWeb wifi vS mesh wifi Vs Mesh链路 wifi下还是很流畅&#xff0c;九路

用C语言实现“括号匹配“问题

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

Springboot整合Activiti详解

文章目录 版本依赖配置文件需要注意的问题画流程图activiti服务类进行编写流程部署流程定义启动流程流程实例 测试流程启动流程完成任务受理任务 版本依赖 开发工具 IDEASpringBoot 2.4.5&#xff08;这里我试过SpringBoot 3.1.1版本&#xff0c;Activiti没有启动&#xff0c;…

现代卓越首席咨询顾问张智喨受邀为第十二届中国PMO大会演讲嘉宾

现代卓越首席咨询顾问张智喨老师受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;BANI时代下如何打造价值导向型PMO。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 在BANI时代下&#xff0c;企…

机器学习14:稀疏性-Sparsity

现实世界中&#xff0c;问题的特征的数量往往是很大的&#xff0c;而其中起决定性作用的往往是很小的一部分&#xff0c;稀疏规则化算子的引入会学习去掉这些没有信息的特征&#xff0c;也就是把这些特征对应的权重置为 0。 1.稀疏性正则化&#xff1a;L₁ 正则化 稀疏向量通常…

Docker容器初识篇

学习-https://vuepress.mirror.docker-practice.com/basic_concept/container/ https://www.bookstack.cn/cate 什么是Docker Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后&#xff0c;在其上运行一个完整操作系统&#xff0c;在该系统上再运行所需应…

时间序列分解 | Matlab集合经验模态分解EEMD的信号分解

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列分解 | Matlab集合经验模态分解EEMD的信号分解 部分源码 %--------------------