12819| 9
|
[教程] 试玩系列 | 路上捡到一台机械臂,给它点颜色瞧瞧? |
大家好,我就是那个走在路上经常捡到宝的 这话说出口,我自己都不信,哪有那么好的运气!其实这是朋友送我玩的,你也想要这台机械臂么?什么!你不要机械臂,你想要那个朋友?那是不可能的! 既然白嫖了一台这么高端的机械臂,总是要玩点什么才对得起它!那就给它点颜色瞧瞧,让它以后乖乖听我话。那今天就来设计一个 在开始完整的教程之前,我们先来看一下效果演示视频: 机械臂介绍首先我们来认识一下这台机械臂:它是一台五自由度机械臂,采用了 Arduino Uno 作为主控板,所有关节采用串行总线舵机进行控制,也就是只要一根信号线,就可以同时对机械臂上 5 个舵机进行控制,另外它还可以采用 Mixly 图形化编程。由于采用了 Arduino 主控,加上可以 DIY 的结构,所以它具有很强的开放性和扩展性,不仅可以无缝集成各种 Arduino 中常用的传感器,还可以改装结构,应用在各种项目中。 为了配合它特有的串行总线舵机控制,它还有专门的 Arduino 扩展板: Ardurobo1 主要具有如下功能特性:
将 Ardurobo1 扩展板按照引脚对应关系直接插在 Arduino Uno 上即可完成连接,如下图所示: 颜色传感器介绍由于这个项目涉及到色块分拣,也就是要先进行颜色识别,所以我们这里采用了颜色传感器,当然用其他可以识别颜色的传感器也是没有问题的,比如说图像识别传感器。这里我们先来介绍一下颜色传感器和它的使用方法。 颜色传感器有很多种型号,比如 TCS230、TCS34725 等,他们的使用方法基本类似。本项目中使用的颜色传感器型号为 TCS34725。 TCS34725 是一款低成本,高性价比的 RGB 全彩颜色传感器,传感器通过光学感应来识别物体的表面颜色。支持识别红、绿、蓝(R、G、B)三基色,可以输出对应的具体数值,帮助您还原颜色本真。 为了提高精度,防止周边环境干扰,一般会在传感器底部添加一块红外遮光片,最大程度减小了入射光的红外频谱成份,让颜色管理更加准确。板载自带了高亮LED,让传感器在低环境光的情况下依然能够正常使用,实现“补光”的功能。模块采用 I2C 通信,可以很方便的接到主控板上。 接下来我们就来学习一下在 Mixly 中如何编程实现颜色传感器识别颜色。 颜色传感器电路连接我们把颜色识别传感器接在 Arduino Uno (或 Ardurobo1 扩展板)的 I2C 引脚,如下图所示: 读取 RGB 颜色值Mixly 中有专门的 TCS34725 颜色传感器编程模块,它位于 我们来编写一个程序,分别获取不同颜色方块的 RGB 值,并且在串口中打印出 RGB 值,程序如下: 上传程序,打开串口监视器,观察不同颜色的方块,在串口监视器中的返回结果:
色块颜色分辨观察上面返回的结果,我们可以发现:
根据这个结果,我们进行一下推理分类,在检测 4 色方块场景中,可以判定:
根据上述推理,编写程序,根据检测到的 RGB 值判定方块的颜色:
色块分拣机械臂有了颜色传感器的使用基础,设计色块分拣机械臂项目就不难了。 机械臂电路连接我们采用特制的防反接线,把颜色传感器接在 I2C 引脚,把点阵屏也接在 I2C 引脚,把机械臂上的舵机串联接在 CH2 通道上(或者其他 5 个通道都可以),如下图所示。这里增加点阵屏模块是为了显示识别到的颜色名称(缩写)。 场景搭建接着根据视频中的演示效果,我们来搭建一个简单的场景。首先找一块白色泡沫,在正面中间位置开个孔、在背面挖个槽,将颜色安装到卡槽中,颜色传感器的识别芯片和 LED 灯光朝上,如下图所示: 然后找 4 个盒子,分别标上红色、绿色、蓝色、黄色字样,代表不同色块的分拣盒。 然后将机械臂、颜色传感器、分拣盒按下图所示方式摆放。 至此,色块分拣机械臂的简易场景搭建完成,下面开始机械臂动作设计与程序编写。 机械臂动作设计一开始我觉得机械臂的抓取动作设计很麻烦,要一个舵机一个舵机去调节角度,要完成这么多抓取的动作,肯定要花费很长时间了。而且不同动作之间的路径与运动规划,那就更难了!结果朋友告诉我,它有个专门的动作编辑器软件,只要用手对给它凹凹造型,掰掰关节,然后用软件记录下来就可以了。有这么简单的方法,那还不赶紧试试! 这里动作编辑器软件的使用,就不详细展开了,反正很简单,如果后面使用这个机械臂的老师多的话,再专门写一篇动作编辑器的教程好了。 首先将机械臂与专门的动作编辑器软件通过串口连接的方式进行连接,然后利用凹造型的方式,设计一系列系列机械臂的动作。注意,这里每个动作实际上就代表机械臂的一种造型,可以让机械臂从任意位置运动到指定造型位置,这里的动作就类似编程时执行的不同语句。而不同造型之间的位置或动作切换,机械臂会自动生成顺滑的路径规划,完全不需要我们去计算角度。一个字,简单!真香! 色块分拣的不同动作设计如下,每个动作都可以让机械臂到达指定的一个位置,并且维持该状态。由于采用手动凹造型的方式进行动作设计的,所以这里的动作也不唯一,每个人可以根据自己的需求设计不同的动作位置。当然你也可以在手动凹造型之后,对每个舵机的角度进行精确调整,使得动作更加精确。 然后呢,有些任务或者动作之间可以组合在一起,将它们合并成一个动作组(软件中叫“宏”),这些组合在一起的动作,可以用来完成一些特定的任务,方便其他动作或者任务进行调用,这里的动作组就类似编程时的函数。 色块分拣任务的不同动作组如下: 设置完动作组以后,需要生成动作组的定义,在软件中叫 可以点击复制,将这些宏定义暂时复制到一个文本文件中:
设计完机械臂的动作之后,就可以在 Mixly 中进行编程了。 Mixly 程序编写首先来看一下这个机械臂对应的 Mixly 图形模块有哪些,如下图所示。实际上这些模块的功能,就是实现对舵机的各种控制方式。 而我们这个色块分拣项目的 Mixly 程序比较简单,只需对上面色块颜色分辨程序稍加修改即可:
这里特别提一下 有了执行宏 编号这个程序模块,在 Mixly 编程中就只需要去调用机械臂的动作或动作组就好了,就像调用函数一样简单,非常方便。 编写完 Mixly 程序后,上传到 Arduino 开发板中,就可以看到文章开头演示视频中的效果啦。 总结今天的教程就到此结束。在这篇文章中,我们学习了颜色识别传感器的原理、接线方法与编程方式,另外还学习了如何利用颜色传感器去分辨不同的颜色。最后结合点阵屏模块,设计了一个色块分拣机械臂项目。由于这个机械臂集成了动作编辑器软件、以及 Mixly 图形化编程,因此使用起来是非常简单的,非常适合玩腻了各种智能小车的老师、同学来入门其他机器人项目,后面我也会在更多的项目中用到这个机械臂,一起来期待吧~ 欢迎关注最后,欢迎扫码关注公众号:铁熊玩创客,不定期更新创客制作、技术教程、创客教育等相关内容。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed