用Arduino对机械臂二次开发

时间:2024-04-04 08:22:49

0.前言

这篇文章来源于计算机概论老师布置的Arduino实验作业(一个小组做的),我整理一下当时交的报告以凑一篇博客,也算对自己作业的一个总结。

机械臂用的是我们老师给的Dobot机械臂,某宝上有吧,基础套件差不多10000。想看演示视频的可以qq我:2364339378。(CSDN上传不了)Arduino开发环境的话直接搜Arduino中国社区下载吧,挺快的,不建议搜官网,毕竟外网,下载速度慢出天际。。。

1.项目背景

本作品为控制机械臂动作的设计。

机械臂在技术上和移动机器人有着密切相关的联系,有着关于自动控制、传感器技术、电子电路上的重要实践意义。通过对基本功能进行不同方向,多方面的扩展可以为我们的生活提供各种各样的便利。这类设备也可以应用于复杂多样的工作环境,在民用和军用上都可以有各种各样颇有意义的用途。

机械臂是能模仿人手和臂的某些动作功能,用以按固定程序抓取、搬运物件或操作工具的自动操作装置。它可替代人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人身安全,因而广泛用于机械制造、冶金、电子、轻工和原子能等行业。

此外,google已将强化学习和深度学习相结合融入其中,训练机械臂的长期推理能力。如果机器人是被设计用来在可控环境下进行高效的重复工作,那么这个任务就相对来说简单,比如设计一个在流水线上组装产品的机器人。但要是想要设计能够观察周围环境,根据环境决定最优的行动,同时还能够对不可预知的环境做出反应的机器人,那难度就会指数级的增长。目前,有两个有力的工具能够帮助机器人从试验中学习到这些技能,一个是深度学习,一个是强化学习。深度学习非常适合解决非结构化的真实世界场景问题,而强化学习能够实现较长期的推理,同时能够在一系列决策时做出更好更棒的决策。将这两个工具结合到一起,就有可能能够让机器人从自身经验中不断学习,使得机器人能够通过数据,而不是人工手动定义的方法来掌握运动感知的技能。

而机器人执行任务的主要手段正是通过“自己的”机械臂,这就像我们人做很多动作都是通过我们人的手臂一样,所以要研究机器人的实际应用,先研究机械臂自是重中之重。

另外,强化学习和深度学习算法的研究也是当今计算机领域研究的主流方向。而我们把此落实到实际应用中必定也能加深我们对这些概念的深刻理解,拓展我们的学习眼界。

基于以上原因,我们小组的研究眼光落在了机械臂相关方面上,我们组现主要研究了机械臂按固定程序抓取、放下、操作工具的自动装置。后期则准备进一步以此次的开发为基础,把基本动作建模,利用Dobot机械臂提供的python api接口融合强化学习算法以实现更好的开发的效果。虽不至于到google研发的效果,但我相信一定会有很大的改进,至少不再会是纯粹的“机器”。

 

2.创意描述

用Arduino语言对机械臂进行二次开发,控制机械臂的动作。

创新点:

(1)有充足的时间给人调节物体放到机械臂爪子面前抓

(2)机械臂底座来回旋转两次后(此时机械臂的爪子同时也在顺逆时针旋转),看起来有一定的酷炫效果

(3)把物体放回原处后自己回到初始位置,便于下一次继续抓取物体

 

3.代码实现

用Arduino对机械臂二次开发

用Arduino对机械臂二次开发

用Arduino对机械臂二次开发

4.产品展示

整体外观图和作品细节图如图8,9所示:

用Arduino对机械臂二次开发用Arduino对机械臂二次开发用Arduino对机械臂二次开发

图8  整体外观图

用Arduino对机械臂二次开发用Arduino对机械臂二次开发用Arduino对机械臂二次开发

图9  作品细节图

 

5.故障及问题分析

(1)问题:文献阅读有一定的障碍

  解决方案:耐下心来,仔细研读,难点大家一起讨论,深入思考,合力解决

(2)问题:未能对参数进行正确的定义(如运动模式,状态,反映爪子抓取东西的degree值),导致程序编译错误或达不到想要的效果

解决方案:进行了若干次实验,不断思考摸索指令格式及其本质,最终确定一系列正确的参数

(3)问题:机械臂放回物品后无法回到初始位置

  解决方案:若干次实验,发现应在机械臂放回物品的代码后面加上delay(1500)(>=1500)都可以,我们小组猜想应该是要让机械臂放回物品后缓一下才能继续执行之后的操作,但具体原因仍然不清楚,感觉从逻辑上来讲不应该delay()且delay(>=1500),现在此问题还是让人一头雾水,但我相信我们随着自己知识的日渐丰富,应该最终能思考出来。

 

6.实验思考

通过本次实验,我们已经基本实现了控制机械臂抓取固定位置的东西并完成一定难度的动作然后把东西放回原处,同时使机械臂返回初始位置的技术。我们想,这显然可以应用于制造业承担重复组装等任务当中去。当然这项技术早已被人实现。然而不掌握基础技术(固定地抓取东西),我们又如何进一步把强化学习等机器学习知识融入到其中呢?因此我们准备之后对此产品进行更深层次的开发,利用Dobot机械臂提供的python api接口,通过 python语言将强化学习等机器学习知识融入其中,把基本动作建模,以实现机械臂更多功能的开发。显然,机械臂将通过人类或其他途径,在与外界环境的交互中学习各种各样的动作。可以想见,在不久的未来机械臂将不仅能胜任完成制造业重复组装的任务,还能实现帮助人们完成家务,替人们完成危险任务等事情(可结合到机器人中进行开发)的功能,“到那时,你不需要告诉机器人旋转20度并向前10分米,而只需要告诉机器人,‘拿一个放在厨房的苹果,就可以了。