轮式智能格斗机器人的设计
2022-12-21刘孝贤余江陈衍艺麦家伟郑咏芝
刘孝贤,余江,陈衍艺,麦家伟,郑咏芝
(广东海洋大学a.机械与动力工程学院;b.电子与信息工程学院,广东 湛江 524088)
1 总体方案
1.1 比赛规则
本项目是基于中国高校智能机器人创意比赛,设计并制作出一款既可以稳定工作在激烈对抗的擂台中,又可以按要求完成比赛任务的智能格斗机器人。根据比赛规则,参赛队伍需采用统一标准的控制器、动力模块、传感器、供电模块等制作机器人。控制器上采用创意之星系列主控制器。动力模块方面,选用BDMC系列驱动器及配套电动机,选用cds5516系列舵机及配套舵盘。传感器上选用三线制传感器,可使用一个普通摄像头模块用于图像采集。供电模块选用7.4 V、14.8 V、22.2 V 锂电池模块。在结构设计方面,机器人整体材料须为非黑色塑料,即机器人除了螺钉、螺母、轮胎(轮子直径在68 mm 以内)、电动机支架、轴套、驱动器外壳、控制器连接件之外,其他结构只能使用非黑色塑料件。机器人不允许贴黑色胶带或其他故意涂黑的行为,不允许贴二维码,不允许使用透明材料。比赛的擂台放在一个高度为0.5 m、边长为3.8 m的台上,机器人从出发区启动后,需自主登上擂台,寻找对手,利用允许的执行器攻击对手并将对手推下擂台。在此过程中,如果机器人掉下或被推下擂台,需要自主登上擂台继续比赛。擂台上还布置有能量块,机器人除了要在擂台上进行格斗之外,还需准确地识别出擂台上不同种类的能量块,将符合要求的能量块推下擂台,取得相应的分数。
1.2 系统组成
根据比赛要求,确定机器人系统由控制模块、驱动模块、传感器模块、AD转换模块及电源模块5个部分组成。首先传感器采集得到原始数据,经过ADC转换模块转换得到模拟量数值,再由内部控制模块进行程序计算并发送相应指令给驱动模块,最后驱动模块驱动直流电动机执行动作。模块间关系如图1所示。
图1 模块间关系
2 硬件设计
2.1 控制系统
机器人的控制系统为基于STM32F103VCT6芯片的Luby控制器,该控制器配有16路AD接口和6个输出接口。传感器数据输入通过AD接口完成, 驱动LED、蜂鸣器、模拟舵机和其他外围设备通过输出接口完成[1],系统内置了蓝牙模块和基于CC2530的ZigBee无线通信平台,该控制系统内部资源完成满足所有模块所需,且方便调试。
2.2 直流电动机驱动器
机器人共采用2个BDMC1203直流电动机驱动器,分置于车体内部左右侧,用于驱动4个20 W直流电动机,每个驱动器分别控制每一侧的2部直流电动机。两个驱动器之间通过信号端与信号地端进行相互连接,采取半双工异步串行总线通信方式,即单主机多从机总线结构,控制器是主机,BDMC1203是从机[2]。接线方式如图2所示。
图2 电动机与驱动器连接方式图
2.3 传感器
2.3.1 红外光电传感器
本机器人共使用14个E18-D80NK红外光电传感器,分布情况为机体前方水平4个,后方纵置2个,左右方各2个,顶部4角各1个,每个红外光电传感器都可调节探测方向,以螺栓紧固。前方4个红外光电传感器可以调节探测点与水平地面的夹角,用于探测前方物体;左右方4个传感器用于探测机器人侧方物体;后方2个传感器除了探测物体以外,还用于辅助判断机器人是否位于擂台上;顶部4个传感器探测角度斜向下,用于探测擂台边沿,防止机器人掉下擂台。E18-D80NK是一种集发射与接收于一体的红外光漫反射式光电传感器,采用5 V电压供电,检测距离可根据使用要求进行调节,最大距离为80 cm,同时抗干扰能力强,受可见光的影响较低,可在太阳光底下使用。该传感器内的发射器不断向外发出红外光线,当前方有被检测物体时,物体反射的光线传到了接收器,于是传感器就检测到了物体的存在,并输出信号。此类传感器有2个基本的特点:1)与障碍物的反射角度基本无关;2)与反射物体的颜色基本无关[3]。
2.3.2 模拟灰度传感器
机器人共使用2个模拟灰度传感器,都位于车体下方,用于检测机器人下方区域的颜色值,再由两者得出平均值,判断机器人是否位于擂台上。模拟灰度传感器利用不同颜色的检测面对光的反射程度不同,而光敏电阻对不同检测面返回的光其阻值也不同的原理进行颜色值检测。该传感器在环境光干扰较微弱的情况下,用于区分黑色与其它颜色,工作电压的范围较宽,在电源电压波动较大的情况下仍能正常工作。传感器分布如图3所示。
图3 传感器整体分布图
3 程序设计
3.1 机器人启动上台
机器人从出发区成功上台是整个比赛的第一步,本项目采取的上台方式是利用机器人行驶的动能配合结构设计冲击上台。在启动方式的设计上,本项目利用擂台机器人侧面左右2个红外光电传感器,当用双手同时遮挡这两端传感器3 s后,机器人便会启动。为了防止意外触发的情况发生,在程序设计上还进行了消抖处理,当两端的红外光电传感器被同时遮挡以后会再重新进行一次判断,验证传感器是否真正被触发。
3.2 判断机器人是否位于擂台上
通过阅读官方文件与对实地进行观测可知,比赛场地虽然有较大面积的黑色区域,但是擂台上与擂台下的黑色区域其颜色值是不同的,因此可以利用比赛场地的这一特征,由控制器通过模拟灰度传感器对黑色区域的检测数值做出判断,使机器人能判断出自身是否位于擂台上。在采集灰度数据返回值的同时还使用了单片机定时器,设置每20 ms发生中断并采集一次数值,以免因采集过于频繁而增加主控器的运算负担。同时对检测回来的数值运用了中值滤波算法,在程序中定义了一个数组,每采集10组数据求一次平均值,进行滤波去噪的处理,避免偶然特殊值对擂台机器人的检测产生影响。
不过,赛场中有蓝色与黄色出发区这两个特殊区域,单独使用模拟灰度传感器进行检测会使得机器人出现误判现象,因此本项目引入了部分红外光电传感器进行辅助检测。当机器人处于出发区时,往往有多个红外光电传感器被同时触发,因此可利用这一特性在程序设计中写入判断,解决机器人掉落于出发区时的问题。其判断逻辑关系如图4所示,各区域灰度值如表1所示。
表1 各区域灰度值统计表
图4 判断机器人是否掉台逻辑图
由实际采集擂台各位置的灰度数据得出,位于擂台上的灰度值最高为1514,最低为469,位于擂台下除去黄色区与蓝色区这两位置,灰度值平均为307左右,因此程序上设计当机器人底部的灰度模块采集得到的灰度值大于400为位于台上,不大于400为位于台下,而对于台下两特殊黄蓝区域通过红外模块的辅助判断便可以解决。
3.3 擂台边缘检测
机器人登上擂台后,首要任务是保证自身巡航状态下不会掉下擂台,为了实现这一功能,使用了位于车身顶部4角的E18-D80NK红外光电传感器,分别是左前方1,右前方2,左后方3,右后方4,分布位置如图5所示。
图5 顶部红外光电传感器分布情况图
当机器人靠近擂台边缘时,红外光电传感器的探测点会落到擂台下,此时由于探测距离大于设定距离,传感器接收不到返回的红外光信号,控制系统识别为机器人已靠近擂台边缘。在程序设计上,4个红外光电传感器之间的相互配合能组合出6种不同情况,控制系统都能做出相应的处理。擂台边缘识别逻辑关系如图6所示。
图6 擂台边缘识别逻辑关系图
3.4 对对手的检测与攻击
对对手的检测共使用9个红外光电传感器,分布情况如图7所示。
图7 识别红外光电传感器分布情况图
各个红外光电传感器之间相互配合,分别组合出正前方23、左前方1、右前方4、左侧6、右侧8、左后方5、右后方7及正后方9的探测方向组,这8个方向的探测使得机器人能够及时地发现靠近自己周围的所有物体,包括敌方以及能量块。这个设计给机器人带来十分广阔的视野,赋予其灵敏且清晰的态势感知能力。
在检测到对手之后,控制系统会做出相应的操作,控制机器人高频率地向前冲撞,直到对手不在视野内或机器人已靠近擂台边缘为止。对对手的检测与攻击逻辑关系如图8所示。
图8 对手检测与攻击逻辑
对边缘检测与对擂台上物体检测这两个函数比较起来,对边缘的检测更为重要。所以在这两个检测函数中,程序中设置了中断优先级,当边缘检测函数与擂台上物体检测函数两者共同触发时,优先执行边缘检测函数来确保机器人在与对手的对抗过程中不会先掉下擂台。
3.5 区分擂台上的物体
当擂台上物体检测函数被触发时,机器人会转向所探测到的物体先进行摄像头识别,如果没有识别到二维码,判定其为敌方机器人并发动攻击;如果识别到二维码并判断出是敌方和中立能量块时,也进行攻击将其推下擂台;如果判断出是我方能量块就取消攻击指令并绕过。
对于区分擂台上的物体,在程序处理方面本项目使用了OpenCV来进行识别。OpenCV (Open Source Computer Vision Library) , 译名为“开源计算机视觉库”, 是一个基于开源开发的跨平台计算机视觉库。OpenCV主要由一系列C函数和C++类组成, 拥有包括500多个C函数的跨平台的中高层API, 它提供了大量的开源图像算法, 是计算机视觉领域中使用极为广泛的图像处理算法库[4]。本项目以“树莓派”为上位机,运行OpenCV,并通过OpenCV来识别二维码,可以使机器人的识别速度更快,有效解决了响应迟滞的问题。
3.6 掉台后重新返台
当机器人掉下擂台时,模拟灰度传感器首先工作,返回灰度值使控制系统判断机器人已经掉台,然后通过红外光电传感器判断机器人掉台的位置与方向,当调整到合适的方位时,重新冲上擂台。
台下的情况十分多样,要想把所有的情况都考虑周到并在程序上作出相应的对策是十分困难的,因此本项目将这些情况先简化成两大类:掉在角落区与掉在非角落区。而在经过了大量的测试之后发现,掉在非角落区时的情况可归为5种:侧对擂台、正对擂台、背对擂台、向左斜、向右斜。对于这5种情况,本项目在程序设计时都编写了相应的判断函数。而对于其他情况,控制系统会先让机器人左转一定角度,再直行一小段距离并如此循环,经过不停地调整,直至出现了那5 种情况 为止,就执行对应的上台 程序。经过如此设计,复杂的掉台情况被极大地简化,使程序的编写以及机器人的判断都更加简便。对台下的方位判断逻辑关系如图9所示。
图9 台下的方位判断逻辑关系图
4 结论
对于本项目设计并制作的一款基于STM32F103控制系统的轮式智能格斗机器人,本文介绍了其总体方案,包括具体比赛规则和本机器人的系统组成部分。在硬件设计方面,介绍了控制系统、直流电动机驱动器、传感器的具体使用。在程序设计部分,提出多种逻辑分析,并为多种复杂的赛场情况提供了有效的解决方案。在结构设计方面,本机器人基于比赛规则的基础结构创新且符合对抗情况,能有效应对剧烈碰撞,保护内部元件不受损害。经过实战检验,该轮式智能格斗机器人符合比赛要求,且能在高强度的对抗比赛中脱颖而出。