基于STM32的智能小车斜坡定点停车再起步及过双边桥设计
2020-09-25朱伟枝杨亚萍蔡杰明
朱伟枝,杨亚萍,蔡杰明
(广东理工学院,广东肇庆 526100)
0 引言
近年来,车辆变得越来越普及,交通状况却愈加恶劣,交通安全事故常有发生,很大程度上由于驾驶员疲劳驾驶、不正当驾驶、恶劣的驾驶环境等因素导致的,伴随着高新技术的发展,智能的自动驾驶技术可以有效避免该类问题的出现。自动驾驶技术不仅可以减少驾驶员驾驶时间,还可以通过信息化技术规划路径,减少交通拥堵,减少安全事故的发生[1-2]。智能小车作为自动化行驶研究的基础,对智能小车的研究也有利于自动化车辆的发展[3]。20世纪50年代,美国巴雷特电子公司研发出自动导车系统,其后微软、谷歌以及IBM也连续推出自己公司设计出的新型智能小车。而国内对这方面的研究是从20世纪80年代开始的,国内各大高校和科研领域的各大机构都引起了重视,在检测与识别的技术研究中取得了很多新的突破[4]。
智能小车的设计研究要综合到多领域知识的融合,并且随着研究程度逐渐加深,其拓展利用到的技术也会更多。本文采用目前主流的STM32[5-6]系列单片机作为智能小车的控制器,通过循迹[7]和避障[8]模块的辅助,提供了一套能够实现斜坡定点停车后再次起步以及平直过双边桥这两项功能的设计方案,对自动驾驶技术的研究和发展具有积极的意义。
1 智能小车总体结构设计
本文将STM32主控芯片选为智能小车的核心处理器,在此基础上在外部加载硬件模块和连接线路。主控制器连接UNO转接板以及电机驱动模块,通过UNO转接板作为媒介,连接红外避障与红外循迹传感器,实现小车避障以及循迹功能。计算机编程控制程序通过录入转接板后传输到主板,实现路径规划以及电机PWM值的调控进而调节车速和实现差速功能。电源模块主要为整个硬件模块电路提供足够的电源,保证电路能在正常电压工作[9]。
1.1 主控模块
主板使用STM32F103RCT6处理器芯片,以Cortex-M3作为内核,最高工作频率为72 MHz,内置48 kb的静态随机存储器,其内部板载相关的应用主要有直接内存存取、STM32定时器、模数转换器、控制总线和UART等外围设备。
1.2 循迹模块
循迹功能的原理是通过利用光线在白色与黑色区域反射系数的不同,小车可以由此分辨出黑色循迹线的相对位置。当循迹线笔直位于两循迹传感器之间时,红外发射管发出的红外光线不会被黑色线吸收,可以顺利地经过地面反射,此时接收管便可以接收到折射回来的红外线,输出低电平信号,此时智能小车保持直行。当一侧循迹传感器检测到黑色循迹线,红外发射器发出的红外光线大部分将会被黑色线吸收,此时输出端输出高电平信号,这样便能检测到黑色循迹线的相对位置,使车身沿着黑线行驶。
1.3 避障模块
避障模块组成原理是通过传感器内部的发射二极管发射出红外光线,当红外线遇到障碍物时,光线反射,此时接收二极管便能接收到反射回来的红外线,这时输出低电平信号,光信号转化为电信号并且反馈给芯片模块,主控芯片通过设定的避障程序,控制电机运转从而使得智能小车能进行避障动作。
1.4 电机驱动模块
实现驱动各电机运转的核心是L298N芯片,可以对4个电机进行基本调控,左后轮与右后轮电机的正反接决定车轮转向,而前左轮和前右轮不仅能控制其正反接,还可以通过调节电容改变其电机转速,从而实现差速功能。
2 控制系统软件设计
2.1 循迹程序
循迹程序主要分为两个部分,一是红外传感器的检测状态,二是基本运动速率的控制。当左、右传感器都检测到白色区域的时候,智能小车执行前进run()函数;当左边传感器检测到白色区域,右边传感器检测到黑色区域时,意味着智能小车当前往左偏,需要执行右转turnringht()函数;当左边传感器检测到黑色区域,右边传感器检测到白色区域时,意味着智能小车当前往右偏,需要执行左转turnleft()函数;当左右传感器都检测到黑色区域时,意味着智能小车经过十字交叉路口,需要直接通过,因此执行前进run()函数。当系统接收到执行停止信号时,智能小车执行停止stop()函数,否则继续执行循迹程序。图1所示为循迹程序设计流程图。
图1 循迹程序流程
2.2 功能实现程序
本文主要是通过左、右避障传感器的检测状态来控制智能小车执行功能程序。当左、右2个传感器均没有检测到前方有信标物时,智能小车执行循迹程序;当只有右传感器检测到前方有信标物时,智能小车执行斜坡定点停车再起步程序,先在当前位置停止4 s,然后再起步执行循迹命令;当只有左传感器检测到前方有信标物时,智能小车开始执行过双边桥程序,根据内部设定的路径规划,先停下2 s,然后直走到双边桥路口,再左转把车身调整为直线,保持车身笔直一直通过双边桥。当左右传感器均检测前方到障碍物,或者系统接收到执行停止信号时,智能小车执行停止stop()函数,否则继续执行避障检测程序。图2所示为实现这两个功能的程序流程图。
图2 功能实现程序流程
3 功能测试
3.1 斜坡定点停车再起步
本文在实际验证时主要是通过使用C语言来编写程序。第一个功能是执行斜坡定点停车再起步,前半段路程主要是通过循迹功能实现从平地行驶至设定场地的斜坡中,在半坡的指定停车点中放置信标物,智能小车利用避障模块传感器检测信标物,核心控制器接收到反馈信号,并向电机驱动芯片发出指令,从而控制电机停转,由于车轮与坡道面的摩擦,智能小车能够停在半坡上。要实现半坡停下再次起步,主要是通过运行避障程序,使其在停下3~4 s后再次起步,如图3所示。
图3 斜坡定点停车再起步
图4 过双边桥
3.2 过双边桥
完成斜坡定点停车再起步后,智能小车继续沿着循迹轨道走,开始执行第二个功能。过双边桥主要是通过规划要走的路径来实现,在桥的起点处放置信标物,由红外传感器检测到信号,控制芯片实现编定好的路径规划程序,控制各电机驱动完成任务,如图4所示。
4 结束语
本次设计的以STM32为控制器的智能小车,通过循迹和避障模块的辅助,完成了实现使智能小车行驶到斜坡上的指定位置定点停车并再次起动,并接着通过狭窄的双边桥这两项功能的任务。在自动驾驶技术的实际应用中,根据具体的需求改变传感器的组合以及路径规划的算法,可以实现无人驾驶的自动化计划。智能小车涉及到的知识和学科领域广泛,对其研究不仅使得科学技术得到进步,还能使得人们生活更丰富更便利,对在军事、物流等领域都起着重要作用。