机器人制作开源方案 | “AIBOT”-多功能货物搬运机
作者:王晨曦、敖鑫、王威威、安尚琦
单位:北京理工大学
指导老师:李忠新、朱杰
一、场景调研
? ? ? 如今搬运机在我们的生产作业及生活中都起着比较重要的作用,在现代社会对升降机需求的增多,市场的不断扩大,使得升降机的种类也不断丰富起来,满足了不同作业场合的需求。 目前有移动式、固定式、车载式、铝合金式、自行式等升降机类型,在社会大量需求的推动下,升降机的发展步伐及空间也得到了扩大 ,目前不管是在工厂、企业、机场、码头、酒店等需要高空维修、安装、清洁的场所,都能随处可见升降机的存在,可见给我们的日常作业带来了很大的便利。我们小组在设计前,对搬运机器的工厂应用进行了一定调研,主要得出如下结论:
? ? ? ① 在很多危险场合仍然需要人工操作实现货物的运输与堆叠,这不仅是一种人力资源的浪费,同时也是对工作人员生命安全的不负责。而出于多种特殊的需求,一些工厂或仓库需要运输存放危险品,当需要在危险场景下的升降作业时,无人智能的升降装置便派上大用场。
? ? ? ② 一些加工生产线上除了需要货物能够竖直升降外还能完成某些功能的设备,以水果加工为例,水果加工生产线需要预先对水果进行清洗,这就需要有擦洗等辅助功能。
二、机器人功能实现逻辑
2.1 硬件部分--升降平台
(1) 齿轮传动-动力源
? ? ? 启发于各类物理书中的经典例题:滑轮与铁块的经典组合,我们用齿轮组装拼装成了一个滑轮,利用齿轮将舵机旋转的位移转化为竖直方向的位移,从而实现了升降机的升降功能
(2)固定导轨-轨迹控制
? ? ? 为了使升降机在运行的过程中更加平稳,我们在运行的轨迹中使用了额外的长铁签让升降的篮筐与与铁签配合,从而制成了导轨(红色虐线中间),可控性和安全性极强的升降平台。
(3)金属篮筐-装载货物
? ? ? 我们将装载货物的金属篮筐系在位于齿轮制成的滑轮上细线上,通过控制滑轮的转动速度控制整体的升降速度,我们还在铁质篮筐中安装了红外传感器,吹气孔,擦洗设备,在应对不同货物时可多样性的选择不同的处理方法。
2.2 软件部分
(1)编程软件
? ? ? 我们以arduino为编程的核心语言,为简化编程的步骤同时提高编程的准确性,我们采取了图形化编程对整体装置实现了控制。
(2)程序设计
? ? ? 在程序中我们多采用延迟控制,通过计算好机构整体上升和下降所需时间,让控制升降的360舵机和控制推出物体的270舵机在完成对应功能后在原地延迟停滞,直到另外的部分功能完成后再恢复运动,直到再次回到初始状态进行下一次运动。
以水果为货物设计装置的运行逻辑:
三、机器人本体技术路线
3.1 中央运输手臂
中央运输手臂的总体设计如下图所示:
? ? ? 中央运输手臂的旋转功能是通过安装在中心旋转轴上的270°舵机实现的,为了保证旋转的流畅度,我们在中心旋转轴的底部安装了四个小轮,又在手臂的最前端安装了一个万向轮。在旋转时四个小轮同时跟着中心轴旋转,前端的万向轮以旋转轴为圆心做半径不变的匀速圆周运动,这样既保证结构的稳定性,又不会影响旋转的流畅性。
中央运输手臂的伸缩功能是通过安装在旋转轴上方的连杆结构实现的,同时为了确保手臂能沿着直线进行伸缩,我们加装了两根导轨约束手臂的伸缩方向。这样中央手臂可以通过收缩保障在旋转过程中不影响其他平台的正常工作,平稳流畅地实现各个平台间的联系。
3.2 推进装置
? ? ? 在中央运输手臂、清洗模块、去皮模块、切割模块上都各自安装有能伸缩的推进装置,主要是通过连杆结构和导轨的配合使得推进片能在一个方向上自由伸缩,实现推进功能,使得水果能够在各个功能模块间转移。
四、作品创新点
? ? ? ① 以中央手臂运输结构为核心,通过其旋转和伸缩的功能可以建立极坐标系,如下图所示,中央的机械手臂可以通过一定的计算实现二维平面上几乎是任意位置的定点到达,具有充分的自由性和可控性。
? ? ? ② 舵机上置考虑到我们的机器需要涉水或在一些危险的场景中工作,为了减少对舵机的损伤,我们决定采用舵机 上置的方式,尽可能减少复杂场地环境和危险货物对装置运行带来的阻碍。
? ? ? ③ 自动感应,配合性强全程通过红外传感器的感应实现功能,减少人工操作与货物的接触,很好地保障工作人员的安全。可以通过自主调节360°舵机的转速改变货物运输速度和升降位置的高低,同时能够与现有的叉车、传送带等装置配合协作,实现更加智能的工作,进一步减少工作人员与危险产品的接触,同时简化工作流程。
? ? ? ④ 各个模块间只要将初始平台高度调成一致即可实现工作配合,可以自由调节模块的高度,满足多种复杂的地形需求,同时占地面积较小又便携,适合于家庭或个体商户在多种不同情况下的使用。
五、作品难点及解决/改进方案
? ? ? ① 我们起初设计时只打算通过旋转或履带的传送完成各个功能的配合,后来发现这样各个单独的模块与传送装置之间的配合会比较困难,于是我们大胆利用极坐标的特性设计了如下图所示的可以伸缩、旋转的中央传送手臂,这样就可以轻松实现定点的配合。
? ? ? ② 装置运行时我们发现容易出现球形货物滚动,从装置中脱落,无法按照既定路线运输的困难。于是我们通过程序的改写和延时的增加改变了伺服电机的运转速度,使得推进装置和旋转装置在运送货物和不运送货物时的速度有了区别,这样既可以节省时间也可以保障货物在运输过程中的稳定性。同时我们在很多水平或垂直运行的结构上加入了导轨的限制,使得其能在我们期望的方向上顺利运行,减少了货物运输过程中的阻碍。
? ? ? ③ 受到硬件设备的影响,我们缺乏足够的长杆实现一次性推进的功能。于是我们利用两个舵机的配合使用了一些二次推进的结构,如下图所示,虽然结构不够简化,但是最终实现了将水果运输到指定位置的功能。
六、附录
部分代码
#include <Servo.h>
Servo servo_pin_7;
Servo servo_pin_4;
Servo servo_pin_11;
void setup()
{ pinMode( 14, INPUT);
servo_pin_4.attach(4);
servo_pin_7.attach(7);
servo_pin_11.attach(11);
void loop()
{ if (!( digitalRead(14) ))
{ delay( 5000 );
for( int k0 = 30; k0 < 54; k0++)
{ servo_pin_11.write( k0 );
delay( 100 ); }
delay( 1000 );
servo_pin_7.write( 100 );
delay( 2000 );
for( int i = 0; i < 80; i++)
{ servo_pin_4.write( i );
delay( 100 ); }
delay( 2000 );
servo_pin_4.write( 0 );
delay( 45000 );
servo_pin_7.write( 60 );
delay( 2000 );
for( int k = 56; k < 85; k++)
{ servo_pin_11.write( k );
delay( 100 ); }
delay( 1000 );
servo_pin_7.write( 100 );
delay( 2000 );
for( int i2 = 0; i2 < 80; i2++)
{ servo_pin_4.write( i2 );
delay( 100 ); }
delay( 2000 );
servo_pin_4.write( 0 );
delay( 2000 );
servo_pin_7.write( 60 );
delay( 2000 );
for( int k5 = 85; k5 > 54; k5--)
{ servo_pin_11.write( k5 );
delay( 100 ); }
delay( 1000 );
delay( 30000 );
for( int k6 = 54; k6 < 85; k6++)
{ servo_pin_11.write( k6 );
delay( 100 ); }
delay( 2000 );
servo_pin_7.write( 100 );
delay( 28000 );
servo_pin_7.write( 60 );
delay( 2000 );
for( int k7 = 85; k7 > 54; k7--)
{ servo_pin_11.write( k7 );
delay( 100 ); }
delay( 1000 );
delay( 8000 );
for( int k3 = 54; k3 < 120; k3++)
{ servo_pin_11.write( k3 );
delay( 100 ); }
delay( 1000 );
servo_pin_7.write( 100 );
delay( 2000 );
for( int i3 = 0; i3 < 80; i3++)
{ servo_pin_4.write( i3 );
delay( 100 ); }
delay( 2000 );
servo_pin_4.write( 0 );
delay( 40000 );
servo_pin_7.write( 60 );
delay( 2000 );
for( int k4 = 120; k4 > 30; k4--)
{ servo_pin_11.write( k4 );
delay( 100 ); }
delay( 1000 );
servo_pin_7.write( 100 );
delay( 2000 );
for( int i4 = 0; i4 < 80; i4++)
{ servo_pin_4.write( i4 );
delay( 100 ); }
delay( 2000 );
servo_pin_4.write( 0 );
delay( 2000 );
servo_pin_7.write( 60 );
delay( 2000 ); }
else
{ servo_pin_4.write( 0 );
delay( 4000 );
servo_pin_7.write( 60 );
delay( 2000 );
servo_pin_11.write( 30 );
delay( 2000 ); } }
*更多资料请见:【S035】“AIBOT”-多功能货物搬运机
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!