控制器是智能机器人处理和控制信息的主体,它直接决定了机器人的行为和性能。近几年来随着高性能微控制器和嵌入式系统技术的不断进步,为各类实时控制应用提供了解决方案。
嵌入式系统(ES)是计算机技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术,甚至传感器等先进技术和具体应用对象相结合后的系统,其是硬件和软件紧密捆绑在一起的系统。将嵌入式系统应用于灭火机器人的设计中,对机器人的性能智能化、网络化、小型化都有了明显提高。
比赛用灭火机器人需要机器人有智能较高的自动控制性能与可靠的机械控制性能的同时保证,才能在短时间内准确寻找到火源并灭火回家。在此以ARM9处理器为核心,对基于嵌入式系统的智能灭火机器人进行了设计。本文将从硬件和软件方面讲述智能灭火机器人控制器的实现方法,并且给出了机器人灭火的具体实验,验证了方案的可行性,为智能灭火机器人的进一步研究提供了平台。
1 灭火机器人的描述
灭火机器人的外形结构如图1所示,它的主要构件有:红外发射传感器(6个),红外接收传感器(6个),声音传感器(1个),灭火风扇(前后各1个),远红外火焰传感器等(前后各7个)。其中红外发射和接受传感器的配合使用可以使机器人自动避障行走。远红外火焰传感器可以检测光的强弱,用于判断房间是否有火以及趋光灭火。声音传感器用于启动。基于实践,风扇灭火更为可靠,所以选用风扇灭火。
2 灭火机器人的总体设计
在智能灭火机器人系统中,首先要解决的是定位问题,故需要一个好的定位方案。所以,控制核心需要给传感器留足够的输入接口,同时也要有足够的输出接口用于控制外设。而速度对灭火机器人至关重要,在高速运动的情况下,需要CPU具有比较强的浮点数运算能力。基于上述考虑,选择ARM9为灭火机器人的控制核心,该控制器硬件功能齐全、功耗小、周边设备集成度高,是先进的智能机器人计算平台。
3 灭火机器人嵌入式系统硬件设计
3.1 控制器系统设计
由于嵌入式微处理器对实时任务具有很强的支持能力,可以完成多任务并且具有较短的中断响应。因此在设计过程中,采用嵌入式ARM9为核心的控制器(ST公司的STR911FAM44),实现了以极少的周边芯片获得齐全的功能。ARM9处理器具有体积小,功耗低,性能高的特点。它集成了28路模拟信号采集通道,可以兼容数字信号和模拟信号,每路精度为10位,因此可以分辨3 mV特的输入电压变化。8路高速数据采集通道每秒可采集50万次信号。该处理器内部采用哈佛结构,每秒可执行1.1亿条机器指令,这样的强大功能可以实现机器人高速精确地按照规定路径行走,并且机器人的CPU能够实时迅速地读取多个传感器端口数值,在较短的时间内完成对各端口数值的存储、运算和输出等多种任务。在主控制器核心CPU的基础上,将各种功能模块、执行机构等连接到CPU的引脚上。控制器总共有28路模拟采样接口。
在此选用Atmel公司生产的AVR ATmega 8微处理器作为辅助单片机。ATmega 8是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于它先进的指令集以及单时钟周期指令执行时间,ATmega 8的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。AVR内核具有丰富的指令集和32个通用工作寄存器。同时ATmega 8具有一整套的编程与系统开发工具,包括:C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。这样就大大方便了在硬件基础上进行软件设计。
ARM9处理器含有20路标准数据采集通道通过Atmega816-PC辅助单片机连接到主芯片上,用以读取远红外传感器组及检测端口的数值,每秒可采集1 000次。这种设计提高了端口数值读取速度,使机器人能对周围环境信息做出迅速判断。
为了保证灭火机器人灵活行走和低功耗,需要一个体积小,超薄轻巧,功耗低的显示器。Uniohm公司生产的LCD满足设计要求,通过与单片机连接、编程、下载、完成显示功能。
3.2 控制器电源供电设计
电源直接影响机器人运行特性。考虑到电动机启动瞬间电流很大,会造成电源电压不稳,影响单片机和输入电路工作的稳定性和可靠性,因此这里采用双电源供电方案。电机电源采用容量为2 500 mAh高放电倍率聚合物锂电池,工作电压为24 V,能提供40 A的稳定供电电流,是普通电池的10倍;控制器电源采用8.4 V锂电池,并提供电压采样端口,以供电池检测,控制器电源供电电路图如图5所示。
为获得CPU各端口电路所需要的不同等级的电压,该设计采用1个LM317T三端稳压器和2个AMS1117低压差线性电压调整器,并通过其附属电路,得到精确稳定的5 V,3.3 V,1.8 V三种电压;用1个发光二极管LD1和限流电阻R5作为电源指示灯,以显示电源开关的状态;为实时采样电源电压,防止锂电池过放或过充,通过R1,R2分压,引出AD19端口作为电源采样端口。
4 灭火机器人嵌入式系统软件设计
机器人控制器是一个多任务并行执行的实时控制器。在软件实现上,灭火机器人除了要协调控制各个不同功用的电机,还需要对红外、灰度、声音等多种传感器接收的数据进行传输、处理等。采用c语言可以方便快捷的编写程序。这里对灭火机器人的每种功能进行模块化处理。总体的思路是:寻找火源。确定火源方位,接近火源,趋光灭火,回家。主程序设计流程图如图6所示。实现起来最基本的就是使机器人能够顺利的直线行走和拐弯,这一模块称为沿墙走(沿左墙前,沿左墙后,沿右墙前。沿右墙后),沿右墙前如图7所示。具体为:
(1)若正前距离很大,同时右前的距离稍小时,太靠近右墙,执行左转微调;
(2)若正前距离很大,同时右前的距离稍大时,太靠近左墙,执行右转微调;
(3)若正前距离很大,右前距离适中,就直行;
(4)若正前距离特别小,同时右前距离特别小时,使机器人稍后退可以防碰撞;
(5)若正前距离比较小,右前距离也比较小时,机器人左转;
(6)右前距离很大时,机器人执行右转弯。
其中:(1)~(3)保证了在走直线时可以走直,通过不断调整,使机器人始终运行在距离墙10~15 cm的位置。(4)~(6)保证了机器人顺利拐弯和进房间。沿左墙行走及反方向沿墙行进同理,具体的参数必须在不断试验中反复调节。几种沿墙走配合使用就可以实现全部房间的遍历和回家,再加上趋光和灭火的模块就完成了整个灭火任务。
5 灭火实验
在硬件的设计和实现的基础上,用C语言编写了让器人智能搜索房间,发现火源并灭火回家的程序。在不断对各种参数的调节后,该机器人可以在8 s内完成任意房间灭火,灭完火后,机器人自动回家。统计了30组数据。
6 总结
实际测试证明该设计的灭火机器人能够较好完成灭火任务,具有一定参考和使用价值。该设计的创新之处为:以AM09为核心的嵌入式系统的控制器运行速度高,能够高速采集和处理传感器系统信号,并发出相应的控制信号,实现8 s内完成任意房间灭火;该设计采用了嵌入式系统内核,大大提高了机器人处理信号的能力;STR911FAM46和AVR-ATMEGA8-16PC的选用在实现了功能强大的同时,保证了良好的扩展性,并且成本较低,有利于智能机器人早日实现市场化;双电源供电系统的引入,使机器人的运行更加稳定可靠;通过沿墙行进规则的设计,机器人的灵敏度和适应外界变化的特性明显提高,且程序简捷,有利于模块化编程。