叶伟康 薛宇曦 吴慧莹 赵敏
摘 要:在喷药机器人比赛中,视觉识别成为机器人完成任务不可缺少的重要功能。为了实现机器人自主识别和喷药,文章采用了Pixycam视觉模块,以SPI方式与Arduino控制器相连接,设计了可靠的运动系统和喷药系统。通过Pixy自带的CCC算法来实现对目标的识别、接近和喷药。
关键词:机器视觉;颜色追踪;Pixycam;Arduino
根据2019年中国机器人大赛比赛规则,在机器人喷药项目中需要对杂草进行识别。然而市面上普遍流行的视觉模块都具有算法复杂、入门要求高等特点,不利于初学者接触和使用。经过查阅、讨论、研究后,发现Pixy作为一个集成化程度比较高的视觉模块,非常适合刚接触机器人视觉的创客使用。为了能更好地识别杂草,达到准确喷药的目的,本研究将Arduino控制器和Pixycam視觉模块相结合,使用C语言进行编程。本文着重介绍Pixycam简单视觉系统的原理和使用方法,并结合案例分析来实现对目标位置、大小、颜色的精确识别,从而达到比赛所要求的精准喷药效果。
1 主要硬件介绍
1.1 Arduino UNO介绍
Arduino UNO板基于ATMEGA328单片机。同时,基于AVR平台,对AVR库进行了二次编译封装,大大降低了软件开发难度。只需根据自身系统要求下载官方Arduino IDE便可以编程。适合初学者编程、学习[1]。
1.2 Pixycam介绍
Pixy是内基梅隆机器人研究所在2014年推出的视觉模块,可以支持连接不同的控制器,支持多种接口选项,如串行外设接口(Serial Peripheral Interface,SPI)、通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)串行、USB 、集成电路总线(Inter-Integrated Circuit,I2C)或数字/模拟(Digital-to-Analog,D/A)输出,Pixy的CCC算法(计算来自图像传感器的每个RGB像素的颜色(色调)和饱和度,并将它们用作主要过滤参数)[2]能够记住7种不同的颜色代码,通过PixyMon软件可以轻松捕捉需要识别物体的颜色[3]。
1.2.1 Pixy视觉模块的原理
所谓图形处理就是视觉传感器将图像信号转换为连续电压信号,最后转换成数字信号进行处理的过程。如今的视觉识别系统主要有两种搭建方案:
(1)使用Matlab或OpenCV等软件来进行编码,搭配一般的摄像头来实现图像处理。
(2)使用Pixycam或Openmv等具有图像处理能力的相机,通过官方的用户界面来实现简单的视觉识别。
虽然OpenCV在很多高端领域应用广泛,但它上手比较困难,具有非常复杂的算法。而Pixycam相比较而言更加简单方便,同时也能达到需要的效果。因此,本文选择Pixy作为机器人的识别模块。
1.2.2 Pixy视觉模块使用方法
Pixycam作为一款集成化比较高的视觉传感器,通过官方软件平台PixyMon来实现对目标的选取,以识别杂草为例,打开PixyMon,只要简单的3步:选择Action→选择Set signature 1→在画面中选择目标,就能选中需要识别的目标,如图1所示。
识别完杂草之后,需要在Pixycam和Arduino之间建立起通信。这里采用的是SPI连接方式(Pixy同时支持UART串行、I2C、数字/模拟输出等)。在连接之前需要把Pixycam关于Arduino的库文件安装到Library文件夹下。这样就能够在Arduino IDE上直接调用封装好的程序进行编程。由于使用的是SPI,数据传输速度总体来说比I2C要快,速度可到达1 Mbits/s,能进行数据高速处理。在Arduino IDE中只需要引入#include
2 硬件电路与程序设计
总体方案设计如图3所示。
根据比赛规则,喷药机器人需要对c区花盆中的杂草进行识别。因此,需要机器人能够自主接近目标并进行喷药。
2.1 硬件电路的组成
硬件电路由Arduino UNO控制板[4]、Pixycam视觉识别模块、超声波模块、降压模块(Arduino板推荐输入电压为7~12 V)、步进电机驱动模块和SX1278无线模块组成。
(1)Arduino UNO作为控制板负责接收和处理Pixycam传输过来的数据,并控制运动系统接近、喷药系统进行喷药。
(2)Pixycam视觉模块和超声波模块协同识别和寻找目标。
(3)步进电机驱动器共阳极连接,脉冲控制车轮运动。
(4)SX1278无线模块通过UART串行连接,把Arduino UNO串口数据传输给PC端,方便对数据进行分析。
2.2 喷药装置构成
喷药装置主要由SG90舵机、小型水泵和扇形喷头组成。舵机可以调整喷头的方向,根据Pixy处理后通过串口传输输出关于目标的x方向和y方向的坐标,调整喷头朝向,最后,在目标范围内进行准确喷药。
2.3 程序设计
如图4所示,启动喷药机器人后,Pixycam开始寻找目标(杂草)并通过超声波模块来确定目标位置。在确定目标位置后,步进电机驱动车轮,使喷药机器人接近目标。通过Pixycam输出的目标坐标x,y值,控制舵机角度从而调整喷头,使其对准杂草并喷药。完成喷药后继续前进寻找下一个目标[5]。
3 结语
根据比赛要求设计的喷药机器人,以Pixycam模块为视觉识别核心,能够完美实现对目标(杂草)的识别。同时,Pixycam由于集成化程度高、使用简单等特点,能够对各种目标进行识别和追踪。在之后的研究中,运用相同的原理可以将Pixycam使用到循迹、避障、识别二维码等项目中,并实现更多较为复杂的功能。希望Pixycam使更多的创客能够认识到Pixycam简单而强大的视觉识别能力。