APP下载

基于ARM的智能接水机器人设计方案与仿真

2016-06-02中国矿业大学计算机科学与技术学院唐阳雨秦雷雷

电子世界 2016年9期
关键词:机械臂

中国矿业大学计算机科学与技术学院 唐阳雨 秦雷雷 闵 玄



基于ARM的智能接水机器人设计方案与仿真

中国矿业大学计算机科学与技术学院 唐阳雨 秦雷雷 闵 玄

【摘要】为了实现自动完成循迹和接水的智能家居机器人,本文提出了一种基于嵌入式系统和51arduino控制的智能接水机器人设计方案。小车以s3c2440为核心,以51duino控制机械臂及电机。主板上拓展的摄像头模块用以图像采集,用s3c2440进行图像处理,实现小车的自动寻迹,在此基础上,为使小车行驶过程中避开障碍物,另外拓展了红外避障功能。用户直接在ARM上设置命令,小车便可以自主完成找到目标饮水机,设计到达路径,用机械臂点击饮水机开关,最后完成搬运水杯回原地的一系列动作。

【关键词】视觉识别;OpenCV;自动避障;机械臂;电机控制

0 引言

随着科技的高速发展,智能机器人早已走出了实验室,进入各种领域中。智能车以其机动性和灵活性,尤其受到追捧。大到军事中的探测危险和排除险情,小到生产制造中的无人搬运,智能车无疑是这些领域中的佼佼者。近年来社会老龄化的问题日益加剧,尤其在中国,照顾老人成为当代许多独生子女的一大难题,在这样背景下极大促进了智能家居系统的发展。有人预言智能家居机器人在未来5年将像手机一样普及。本文设计的是一种基于ARM的智能接水机器人,此前也有研究者进行过类似的智能机器人设计。侯操等人设计的基于ARM的智能车无线视频监控系统,是一款以s5pv210 处理器为核心的智能车无线视频监控系统,内置控制服务器和网络视频服务器,用户通过上位机客户端与服务器建立连接实现对系统的控制,也可以通过wifi 使用智能终端利用游览器登录web服务器实现控制操作[1]。但对于大多数的老年人而言,通过上位机客户端或网页来控制机器车不是件容易的事。本文设计的智能接水机器人摒除了用上位机进行控制,是一款依靠视觉识别的智能机器人,无人控制,能自主寻找目标并执行任务。

1 智能接水机器人整体设计框架

1.1 智能车总体框架

以s3c2440为整个嵌入式系统的核心,嵌入linux系统。移动载体用红外传感器进行探测,实现避障功能,外接摄像头模块用于图像采集,将openCV库函数导入ARM进行图像处理实现视觉识别。ARM通过串口通信向51drino发送指令,51drino控制机械臂完成接水动作,控制电机使小车正确移动。

1.2 智能车主体

车身本身作为一种运载工具,要求能平稳的载重。模拟车采用履带底盘,其重量大,使车身更稳固。履带与地面接触面积大,缺点是速度慢。但本文设对速度没有太高的要求。模拟车尺寸为285*225*115(长*宽*高),车重3.2kg,有5对负重轮,有较好的平稳载重能力。车前装有四自由度的机械手,具有较好的灵活性。经实验,机械臂完美载重100克。车身分为上下两层,上层固定ARM主板,下层固定51duino开发板。图1a、图1b、图1c分别是模拟车俯视图、后视图和实物图:

图1a 模拟车俯视图

图1b 模拟车后视图图1 智能车总体设计图

图1c 模拟车实物图

图2a 杯子设计图

图2b 饮水机设计图

1.3 饮水机及水杯设计

饮水机和杯子都是特殊设计的,如图2a和图2b所示。饮水机机身布满红蓝相间的条纹,饮水机的开关采用一个圆柱形纯蓝色按钮,杯子有一个特制的长方体把手,把手两侧都有凹槽(图中只画出一侧),左侧面为纯蓝色。智能车通过颜色和形状识别目标,当智能车找到饮水机后,用机械臂按下开关持续4~8秒(根据用户对水量需求的设定),带杯子接完定量的水后,机械臂张开机械抓,伸向杯子把手,校准使机械臂对准凹槽,闭合机械抓卡紧凹槽,端走杯子。此方法能让机械臂更平稳得端着杯子,杯子不易松脱。

2 视觉识别

2.1 总体流程

图3 视觉识别总体流程图

利用ARM9(即S3C2440芯片)完成视觉识别的功能,然后由ARM9向51duino发送指令,控制智能车的前进后退以及机械臂的抓取动作。ARM9内已经嵌入Linux系统,摄像头直接通过USB口连接ARM9。在Linux中安装motion软件(ubuntu14.04下交叉编译的开源小项目,能够在嵌入式Linux上运行),移植OpenCV图像处理库。由motion完成图像采集功能,由OpenCV完成图像识别的功能。找到饮水机后,精确判断出按钮的位置和杯子的位置,随后由ARM将控制指令发送给51duino,控制机械臂按下按钮或者拿起杯子。当智能车进行杯子抓取时,图像处理需要判断出机械爪是否对准凹槽内,如果已经对准,机械爪扣紧,卡入凹槽,若没有,进行校准。

2.2 目标识别

智能小车上安装了天敏720P高清摄像头,二自由度舵机云台,可以进行多视角图像采集。

本文设计采用移植OpenCV库进行图像处理。依据文献[2],OpenCV具有如下优点:

①跨平台;②独立性好;③源代码公开;④具备强大的图像和矩阵运算能力;⑤运行速度快。总之,有了OpenCV,科研开发人员只需添加自己的编写程序,直接调用OpenCV中的函数即可实现,这样不仅降低了开发程序的难度,而且缩短了相关程序的开发周期。

实现智能小车自主接水的第一步是识别目标饮水机的所在。在机器人视觉中,颜色是物体识别和认知过程中必不可少的信息[3]。本文提出的设计是一种基于颜色特征的目标识别。首先,要先选定使用的颜色空间。常用的颜色空间如RGB,YUV,HSV等。

在OpenCV中,RGB图像的每个像素使用三个字节表示,RGB的通道顺序为BGR。如图4[4]所示。

图4 彩色RGB图像的存储示意图

基于RGB色彩模式的识别,可以将饮水机设计成三原色之一。本文将其设计成蓝色,因为家居环境中蓝色的物品相对较少,红色的物品如挂历、春联、奖状等会影响目标识别。

图5 改变颜色深度后R、G、B及色调、饱和度、亮度的变化值

当物体为蓝色时,它的B通道的值就会大于R通道和G通道,而R通道和G通道的值差距不大,这点可以直接从windows画图工具的调色板中得出。如图5所示。

由此可以选择一种蓝色深度,建立模型通过R、G、B三者间关系判断是否目标蓝色饮水机。但这只是理想中的情况,现实中,采集的图像的像素值会因为光照强度、拍摄角度等发生改变,并且三个通道的值不是线性关系,因此不好判断。但从图6可以看出,蓝色的深浅改变后,在色调、饱和度、亮度三者中只有亮度在改变,而色调和饱和度是不变的。因此考虑用YUV颜色空间来进行处理。YUV颜色空间中,亮度Y和色差UV相互独立且存储容量小[5]。YUV 和RGB之间是线性转换的,转换公式如下:

为了划分目标和背景,要合理选择目标颜色的阈值,包括上阈值和下阈值。首先用摄像头采集目标饮水机图像。

图6a 饮水机的简易模型

图6b 切割出的目标块

截取图中目标,分别作Y,U,V三个分量的直方图:

图7a Y分量直方图

图7b U分量直方图

图7c V分量直方图

图8目标识别流程图

V分量上没有明显变化,Y分量因光照等因素变化较大,所以最后选择U分量进行判断。图中可以看到U分量的范围在[6,35]。

若只用一种颜色判定还是易受其他非目标因素的干扰。为了进一步提高判断的准确性,本文将饮水机设计成双色红蓝条纹,红蓝条纹均匀,条纹的宽度尽量小,这样可以使不同角度采集的图片红蓝比例接近均匀。用同样的方法找到合适的判定红色的上下阈值。

记蓝色阈值为V1,满足阈值内的像素点个数为N1,红色阈值为V2,满足的像素点个数N2。采集图像后遍历像素点,满足V1时,N1++。满足V2的,N2++。最后根据N1/N2的值判断目标是否出现在图中。具体流程如图9所示。N1/N2的范围可以通过多角度采集图像再综合试验得出,本文在这不做更多描述。

机器人通过上述方法判断目标所在,当行驶过程中目标脱离检索范围时要重新检索。机器人找到目标饮水机后,即与饮水机的距离在设定范围内后,要进行按钮及水杯凹槽的检索。将按钮设计成圆形,水杯把手设计成矩形,由于这时机器人离目标饮水机较近,背景环境比较固定,受环境中其他因素的干扰较小,可以直接通过调用opencv函数进行边缘提取等方法来找到目标。

2.3 机器人避障

小车在行驶过程中难免受到家具等障碍物的妨碍,为使小车循迹过程完全智能,无需人为修正,除了拥有大脑之外,还必须让小车拥有一双“眼睛”,能够自动避开障碍物。避障分为探测和处理两部分,首先探测到障碍物,然后由主控程序处理[6]。探测部分使用传感器完成。自然界中,动物通过感觉器官向大脑传达感觉信号,机器人所用的传感器就相当于动物感觉器官的翻版。能充当机器人眼睛的传感器有很多,像超声波传感器、红外传感器、视感传感器,触碰传感器等等。本文设计采用红外传感器。

2.4 红外传感器

红外检测方法具有以往气敏原理、电导原理等常规方法的优点,比如量程宽、功耗低、灵敏度高、寿命长等[7]。红外避障传感器是一种主动式传感器,,即主动对环境进行探测,得到信号后代码再对其做出决策。它有一对红外信号收发二极管,发射管发射红外信号,红外信号遇到障碍物后会被反射回来,然后红外接收管会开启接收反射信号,拉低输出电平 ,根据输出电平的高低,主控电路可以判断障碍物的距离。当小车与障碍物的距离小于某个值时,小车对其作出反应,选择左转或右转,然后继续探测。原理如图9所示。

图9 红外避障原理图

3 机械臂

图10 机械臂俯视图

如图10所示,该机械臂是四自由度机械臂,共四个舵机(分别是上图的1、2、3、4),能够实现机械臂的抬举,转动以及抓取功能。51duino板(如上图所示),是在51板的基础上改造而成,能够提供8个PWN通道,完全满足机械臂的控制需求。机械臂的1和2号舵机能够完成机械臂的抬举伸缩功能,3号舵机完成机械爪的旋转功能,4号舵机完成机械爪的闭合功能。

4 电机模块

小车用两个直流电机分别驱动左右两边的5个负重轮。直流电机的使用简单,只要给其两个电极通上电,所通电流的方向不同电机的转向便不同,由此可以让小车实现前进、后退、转向。如下代码定义所示,A,B指小车的两个直流电机,POLE1和POLE2分别指电机的两个电极。当控制小车前进或后退时,A,B往相同方向转动,故两个电机通相同方向的电流,前进时和后退时的电流方向正好相反。当控制消小车转向时,小车的两个电机通相反方向的电流,左转和右转时给两个所通电流的方向相反。

#define FORWARD A_POLE1=1; A_POLE2=0; B_POLE1=1;B_POLE2=0; //车体前进

#define BACk A_POLE1=0;A_CON2=1;B_POLE1=0;B_POLE2=1; //车体后退

#define RIGHT A_POLE1=0;A_POLE2=1;B_POLE1=1;

B_POLE2=0; //车体左转

#define LEFT A_POLE1=1;A_POLE2=0;B_POLE1=0;

B_POLE2=1; //车体右转

#define STOP A_POLE1=0;A_POLE2=0;B_POLE1=0;

B_POLE2=0; //车体停止

5 总结

本文设计的智能接水机器人,无需人为控制,可以完全智能得为用户完成接水的工作,弥补了当代一些遥控家具机器人的不足,为老年人及一些行动不便的人带来了极大的便利。但本系统的设计仍存在许多不足,有待进一步的改进。例如,家居环境的复杂性,系统光靠视觉识别和红外避障可能在完成效率上不够理想,甚至于长时间发现不了目标所在。

参考文献

[1]侯操,孙小平.基于ARM的智能车无线视频监控系统设计[J].电子设计工程,2015,23(23)﹕190-192.

[2]秦小文,温志芳,乔维维.基于OpenCV的图像处理[J].电子测试,2011(7)﹕39-41.

[3]杨莉,杜艳红,隋金雪,郭玉刚.一种基于颜色特征的目标识算法[J].微计算机信息,2007,23(5-7)﹕195-196+220.

[4]于仕琪.Opencv入门教程.www.opencv.org.cn.席文平,张健.基于ARM的类人足球机器人视觉识别系统的设计[J].微型机与应用,2015,34(9)﹕50-53.

[5]席文平,张健.基于ARM的类人足球机器人视觉识别系统的设计[J].微型机与应用,2015,34(9)﹕50-53.

[6]谭秋林.MEMS 红外瓦斯传感检测系统的研究[D].太原﹕中北大学,2006.

[7]《无线电》编辑部.智能机器人制作大全[M].北京﹕人民邮电出版社,2015,08.

[8]谭秋林.MEMS红外瓦斯传感检测系统的研究[D].太原﹕中北大学,2006.

作者简介:

唐阳雨(1994—),福建福州人,大学本科,现就读于中国矿业大学计算机学院。

猜你喜欢

机械臂
机械臂平面运动控制与分析
机械臂工作空间全局相对可操作度图的构建方法
人机交互课程创新实验
基于S7?300 PLC不规则空间曲线自动焊接系统设计