- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
基于Arduino的智能小车识别及夹取棋子设计
作者:朱伟枝杨亚萍梁华成
来源:《数字技术与应用》2020年第08期
????????摘要:以智能小车为载体、机械手为抓取机构,采用Arduino为核心控制器,利用OpenMV的形状和颜色识别功能检测棋子位置,提供了一种能够完成识别和夹取棋子的任务的可实践的合理化设计方案,结构稳定,程序设计简单。
????????关键词:智能小车;Arduino;OpenMV;机械手;识别
????????中图分类号:TP242文献标识码:A文章编号:1007-9416(2020)08-0132-03
????????0引言
????????嵌入式系统与微处理器近年来的发展突飞猛进,由此我们的日常生活中逐渐开始大量应用无线传输技术与图像处理技术[1]。智能搬运小车的功能核心是代替人来运输货物,实现智能搬运涉及到了两个核心功能,一是识别,二是夹取。本文的主要设计思路是采用Arduino[2]作为智能小车的核心控制器,利用OpenMV[3]摄像头模块来实现图像信息采集工作,并将收集到的图像信息输送到控制器上,控制器根据收到的信息做出相应的指令动作控制智能小车和机械手,从而实现智能小车自动识别物体并将其夹起的功能。
????????1系统总体设计
????????本文采用绿色的矩形棋子来模拟货物,绿色和矩形是作为OpenMV的颜色和形状识别特征,棋子是作为实物来测试机械手的工作。本文设计的自动搬运系统主要由传感器、控制器、执行器等组成,如图1所示。
????????控制器Arduino单片机作为整个系统的控制核心,负责收集各个I/O口输入的信息并进行处理,实现各个模块统一协调工作。传感器部分包括OpenMV和超声波测距模块。OpenMV是一个功能强大的机器视觉模块,利用广角镜头使得识别范围更加广,采用具有识别颜色和形状特征的组合算法,将收集到的信息實时通过串口上传至Arduino控制器上,Arduino就会根据OpenMV上传的数据作出判断,从而控制智能小车和机械手的运作。超声波测距模块主要负责确保车头与棋子的距离,将收集到的数据经处理后,通过串口将处理好的数据发送至Arduino上,保证机械手能准确无误夹取棋子。执行器部分为机械手和电机。机械手由两个舵机组成,一个舵机负责机械手臂的上下运动,另一个则负责机械手的展开和闭合,控制两个舵机的工作就能控制整个机械手的工作;Arduino采用PID控制算法[4],控制电机转动方向和速度,可以使电机产生正转、反转,从而根据两轮差速原理使小车实现前进、后退及转弯等动作。
????????2系统软件设计
????????2.1总体控制流程
????????如图2所示,智能小车通电后,所有硬件都进行初始化,识别模块开始采集照片,需要准确识别到目标棋子的所在位置,并将处理好的目标棋子的信息传送给Arduino控制器,Arduino控制器接收到信号后发出指令控制智能小车的电机模块开始工作,并向棋子的位置靠近。为了保证机械手能准确地夹起棋子,就需要控制好智能小车与棋子之间的距离,当智能小车与棋子之间的距离在设定的阈值范围之内时,电机模块停止工作,Arduino控制器控制夹取模块开始工作,通过机械手把棋子夹起来。
????????2.2行驶模块程序设计
????????小车的行驶模块包含几个子函数模块:前进模块run()函数、停止模块stop()函数、转弯模块turn()函数和识别模块search()函数。当棋子在OpenMV识别区域中心时,控制器就执行前进run()函数控制智能小车前往棋子所在位置;当智能小车与棋子之间的距离在设定阈值范围时,控制器就执行停止stop()函数;当棋子在OpenMV识别区域中心两边时,控制器就执行转弯turn()函数控制智能小车前往棋子所在位置;当OpenMV识别不到目标棋子时,控制器就执行search()函数,控制智能小车移动到其他位置直到识别到棋子为止。控制电机转动方向和速度采用PID算法运行,设定智能小车正常直线运动时的PWM阈值,当智能小车转弯时,分别对智能小车左右两轮电机的参数进行PID运算,保证左右车轮实现差速转弯。
????????2.3识别模块程序设计
????????如图3所示,识别模块采用具有识别颜色和形状特征的组合算法,首先调用find_rects()函数对拍摄到的物体进行形状识别,若识别到的物体是矩形,再调用rect.corners()函数,返回一个由矩形对象的四个角组成的四个元组的列表,使OpenMV只在这个区域内进行像素统计,最后调用get_statistics()函数进行像素统计,若LAB的三个通道的众数分别在绿色的阈值范围内,OpenMV就判定识别到了绿色的棋子。
????????2.4
文档评论(0)