谢鹏飞 张 燕
(南京大学金陵学院,南京,210089)
机器人竞赛是近年国际上迅速开展起来的一种高技术对抗赛事,它涉及人工智能、通信、传感机构等多个领域的前沿研究和技术融合,它集高技术、娱乐和比赛于一体,引起了社会的广泛关注和极大兴趣。随着机器人技术逐渐发展成熟,基于机器视觉、机械学、传感器信息融合、人工智能等多个领域的机器人竞赛被提出。
中国机器人大赛包括水中机器人赛、医疗机器人赛、空中机器人赛、武术擂台赛等多个项目[1]。其中,武术擂台赛项目机器人在擂台上的方位判断、敌我识别,是整个比赛的关键和难点。笔者就此机器人在方位判断的方法上展开研究,为机器人在擂台赛上的方位识别提供一种方案,实现机器人的竞争力。
机器人武术擂台赛是由中国自动化学会机器人竞赛工作委员会等单位主办的、每年一度“中国机器人大赛暨RoboCup 公开赛”中的一个比赛项目,参赛队伍需要在规则范围内设计、组装能自主运动的机器人,在指定的擂台上模拟中国传统擂台格斗的规则,互相击打或者推挤。如果一方机器人整体离开擂台区域,或者不能再继续行动,或被对方机器人打倒,则另一方获胜。因此,如何使机器人在短时间内对自身的方位定位以及敌我方向的识别,是比赛的关键。
常见的擂台机器人寻敌方法是:通过红外传感器检测来判断敌人相对的方向和位置,而红外传感器只能识别到物体,并不能区分是障碍还是敌人,因此识别方向有一定的随机性。此外,擂台机器人在寻敌过程中只能通过延时(Delay)来控制转向,而设置延时的时间长短会受到机器人转向速度的影响,机器人的旋转速度又跟电池电量、轮子和地面的摩擦力等密切相关,这使得延时设置很难控制,方向定位不精确、不可靠,在比赛中也会耗费大量精力来调节延时长短。因此,本文提出一种解决方案,可以较准确地定位方向,同时也节约调试时间。
本设计系统主要有三个主要部分,分别为STM32 控制器模块,GY-26 传感器数据采集模块和擂台机器人控制器。
中国机器人大赛武术擂台赛规则中规定,机器人的制作只能采用创意之星模块化机器人套件、标准平台组件包、BDMC 系列驱动器、擂台赛专用电机[2]。因此,本方法是基于创意之星控制器来实现的,其CPU 为ATMEGEL128。
首先,将GY_26 传感器采集的方位信息进行处理判断,发送数字信号给STM32 单片机;信号经过处理后,通过D/A 数模转换模块输出模拟信号来表示方向;擂台机器人通过判断模拟信号来确定是否到达所需要的方位,并作出相对应的进攻或防守动作。此外,传感器每次使用前可实现自动校准,无须手动调整。
图1 设计原理图
2.2.1 STM32 最小系统
搭建一个STM32 最小系统,选用STM32F103RCT6 集成芯片,其中内嵌有8052MCU、A/D 和D/A 转换模块,这样大大地简化了电路。设置电源、时钟电路、复位电路等需要注意的是,时钟电路使用单片机自带功能,外部接石英晶体振荡器等构成自激振荡器;时钟电路是整个硬件电路的核心部分,在电路布线方式上,晶振与单片机的引脚尽量靠近,石英晶体振荡器采用卧式安装,外壳接地,减少电磁的干扰,因为时钟电路的稳定性,会影响到整个电路的运行稳定性;复位电路主要用来完成单片机电路的启动过程。
2.2.2 GY-26 数字罗盘模块
GY-26 是一款低成本平面数字罗盘模块,输入电压低,功耗小,体积小,精度高,具有重新标定的功能,能够在任意位置得到准确的方位角[3]。其工作原理是:通过磁传感器中两个互相垂直轴同时感应地球磁场的磁分量,从而得出方位角度,此罗盘以IIC 协议与其他设备通信。然后,分析系统控制要求,确定算法并根据算法画流程图。编写程序的步骤包括主程序,初始化程序,延时程序,数据获取程序,IIC 内部程序等。
图2 GY-26、STM32 与IIC 的接口
2.2.3 擂台控制器识别并编程
本文用擂台控制器是基于ATmega128 芯片设计,具有12 路双向可设置通用I/O 接口,8 路10 位精度的模拟信号输入(Analog Input)接口,具有RS-422 总线、RS-232 接口;采用RISC,其可高速执行指令,内嵌高质量的Flash 程序存储器,擦写方便,I/O 端口资源灵活,功能强大,且继承了多种器件的多种功能,如定时器、IIC 等模块,适合于低功耗、低成本的应用。笔者选用模拟信号输入接口来判断方向。接口面板如图3 所示。
图3 擂台机器人控制器接口
2.3.1 IIC 获取GY-26 传感器信息
STM32 通过TWI(两线串行总线)获取GY-26 传感器的数据信息[4]。其中,STM32 作为主机(Master),传感器作为从机(Slave),CPU 与传感器的连接示意图见图4 所示。主机发送Start(开始)信号,告诉从机两者需要通信;主机发送从机地址以及写入数据的命令给从机,等待从机响应;从机响应之后,主机发送需要读取的寄存器地址给从机,等待从机响应;从机响应之后,重新发送Start 信号;主机发送从机地址以及读取数据的命令给从机,告诉从机读取数据,并等待从机响应。
对于多个数据则连续读取数据,多个数据之间需要有一定的等待时间。
读取完成之后,主机发送一个stop(停止)信号给从机,告诉从机读取数据结束,一次通信完成。
图4 GY-26 与TWI 连接图
2.3.2 DAC 信号转换
数字模拟转换器是一种12 位的数字输入、输出为电压的转换器,转换的数据可以设置为左对齐或者是右对齐的方式。每一个DAC 转换器都对应了一个输出的通道,这些通道既可以独立地进行数据转换,也可以同时进行数据转换。利用按键控制STM32 内部DAC 的通道1 来输出电压,同时通过通道1 采集DAC 的输出电压[5]。其具体过程包括:开启输出引脚、DAC 时钟,设置输入。
调用函数:RCC_APBxPeriphClockCmd();设置时钟函数。
调用函数:DAC_Init();初始化DAC,设置DAC的工作模式。
调用函数:DAC_Cmd();使能DAC 转换通道,
调用函数:DAC_SetChannelxData();设置DAC 的输出值。
2.3.3 创意之星控制器调试
创意之星控制器在编程代码中定义接口参数时,将模拟信号从高到低对应为0-1023 的参数范围,以便于控制器的程序编写。本文方法是通过对应的参数范围来表示东南西北等方向。
图4 方向细分图及对应参数范围
首先,将东南西北四个方向细分为12 个细化方向,平均设置每个方向的参数范围是0-85,然后,传感器检测到所处方位时,将数据传给STM32;而后,STM32 输出模拟信号,传递给擂台控制器;通过接收到的数据与对应的参数范围相匹配,
机器人则可以判断出当前所处的方位信息。理论上来说,参数范围越小,机器人辨别方向越精确。
笔者将调试焊接好的传感器连接到擂台控制器上测试其效果。设没有使用方位传感设备的擂台机器人为“擂台机器人A”,装有本文所设计的方位传感器为“擂台机器人B”,在实验室进行测试对比。
实验结果表明,在寻找方位准确性、耗时等擂台赛中制胜的关键因素方面,“擂台机器人B”有较大的优势,说明该方位传感器起到了一定的作用,见表2。同时也有一定的缺点,就是容易受周围磁场环境干扰,对定位精度有影响。
本文设计方法旨为擂台机器人竞赛提供一种快速识别方向的思路,以期达到较激烈的竞赛水平。
表2 实验对照表