APP下载

基于OpenMV的智能搬运车型机器人的设计

2020-03-02施敏虎栗云鹏庄曙东符正帆王齐鑫

机械工程师 2020年2期
关键词:开发板循迹舵机

施敏虎,栗云鹏,庄曙东,符正帆,王齐鑫

(河海大学 机电工程学院,江苏 常州213000)

0 引 言

随着技术的进步,科学的不断发展,“智能”二字正逐渐为传统的事物冠名,智能车、智能制造、智能家电等。应用在物流搬运[1]的AGV(自动引导运输车)在自动化物流系统中充分地体现其自动性,可实现经济高效的无人化生产;应用在汽车行业的电动汽车智能组装生产线,机械化的劳动被可靠的器械所取代,提高了生产效率;智能汽车[2]无人驾驶技术也正在飞速发展。通过智能技术,减轻了人的劳动力付出、提高了企业的生产效率、降低了企业的生产成本。国内关于智能赛车的实践项目也层出不穷,提供越来越多的机会来应用和创新此类技术。智能搬运作为一个实践项目,缺少一定的实践基础。

本文提供了关于智能搬运循迹车型机器人的可实践的合理化设计方案,通过OpenMV机器视觉模块作为方便的图像处理装置,以Arduino控制智能小车实现循迹行驶,二者协同完成二维码识别、颜色形状识别、智能搬运功能,通过全向轮的布置,完成小车的全向移动。能够满足在复杂路线中需搬取和卸载的搬运任务要求。

1 开发环境

1.1 OpenMV

OpenMV是一款小巧、低功耗、低成本的电路板,通过OpenMV IDE可以轻松地完成机器视觉使用,给研究者们的使用提供了方便。它通过高级语言Python 脚本(MicroPython)为机器视觉复杂的算法提供了容易处理的输出方式。

OpenMV采用了STM32F765VI ARM Cortex M7 处理器,OV7725作为感光原件,可在80FPS下处理640×480 8-bit 灰度图或者320×240 16-bit RGB565 彩色图像。

1.2 Arduino

Arduino Uno开发板,是一款方便上手的开放源代码的单芯片微控制器,建构于易于输出输入的界面板,并且具有使用类似Java、C语言的开发环境。

它以ATmega328 MCU控制器为基础提供了便捷的控制平台。

2 机器人硬件设计

各个硬件连接情况部分如图1所示,车身结构、驱动及控制关系等介绍如下。

图1 结构图

2.1 车身结构的设计

车体由底盘、车架、电动机、车轮等所组成,是智能循迹小车的基础部分。图中为两组设计方案,板上安置机械臂、主控器、传感器、摄像头等来实现小车智能搬运循迹的特殊要求。

车轮采用圆形布置全向轮三轮结构(如图2)或矩形布置麦克纳姆轮四轮结构(如图3)。

图2 三轮结构

图3 四轮结构

全向轮是海丹等[3-4]的一款专利产品,包括轮毂和从动轮,该轮毂的外圆周处均匀开设有3个或3个以上的轮毂齿,每两个轮毂齿之间装设有一从动轮,该从动轮的径向与轮毂外圆周的切向垂直。全向轮结构简单,适用范围广,可以在较差的路况上运动。麦克纳姆轮的设计方法,开始为瑞典公司的专利,后来被应用到工程实际中,是目前应用广泛、技术十分成熟的轮结构。两种轮结构均可通过多个舵机同步驱动、精确调速来实现车体的全向运动,如图4 所示。

机器人四麦克纳姆轮[5]结构方案的分析简图如图5所示,机器人的4个电动机通过不同的转速组合后可以实现以下几种情况:前进,左进,45°斜进,原地旋转。四轮速度方向、大小一致时,则实现机器人的前进;四轮方向成组一致时(1.3)(2.4)(顺时针1.2.3.4)而不同组相反,可实现左进;(1.3)或(2.4)的速度一组存在而另一组为零时,可实现斜进;(1.2)(3.4)的速度大小一致而方向相反时可实现原地旋转。

图4 全向轮

图5 麦克纳姆轮结构方案分析简图

全向轮三轮节省空间,减少了原材料成本,有较高的输出功率。但在速度矢量合成方面,受各种影响不易合成给定的速度方向,需要较长的时间调试,也缺少相关的使用经验。由机器人运动学原理,图中三轮排布的方式,满足全方位运动的条件。

麦克纳姆轮四轮结构,比三轮结构增加一个车轮的阻力,运转输出功率数低,运转灵活度低于三轮结构,造价更高一些。但其更加稳定,且易于转向。由机器人运动学原理,图中四轮排布的方式满足全方位运动的条件。

物料抓取装置采用多关节型机械手,用4个舵机驱动,一个控制在水平面内旋转,一个控制在竖直方向的旋转摆动,一个控制手爪的抓取,有3个自由度,足够完成对应任务。

图6 麦克纳姆轮结构对比图

2.2 电源模块的设计

电源采用18650 12 V 锂电池,DC/DC降压模块,电池盒3.7 V或者5 V直流电源。

OpenMV工作电压为3.7~5.0 V,电池盒为OpenMV供电提供3.7 V工作电压,或者通过Arduino提供5 V电源。

Arduino的工作电压为7~12 V ,通过18650电池供电。舵机驱动电压为8.4 V、6 V两种,18650 12 V锂电池通过DC/DC降压模块提供8.4 V和6 V电压,给驱动模块供电。

2.3 核心开发板的设计

两块核心开发板,OpenMV、Arduino进行串口通信,并分别与两块Pca9685 舵机驱动开发板相连接。其中:与OpenMV相连的驱动开发板连接控制机械臂的4个舵机;与Arduino相连的驱动开发板连接控制移动的3个或者4个舵机。Arduino和3个红外反射传感器如TCRT5000,分别连接。

2.4 驱动电动机及各模块设计

机械臂部分的舵机采用4个8.4 V大转矩舵机,完成一系列的搬运动作;车底部舵机采用6 V舵机,减轻供电与驱动压力;驱动模块采用2块Pca9685舵机驱动开发板,来控制各路舵机的运动。DC/DC降压模块,将电压降为工作电压;3个循迹模块TCRT5000红外反射传感器,保证路线特征的检测,传输输入控制信号。

3 机器人控制系统的设计

以OpenMV为机械臂控制器,Arduino作为循迹部分的控制器。物料搬运流程如图7所示。

图7 物料搬运流程图

3.1 机械臂上的OpenMV视觉模块[6]

首先进行感光原件的初始化Sensor.reset();设置相机模块的像素模式,可选的图像处理的像素模式有两种:一种是灰度模式sensor.GRAYSCALE;一种是色彩模式sensor.RGB565。灰度模式的算法比色彩模式运行得更快,但却无法进行所需的颜色识别,这里选用色彩模式方便后续的颜色识别。设置相机模块的分辨率大小sensor.set_framesize (framesize),可选的种类非常多,选择320*240的QVGA模式;设计相机的稳定模式,sensor.skip_frames([n, time]),可以跳过相机设置时不稳定图像的画面;关闭自动白平衡,防止图像不稳定,sensor.set_auto_gain、sensor.set_auto_whitebal设置为关闭。

识别二维码获取任务信息,采用QRCode类,进行二维码对象的扫描。使用sensor.snapshot()函数对所处二维码位置拍照扫描。对相机进行镜头畸变矫正,除去镜头造成的鱼眼效果,提高摄像头识别的速率,减轻变形,对应的函数为image.lens_corr()。

通过img.find_qrcodes() 找到图像中的二维码,并读取数据,可返回二维码的坐标、边框坐标、返回二维码信息中的有效字符串。然后对字符串进行处理,根据要求字符串为3位数字,将其进行个、十、百等3位分割,对应3种不同的颜色任务。

串口发送,通过Arduino与OpenMV的TX,RX 连接设置波特率完成串口通信。其中Arduino提供了软件模拟串口通信,而硬串口又比较少,故可用作调试使用。 对于简单的字符串直接发送即可,对于复杂的字符串可使用json格式传输再进行解析,不过处理的信息十分简单,采用直接输出字符串的方式即可。

循迹移动,通过3个循迹模块TCRT5000红外反射传感器,检测地面规划的路径,这里将地面定义为平整地面,不存在特殊障碍如窄路、坡路,循迹逻辑如表1所示。光标采用等边三角形排列,可以在车体整体转动时仍保持固定组合形态。只需改变循迹逻辑即可实现循迹得稳定进行。 或采用直线形排列,需在移动任务中控制车身转动,以保证循迹的正常运行。

物体搬运,携带视觉模块的机械臂初始状态朝向待捕捉物体,通过颜色识别函数寻找色块find_blobs()得返回值,通过比较得出最大的色块作为目标任务色块,根据blob.x() 的坐标来判定机械手臂相对于物料的位置,当物体处于视觉中心时,发送串口数据控制小车循迹靠近、抓取。抓取动作完成后,调整传感器控制逻辑,控制小车反向,向物料存放区域移动,调整摄像头位置对准地面,扫描对应颜色。待移动完毕后执行物料放置任务,最后手臂复原读取下一次的搬运任务。

针对控制的超调情况,采用pid调节[7],软件调整等方法,需不断调整修正PID参数,由于舵机转矩过大、动作速度快,不可直接由一种极端参数直接变换,需设计delay()函数进行延时缓冲,进行变化时,应使用参数递增的方式让舵机稳定工作。机器人手臂抓取实验得出的控制其工作的模拟数据,记录于表2中。

表1 循迹逻辑表

表2 机械臂参数表

OpenMV对机械臂控制的部分程序如下:

4 结 语

根据智能搬运车型机器人的实验中,通过OpenMV的识别与控制、Arduino的驱动控制,对于小车灵活、精准、智能化的要求、机器视觉算法的实践,提供了一种可行的方案,方便对机器视觉进行体验式的学习;车体车型也为搬运机器人提供了一个可拓展可实践的结构设计方案;对于车轮结构方案的论证,提供了控制麦克纳姆轮或全向轮进行全向移动的机器人移动方案。小车在完成任务的前提下仍有很多的设计与拓展的空间,如车身的材料、车身的外观、成本方面仍有待改进,以便于实际应用。例如增加信息反馈的液晶屏幕、小灯等,将循迹改为电磁或者光学引导移动,减少现场划线的限制。还可改用成本更为低廉的核心控制器,低成本的步进电动机等进行再设计。智能搬运循迹小车的性能及实用性将得到大幅提升。

猜你喜欢

开发板循迹舵机
基于DFT算法的电力巡检无人机循迹检测系统设计
基于STM32H7的FDCAN通信系统设计与实现∗
含齿隙弹载舵机的全局反步模糊自适应控制
浅谈基于机器视觉和姿态检测的循迹智能车
基于dsPIC单片机的飞艇舵机控制实现
智能差分循迹小车设计
基于高速同步485总线通信的多通道舵机控制器设计
浅析单片机开发板的设计与制作
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
基于云模型的舵机同步控制