基于Python 编程的智能小车寻线驾驶研究
2021-05-05王莹
王莹
(201620 上海市 上海工程技术大学)
0 引言
当前,全球正处于以互联网、大数据、云计算、人工智能等技术为代表的新一轮科技革命,汽车行业与人工智能正在逐渐交互融合,电动化、网联化、智能化、共享化成为汽车产业发展的潮流和趋势。如果说电动车是对于未来汽车的最基本要求,那么拥有高度人工智能的汽车就是人们最美好的想象。智能的无人驾驶汽车在控制、传感器技术、机械以及计算机领域不断被技术革新,迅速进化,几乎可以达到无需人工手动操作就能自动切换行驶状态、道路识别的功能[1]。
智能小车是一个集行为控制与执行、动态路径规划与决策以及环境感知的智能系统。它能验证智能车辆的控制算法,实现小车自主寻线驾驶、模拟真车行驶状态,对于智能车辆的研究具有一定的辅助作用。
智能小车的应用较广,可应用于国防、航空航天、工业和一些服务型行业,完成数据采集和故障处理等,在恶劣环境下帮助人类进行各种工作。智能汽车控制系统作为 21 世纪最新研究的技术产品,发展前景巨大,十分具有研究价值[2]。
本文通过对智能小车的硬件系统及控制系统进行设计的基础上,通过实物模拟,运用Python编程语言实现对小车自动驾驶过程中的寻线控制,实现其自动驾驶寻线功能,从而模拟真车行驶过程中的路线控制。
1 控制系统总体方案设计
基于Python 编程的智能小车寻线驾驶研究,目标是能够实现小车在给定路线下沿路线轨迹正常行驶。智能小车的控制系统总体方案设计主要包括主控模块、驱动模块、红外寻线模块、超声波模块、蓝牙模块、电源模块6 个模块。
2 智能小车硬件系统结构设计
2.1 车体框架
智能小车采用直流减速电机控制小车后方两轮进行驱动的结构,在小车最前方的红外传感器下方装有一个活动脚轮,可进行360°旋转,从而实现小车的转向功能,其实物如图1 所示。
图1 活动脚轮实物图Fig.1 Physical picture of caster
智能小车为双轮结构,双轮车架结构简单稳定,足以承受上层各模块的重量。上层模块的重量主要集中在电源模块和连接了Micro bit 芯片的可穿戴扩展版,在安装时应注意将这两部分装载于车架中央,以防重心的偏移导致小车前方的活动脚轮转向出现大幅度误差,改变小车原有的路径。
2.2 主控模块
主控模块的核心是将一块Micro bit 芯片作为主板,集成了绚丽多彩的LED 闪烁、超声波避障等常用传感器。Micro bit 具有免安装驱动,电子模块集成度高,支持时下最热门的多种编程语言等多项优势。
Micro bit 开发板尺寸虽小(125 px×100 px),但集成了种类丰富的电子模块:5×5 LED 显示屏,2 颗可编程按键,加速度计,电子罗盘,温度光线传感器,蓝牙低功耗等。Micro:bit 主板实物如图2 所示[3]。
图2 Micro bit 实物图Fig.2 Physical picture of Micro bit
Micro bit 主板具有多个引脚,I/O(Input/Output)端口,主要包括了GPIO,ADC,DAC,IIC,SPI,PWM 等,该主板引脚图如图3 所示。
图3 Micro bit 引脚图Fig.3 Pins of Micro bit
2.3 电机驱动模块
智能小车电机驱动模块采用了2 个直流减速电机来控制小车的左右轮,直流减速电机实物如图4 所示。作为控制小车执行前进、转弯、倒退等运行方式的重要执行机构,该电机是通过控制主板发出的PWM 调制信号实现电机的转速控制,通过控制2 个直流减速电机的转速来实现小车的转向。
图4 直流减速电机Fig.4 DC reduction motor
2.4 红外寻线模块
智能小车选用的红外传感器为TCRT5000 传感器。TCRT5000 采用的是蓝色LED 发射管,通电后发出人眼看不到的红外线[4]。传感器的黑色部分用于接收,内部电阻器的电阻随所接收的红外光而变化,其实物图如图5 所示。
图5 寻线传感器实物图Fig.5 Physical picture of line finding sensor
由该传感器构成的电路原理如图6 所示,当比较器的正向输入端电压低于反向输入端电压时,输出低电平,LED灯亮,表示接收到了反射光。
图6 寻线传感器电路原理图Fig.6 Circuit principle of line finding sensor
2.5 电源模块
智能小车电源模块所使用的是一节18650 锂电池,其实物图如图7 所示。18650 电池寿命理论为循环充电1 000 次。由于其单位密度的容量很大,所以大部分用于笔记本电脑,除此之外,因18650 工作稳定性非常好,广泛应用于各大电子领域。
图7 18650 电池实物图Fig.7 Physical picture of 18650 battery
18650 电池相比于普通电池,容量大、使用寿命长(一般为普通电池的2 倍)、安全性能高、电压高(一般为3.6 V,4.8 V,远高于镍镉和镍氢电池的1.2 V 电压),在充电前不必将剩余电量放空,使用方便。
2.6 蓝牙模块
蓝牙模块实物图如图8 所示。在该模块的作用下,本文所设计的智能小车可以实现数据互传。该模块波特率:9 600,停止位:1 位,起始位:1 位(0),数据位:8 位。蓝牙收到数据从Tx断口发送出去,对应板子上的Rx 断口,蓝牙接收端口为Rx 对应板子上的Tx 端口。
图8 蓝牙模块实物图Fig.8 Physical picture of Bluetooth module
2.7 超声波模块
智能小车在车头上装有一个HC-SR04 超声波测距传感器,实物如图9 所示。可用于检测透明物体、液体、任何表粗糙、光滑、光的密致材料和不规则物体。该模块包含超声控制电路、发射器以及接收器,具有传输距离范围宽、测距精度高等优点,因此,该模块可以作为智能小车的避障模块来实现小车基本的避障功能。
图9 HC-SR04 超声波测距传感器实物Fig.9 Physical picture of HC-SR04 ultrasonic distance sensor
该模块的工作原理为:(1)采用I/O 口TRIG 触发测距,给至少10 us 的高电平信号;(2)模块自动发送8 个40 kHz 的方波,自动检测是否有信号返回;(3)有信号返回,通过I/O口ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间×声速)/2。
2.8 车身部分
车身部分选用铝合金车架,其俯视图如图10 所示。
图10 智能小车车架俯视图Fig.10 Vertical view of intelligent car frame
3 红外探测算法
红外探测算法,即利用红外线在不同颜色物体表面具有不同反射强度的特点,根据收到反射光的强度判断寻线路径的位置。智能小车行驶过程中,由红外传感器不断向地面发射红外光。当红外光碰到给定路线上的白色部分时,发生漫反射,反射光被小车上的传感器接收;如果红外光碰到黑色线路,则会被吸收,小车上的传感器不会接收到红外光。智能小车的主板会根据是否收到反射的红外光为依据来确定黑线的位置和小车的行走路线[5]。
基于该算法,智能小车寻线流程图如图11所示。小车开始运行后,首先使用红外传感器探测黑线,在探测到黑线的情况下判断小车的运动情况并给出下一步的指示,如果没有探测到黑线,则给出停止运行命令并且重复进行路线的判断。
图11 红外探测算法寻线流程图Fig.11 Routing flow chart of infrared detection algorithm
相较于其他算法,红外探测算法不需要大量的运算和复杂的电路设计,避免了复杂的计算量使得数据膨胀的缺点,保证了寻线驾驶的稳定性和准确性。本文所用的主板Micro bit 的烧录容量上限为89 MB,过大的数据难以全部烧录进主板,使用该算法的情况下可以完美匹配本文小车所选用的硬件。
4 软件编程
4.1 编程软件
本文所使用的编程软件为Python,它不仅有简洁的语法,更关注高层次程序逻辑,将低层次逻辑通过封装其他语言代码(如 C、C++)或集成第三方库方式实现,Python 语言的设计初衷是更快速、更高效地解决问题[6]。
本文将Mu-0.9.13 作为Python 语言的编辑器。Mu 是一个跨平台编辑器,它具有编程语言的核心功能,去除了传统编辑器复杂的界面和设置以及各种各样的插件,专为本文所使用的micro:bit 开发板做了优化,可以直接编写micropython程序,并写入micro:bit 开发板中。
4.2 寻线驾驶程序
智能小车主程序的主要功能为:通过代码控制小车判断自身的位置是否处于黑线上,若当前位置没有偏离路线,则正常行驶;如果偏离路线,则通过一定方式回到正确的路线上。首先小车的初始状态为静止状态,使用Car_run(0)函数给小车一个为0 的初始速度。具体程序代码如下:
上述代码为小车寻线驾驶的主程序,要使小车正常运行,则需要加载已经定义完成的库。在程序的开头,使用“import PCA9685”语句载入PCA9685 模块。由于该模块并不属于Python 本身自带的模块,因此,需要额外建立一个名称为PCA9685.py 的库。通过导入该模块,能够在后续的程序代码中赋予小车行进的速度,使小车在黑线上全程以稳定速度运行,完整代码如图12 所示。
图12 寻线程序完整代码Fig.12 Line finding program code
通过本文设计的寻线程序,智能小车能够实现在给定的黑色线路上进行寻线驾驶功能。在运行过程中可以观察到,小车不管是在前行还是转弯状态下,车速都处于稳定,没有出现车速偏快偏慢的现象。小车在给定线路上运行状况如图13所示。
图13 小车实际寻线驾驶Fig.13 Actual route finding driving chart
5 结论
本文以智能小车为主要研究对象,预设了一个“8”字形行驶轨迹。经过调试,智能小车最终能够以稳定的速度实现其寻线驾驶功能。
本文实现了基于Micro:bit 为主板的智能小车寻线驾驶功能的硬件设计。以Micro bit 开发板为主板,构建了嵌入式硬件控制系统,搭建了真实智能车的缩影:智能小车。选用红外探测算法来完成智能小车的路线识别,规避了复杂的计算,减少了数据膨胀的可能性,较为完美地契合了硬件设备。通过Python 编程语言实现对小车的行驶控制,引导其完成预期的寻线驾驶功能。