蔡静怡 王才峄
摘 要:智能作为现代的新发明,是现如今重点的发展方向,为了符合发展趋势,文章设计的智能小车采用STM32芯片作为检测和控制的核心,分析了基于STM32F103ZET6微处理器的智能小车控制系统的系统设计过程。用红外线传感器感应障碍物,调用中断子程序实现智能小车的智能避障。小车可应用于科学勘探或灾害现场的救援用途。
关键词:STM32;红外线;智能小车;自动避障
在进入21世纪以来,随着生产自动化的发展需要,机器人的智能化与集成度越来越高,已经越来越广泛地应用到生活生产中。对于机器人的定义从来都没有一个统一的标准,在大多数专家学者看来,所谓机器人就是通过软件编程控制硬件,使其能够实现它应该完成的任务。但是在我国的学者眼中,机器人就是一种自动化机器,它能够具有高度的灵活性,并且具备一些和智能生物相似的智能能力的自动化机器。伴随着科技水平的提高,智能小车能够使用的传感器种类也越来越多,其中红外线传感器已经成为智能小车智能避障的重要部件。此系统是基于红外传感器的系统及运用红外传感器,实现对前方障碍物的检测。红外传感器的典型应用领域为自主式智能避障系统。小车要实现自动避障功能,就必须能感知到障碍物,这相当于给小车一个视觉功能。自动避障小车可以作为困难环境检测机器人和抢险机器人的运动系统,让机器人在行进中自动避过障碍物,帮助人们完成相应的任务。
在现实生活中,例如在一些火灾或者一些自然灾害的现场,经常需要人进入一些危险或不能直接到达的地方进行观察,采集数据,这时就需要智能小车来完成。智能小车主要由人手动操纵,但在一些特殊的环境中,比如火灾现场,能见度非常的低,当前方出现障碍物时,人的肉眼可能无法观察到,但红外线传感器依旧能检测到障碍物,所以自动避障是一项必不可少,也是最基本的功能[1]。
1 系统功能设计
1.1 设计目的
在一些火灾救援现场,环境极度的恶劣,地形复杂,氧气稀薄。这时贸然地让消防员进入火灾现场,风险很大,此时智能小车就起到了很大的作用。让智能小车先进入火灾现场进行勘测,掌握一些现场的内部情况,反馈给外面的消防员们,就可以给消防员们提供很多的便利,节约了寻找火源的时间,能让他们更加快速地了解现场的火情,间接减少了消防员们的伤亡。但是单纯依靠手动操控智能小车,对操控者的技术要求很高,一旦环境发生变化,可能无法及时修正控制路线,所以需要在原先手动遥控的基础上增加一点辅助自动避障能力,增加可操作性。
1.2 避障的概念
物体的运动方向随着外界障碍的出现作出改变的过程称为避障。在人类身体构造系统中,眼睛可以使我们非常方便地采集到外界环境的信息,然后把信息及时传输到大脑,并对外界环境信息的变化作出相应的处理,而对智能小车来说,避障模块之于小车就相当于眼睛之于人类,避障模块可以采集外部地形数据,然后把所采集的地形数据传输到中央处理模块,当检测到障碍物时,中央处理模块调用中断子程序,实现智能小车的避障。另外值得一提的是,避障功能是在原先手动控制的基础上增加自动避障功能。这种实现方式不影响主程序的编写,是在原先主程序不变的情况下,插入中断子程序,从而比较便捷地实现小车的自动避障[2]。
2 硬件设计
2.1 STM32简介
STM32处理器的出现为微控制系统、工业控制系统、汽车车身系统和无线网络以及对功耗和成本敏感的嵌入式应用领域实现高系统性能提供了基础。使编程的复杂性及其高性能、低功耗、低成本大大简化,并使它们融为一体。目前为止,STM32系列处理器暂时分为两个系列,其中STM32F101系列是标准型系列,工作频率设定在36 MHz。STM32F103系列是增强型系列,工作频率设定在72 MHz,其带有更多片内RAM和更丰富的外设资源。这两个系列的产品在软件和引脚封装方面具有兼容性,并且拥有相同的片内flash资源,使软件开发和升级更加方便。本次试验我们使用的是STM32F103处理器。
2.2 车的构造
由4路直流电机驱动模块、两个红外接收传感器、两节5 V稳压直流电池(可充电)、STM32F103ZET6芯片和智能小车底座构成。
2.3 避障模块的设计
小车的避障模块分为两个部分,主程序为手动的遥控小车的前进后退和转向。当智能小车传感器检测到前方出现障碍,但操纵者并未察觉到障碍物时,传感器将信号传输给STM32芯片,调用中断子程序,避开前方的障碍物,避开障碍物后继续执行操控者的指令,实现小车的智能避障。
2.4 介绍STM32的中断原理
STM32单片机的硬件将外设的中断源分为2个级别,这2个级别就是STM32F103系列单片机的抢占优先级和响应优先级。如果两个中断源的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高的响应优先级不可以打断正在执行的低响应优先级的中断。
STM32的每个I/O都可以作为外部中断的中断输入口,这点也是STM32的强大之处。STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。
一般情况下,系统代码执行过程中,只设置一次中断优先级分组,比如分组2,设置好分组之后一般不会再改变分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执行结果[3]。
3 软件设计
避障信号流图如图1所示。
当前方未出现障碍物时,智能小车正常运行;当出现障碍物时,传感器接收到信号,通过传感器电路将信号发送给STM32主控制器,系统调用中断子程序,最终电机驱动电路调整智能小车的运行路径。具体流程如下:当左右传感器任意一边检测到障碍物时,智能小车先后退500 ms,再右转600 ms,然后继续直行;当左右传感器都检测到障碍物时,智能小车先后退300 ms,再右转400 ms,然后继续直行。主程序及中斷程序如图2—3所示。
4 结语
本课题适应时代的发展需求,对智能避障小车系统进行了学习和研究,提出了设计的思路与中断避障子程序的流程,介绍了智能小车各个模块的硬件电路设计方案和对硬件电路的设计分析。这款智能小车的优点体现在以下几个方面:(1)只需要较少的硬件成本。比如只需要两个红外传感器便可实现基本的避障功能。(2)采用了STM32单片机。STM32单片机具有许多优点如使用了用途非常广泛的ARM内核、集成了非常丰富的接口,通信模块以及其他功能模块、可选择的型号非常多,基本上都不需要外部的硬件扩展、对各种流行的嵌入式操作系统支持比较好,各大嵌入式操作系统网站基本上都会提供支持它的相应的代码。(3)可以方便地对已有的设备进行改造。只需要加入编写好的中断程序,就可实现自主避障,且不影响原有的主程序。(4)红外传感器和STM32的成本相对不高,且插入的中断程序的内容也并不复杂,但它们对实现小车的避障功能起到了质的提高。
在软件设计方案中,我们只分析软件流程设计,以确定对应的程序编码。最后我们对软件、硬件进行测试,对于软件进行测试,我们使用Keil软件程序仿真,而对于硬件测试我们进行了人为设障[4]。
在本方案中,系统的缺陷在于面对不同工作设备及工作环境下避障策略存在局限性。比如:(1)小车传感器数量太少且传感器的种类比较单一,作为改进,可以在设备上多方位安装不同性能的传感器,例如超声波传感器、轨迹传感器等,甚至可以采用CCD摄像机、激光雷达等,以此来提高小车的自动化程度和自动化效率。(2)从移动机构的设计来讲,驱动电机是选择步进电机还是直流电机,控制方法是选择开环控制还是闭环控制,还需要进行深入的分析,步进电机和直流电机各有优缺点,开环控制和闭环控制各有利弊,关于他们的选择,应该综合考虑工作效率、能源利用率、设计难易及控制复杂程度等多项因素,最终找到最优的方案。(3)从多功能的角度出发,任何时候多功能服务机器人都比单一功能的服务机器人更受青睐。避障小车是一个可移动的智能平台,在避障功能之外,可以进行功能扩展,比如进行图像的采集和传输、WiFi通讯、循迹等。(4)从自主避障策略和路径规划来说,小车应具备自主选择最优路径的能力。总的来说,设计方案是比较完善的,基本上达到了设计所要求的目标。
[参考文献]
[1]刘佳.刍议智能机器人及其關键技术[J].企业导报,2012(1):264-265.
[2]钟科,陈向东.智能家居服务网关的设计[J]通信技术,2012(8):65-67.
[3]周柱,孟文,田环宇.基于stm32智能小车设计[J].技术与市场,2011(6):1-2.
[4]熊有伦,钱思.清洁机器人系统设计与智能避障问题的研究[J].机械与电子,2007(1):61-65.