基于树莓派的自动壁障小车的设计与实现
2022-09-14刘泽伟
刘泽伟
(厦门理工学院 现代工程训练中心,福建厦门,361000)
0 引言
在智能化时代,自动驾驶、自动避障的汽车成为未来汽车行业研发的主流趋势[1]。本项目基于树莓派设计的超声波避障小车不仅具有用途广泛、设计简单、设计成本低等优点,而且根据现实需求与其他模块进行很好地配合,市场前景广泛。
1 整体架构
从构想中来看,本研究的自动避障小车首先应具备传感功能,这主要是由超声波避障模块和摄像头模块组成,而小车的运动则通过电机驱动。人机交互模块主要有蓝牙模块和手机APP模块,通过手机APP发送指令可以实现小车自动避障运动到指定地点,这种功能可以用于自动泊车、自动避障等,可扩展性极强。该小车总体结构如图1所示。
图1 自动避障小车的总体框架
2 硬件设计
■ 2.1 主控芯片
在本项目中,芯片也是自动避障小车最核心的部件,主控芯片是连接避障模块、运动模块和交互模块的桥梁,是自动避障小车能顺利运行的大脑。通过对树莓派各个版本的参数进行对比,树莓派3B+采用64位1.4GHz的四核CPU,相对于原来3B版本,3B+用上了更快的千兆以太网。本项目设计需要的视频、影像等的输出和输入接口树莓派3B+上都有,而且还自带4个USB接口方便外接相关仪器或者零部件。整体而言,树莓派3B+是本项目设计中较为理想的主控芯片。
■ 2.2 超声波避障模块
超声波避障模块其原理就是通过设备发射超声波在遇到障碍物时被反射,通过发射与反射接收的时间差可以准确地计算出小车与障碍物之间的距离。在本项目上使用超声波避障模块主要是相比于红外测距模块,超声波避障模块其成本更低。通过对市面上各类超声波避障模块地对比和选择,最终选择使用常州市脉诺石电子有限公司生产的型号为HCSR04的40kHz超声波测距模块,该模块不仅采用封闭式分体防水设计,可以适应一些潮湿、恶劣的测量场合,而且价格十分低廉[2]。其超声波避障模块如图2所示。
图2 超声波测距模块电路图
HC-SR04超声波测距模块的控制口会发一个10μs的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。如此不断的周期测量,就可以获得移动测量的值了,HC-SR04超声波测距模块可探测距离最远可达450cm,足够支撑本项目的设计需求[3]。
在实际设计过程中,为了更好地节约成本,在避障小车的底盘安装舵机,舵机按照一定频率周期性地检测左右两边和前方的障碍物,并根据是三个方向的障碍物距离综合判定进而选择小车运行的路径。其避障车算法流程为:当前方和左右的距离均大于25cm时则小车继续保持前进;当前方的距离小于10cm时,避障车开始检测左右两边的距离,当左边或者右边距离均大于25cm时则随机选择一边转向,只有一侧距离大于25cm时则朝着大于25cm距离的方向转向,再向前进;当左右和前方的距离均小于10cm时,小车会向后退,然后在左右两侧大于25cm 的一侧转向。其自动避障算法流程如图3所示。
图3 自动避障算法流程图
■ 2.3 摄像头模块
在避障小车上安装摄像头模块主要是为了在自动避障小车出现一些系统错误或是程序难以判断自身行为时,可以通过摄像头拍摄照片回传的方式来进行通过手机APP等交互模块来对小车进行介入管理或是通过摄像头模块方便进行视频直播。
在本项目的设计中,避障小车仅需回传图像即可。树莓派3B+配套的DSI排线摄像头,使用15PIN的排线将显示屏和摄像头分别连接到树莓派的DSI接口和CSI接口,为了方便组装和使用,可以将树莓派与DSI排线摄像头直接固定在显示屏的背面,方便最终的组装,其组合如图4所示。
图4 树莓派3B+与DSI排线摄像头组合
■ 2.4 电机驱动模块
在各种小车的电机驱动模块中,L298N因其相对于以前的L293D而言工作电压更高、电流更大、功率更强,应用域更广,L298N内含两个H桥的高电压大电流全桥式驱动器,可以驱动各类感性负载。最关键的是,L298N还内置了过热保护功能,大大降低了电机损毁的风险,还能直接与主控的树莓派3B+直接相连,融合性好,是当前小车设计中驱动集成电路中最常用的模块[4]。
在驱动模块中除了L298N驱动芯片外,还包括两个直流电机,一个控制小车的前进和后退,还有一个则连接一个万向轮来控制小车实现转向。通过L298N驱动芯片两个H桥的高电压大电流全桥式驱动器来驱动前面的被动万向轮和后面的驱动轮,通过代码的编写即可实现小车的前进后退和转向等行动。其电机驱动原理如图5所示。
图5 L298N电机驱动原理
在电源方面,主要是在小车的右下方设计一个电池盒,包括两节3.7V锂电池。为了确保电源能提供线性直流稳压电源,避免因电压不稳定而烧坏电路或者芯片等情况发生还需要在电源输出端安装LM7805CT稳压芯片。
■ 2.5 交互模块
树莓派3B+本身携带双频 802.11ac 无线网卡和蓝牙 4.2模块,因此可以直接使用手机上的蓝牙来实现避障小车与手机或者电脑之间的交互联系。
3 软件设计
在本项目的设计中,软件部分为上位机和下位机部分,上位机为安卓客户端,下位机则为草莓派3B+。在软件和避障小车打开后,草莓派3B+与安卓app都进行初始化,当APP上没有发出指令时,避障小车会开启自动驾驶,小车会按照初始方向沿直线行走,并按照“优先避障,其次循迹”的原则不断前进。当APP上发出指令时,这种自动行驶会关闭,然后根据APP的指令进行前后左右的移动。
■ 3.1 上位机软件设计
自动避障小车通过安卓系统上的APP实现对避障小车的交互,树莓派3B+自带蓝牙4.2模块,因此可以通过安卓手机上自带的蓝牙功能实现与树莓派3B+的无线通信。APP则在Android Studio 上进行开发,主要设计控制界面,本项目设计的自动避障小车主要应包含的功能有:前进、后退、左转、右转、停止等基本功能;通过蓝牙连接小车;图像回传;还有自动行驶模式。其APP页面如图6所示。
图6 手机APP页面
■ 3.2 下位机软件设计
下位机树莓派3B+则可以在树莓派版Raspbian操作系统输入各类代码来开发相关程序,开发控制软件主要使用Python。利用树莓派打造的机器人主要通过GPIO接口来连接各种驱动板块和传感器,在树莓派3B+程序运行时首先进行初始化,然后检查相关程序和模块是否运行即可。
首先是在树莓派中增加相应的python代码用于驱动电机和超声波传感器,在壁障小车中设计和两个电机,一个是控制小车前后移动,一个是控制小车进行左右转弯,因此需要加入相关代码以驱动电机的控制,相关代码如图7所示。其次是在Python程序中修改代码来促进小车能够按照指定的障碍物距离进行一定的角度的转移和避障。在相关程序调试好后,需要再设计一段代码来读取传感器的数值,以便进行计算并做出合理的判断并驱使小车正确地运行。
4 测试与结果
■ 4.1 蓝牙通讯
为了对自动避障小车的蓝牙通讯距离进行测试,通过对不同距离的小车进行遥控,测试通信是否能正常回传。在测试过程中,APP中的显示屏可以实时显示小车的运行速度和行使距离,还能看到小车前方的图像。其通信距离与测试结果如表1所示。
表1 蓝牙通讯测试
通过蓝牙通讯测试可以看出,自动避障小车在10米以内交互情况良好。
■ 4.2 避障功能
从表2可以看出,在多个障碍物设置下,避障小车试验50次的成功概率都较高,尽管设置障碍物多其成功次数有减少的趋势,但整体成功率较高,基本达成设计目标。
表2 避障功能测试
5 结束语
本文基于树莓派芯片设计了自动避障小车,实现了小车自动避障行驶。自动避障小车在程序的运行下,依托超声波避障模块和电机驱动模块可以实现自主地避障,也可以通过安卓设备对小车进行远程操控,并可以在APP中对小车的车速、运行距离、周边环境等信息进行采集。本文所研究的方法既可以适用于一些无人驾驶技术研究,也可以适用于一些远程汽车操控、自动泊车技术等方面的研究,具有较高的学术价值。