基于Android的智能小车控制系统软件设计与开发
2020-10-23刘剑英
摘 要:针对智能小车自动驾驶过程中存在的诸多问题,设计与开发了基于Android的智能小车控制系统。以Android端控制系统作为上位机,与搭载在智能小车主体上的主控平台进行通信连接,使用摄像头采集图像,实现在有效地范围内进行高效的环境视频传输。在Android端优化图像识别算法,实现了智能小车路径识别、自主巡线、自主避障、平稳快速的行驶等功能,同时还能接受Android端界面的手动控制。
关键词:Android;智能小车;控制系统;WiFi;摄像头
中图分类号:TP181 文献标识码:A
Design and Development of Intelligent Car Control System Software based on Android
LIU Jianying
(School of Information Technology, Dalian Vocational Technology College, Dalian 116035, China)
s-ill-y@163.com
Abstract: Intelligent car control system based on Android is designed and developed for automatic driving. The Android terminal control system is used as the upper computer, and is connected with the main control platform on the main body of intelligent car. The camera is used to capture images, achieving efficient environmental video transmission in an effective range. Optimizing image recognition algorithm in Android realizes the functions of intelligent car such as path identification, autonomous line inspection, autonomous obstacle avoidance, stable and fast driving and manual control from Android interface.
Keywords: android; intelligent car; control system; WiFi; camera
1 引言(Introduction)
随着“互联网+”和人工智能等高新技术的飞速发展,智能技术广泛应用于各个领域,智能产品也越来越受到人们的青睐。智能小车是集环境感知、规划决策、自动行驶等多功能于一体的综合系统[1],是智能交通系统的一个重要组成部分,它在军事、民用、太空开发等领域有着广泛的应用前景[2]。
智能小车与一般所说的自动驾驶不尽相同,它指的是利用多种传感器和智能道路技术实现的小车自动驾驶[3]。
本基于Android的智能小车控制系统主控平台采用Cortex-A9核心板,上位机采用开源的Android应用控制系统,使用摄像头采集图像、进行信息处理,实现在有效地范围内进行高效的环境视频传输。本智能小车具有路径识别、自主巡线、自主避障等功能,并可通过手机APP与智能小车进行UI交互操控,是一项具有广阔应用前景的智能车技术。
2 系统整体设计(Overall design of the system)
Android(安卓)是一种基于Linux内核的操作系统[4],特点是自由且源代码开放,Android主要应用于移动设备,如智能手机和平板电脑。现在Android在全球的市场份额已经高达87%,全世界采用Android的设备数量已经超过百亿台。
基于Android的智能小车控制系统由控制器数据接收模块、避障模块、WSN无线传感网模块、主控平台、摄像头模块、Wifi通信模块、通信接口及上位机智能小车控制系统构成。系统整体设计图如图1所示。
智能小车可以作为一个单独的个体,但是在作为一个单独的个体进行实验时,发现出现了一些问题,并不能流畅的达到预想效果,而在加入上位机智能小车控制系统Android端后,一部分算法在Android端运行,优化了图像识别算法[5]。在Android端控制、下发命令、完成参数反馈,可以使得智能小车有两个“大脑”,满足智能控制的同时,亦可手动操作[6]。
本智能小車Android端控制系统作为上位机,与搭载在智能小车主体上的主控平台进行通信连接。主控平台采用Cortex-A9核心板,主控平台的视频采集端口连接摄像头模块,接收摄像头模块采集的视频信息;主控平台的信息采集端口连接WSN无线传感网模块,用以采集环境状态信息和智能小车状态信息。
本智能小车Android端控制系统使用HTTP协议进行网络通信[7],获取摄像头数据,进行视频播放。智能小车使用Wi-Fi模块和手机连接,通过局域网的方式进行通信,主控平台将环境状态信息和智能小车状态信息发送给上位机,由上位机保存并提取特定的智能小车环境状态信息及其行车状态信息,将获取到的数据在智能小车Android端控制系统APP界面上显示出来,并根据上述信息判断是否适宜智能小车继续行进。系统使用的图像识别技术采用TensorFlow的神经网络。
3 系统软件设计(The design of system software)
软件控制是智能小车控制的核心,通过软件实现图像处理、控制智能小车平稳高速自动巡线。根据业务功能分析,系统功能主要划分为四个模块:连接模块、操作模块、波形传感模块、参数设置模块。系统功能模块图如图2所示。
基于Android的智能小车控制系统的主要程序如下。
privateBroadcastReceiverbroadcastReceiver = new BroadcastReceiver() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
switch (action){
caseWifiManager.NETWORK_STATE_CHANGED_ACTION:
Parcelableparcelable = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(null != parcelable){
NetworkInfonetworkInfo = (NetworkInfo) parcelable;
NetworkInfo.State state = networkInfo.getState();
if(state == NetworkInfo.State.CONNECTED){
WifiInfowifiInfo = wifiTool.wifiManager.getConnectionInfo();
SharedData.ssid = wifiInfo.getSSID();
adapter.notifyDataSetChanged();
}else if(state == NetworkInfo.State.DISCONNECTED){
SharedData.ssid = null;
adapter.notifyDataSetChanged();
}
}
break;
caseWifiManager.SCAN_RESULTS_AVAILABLE_ACTION:
updateWifiList();
break;
}
}
};
4 軟件开发(Software development)
本智能小车控制系统是一个基于Android操作系统的智能手机APP。Android应用控制系统是本系统的核心部分,负责对图像进行二次处理。智能小车主控平台负责对图像进行一次处理,如果处理结果模糊则交由Android应用进行二次处理。Android应用控制系统与智能小车主控平台进行通信,实现对智能小车的控制与状态显示,并且可以进行UI交互操控。
4.1 设备连接
在Android操作系统中点击智能小车控制APP,进入程序后,第一个界面为设备连接界面,可以选择通过两种不同的模式来连接智能小车,分别是WiFi连接和蓝牙连接。设备连接界面如图3所示。
4.2 操作界面
智能小车控制APP软件系统的操作界面中分为八个操作区域。操作界面如图4所示。八个操作区域分别为:界面选择区域、表盘模块、摇杆模块、视频界面、行走模式、智能小车姿态、ccd距离模块、控制指令显示区域。
八个操作区域的功能如下:
(1)界面选择:包含操作、显示波形传感、参数设置三个界面,可以通过单击“操作”“显示”“设置”三个按钮在界面之间来回切换。
(2)表盘模块:表盘显示智能小车的实时电量百分比。
(3)摇杆模块:用来操控智能小车的运动方向。
(4)视频界面:视频界面显示智能小车摄像头实时采集的图像;单击界面可以抓取图像;在模块内手势滑动也可以控制摄像头上下左右移动,调整摄像头的角度。
(5)行走模式:行走模式分为“遥控模式”“巡线模式”“避障模式”三种模式。遥控模式为通过手机控制智能小车行走;巡线模式为智能小车沿预定路线循环行走;避障模式为开启感知模块,当智能小车前行方向有障碍物,智能小车自主选择避让障碍物继续前行。
(6)智能小车姿态:区域模块中的正方形随着智能小车车身的倾斜而倾斜,因此,正方形可以显示智能小车当前车身的状态和倾斜角度。
(7)ccd距离模块:ccd是巡线感应器,ccd距离模块会随时查看到ccd距离线路的偏离情况。
(8)控制指令显示:此模块显示手机对智能小车下发命令的十六进制元数据。
4.3 显示波形传感
在智能小车控制APP软件系统的界面选择区域,点击“显示”按钮,在界面右侧选择相应的传感点,左侧波形图中会绘测出折线的波形图,显示各个传感点的模型变化。显示波形传感界面如图5所示。
4.4 参数设置
为使得智能小车能够平稳快速的行驶,本系统采用了增量型PID控制策略。PID控制算法具有稳定性好、响应速度快、调整方便的特点[8]。
点击智能小车控制APP软件系统界面选择区域的“设置”按钮,打开智能小车参数设置界面,可以分别设置智能小车的“直立环”“速度环”“巡线环”“避障环”的P、I、D三个参数。参数设置界面如图6所示。
P代表比例参数:控制系统的反应速度。
I代表积分参数:积分参数用来消除系统静态误差,系统中有一个积分时间常数,是积分参数的倒数,积分参数越大,积分环节作用影响越明显。
D代表微分参数:微分的作用是“阻尼”,也就是根据现在的趋势去判断未来,进而来阻碍未来可能出现过调的趋势,相当于是提前点踩刹车,但是又不全踩刹车。
“读取”按钮:点击“读取”按钮,读取智能小车的当前设置值,并显示在界面当中。
“写入”按钮:点击“写入”按钮,将当前界面设置的参数保存,并下发参数至智能小车主控平台中。
“恢复默认”按钮:点击“恢复默认”按钮,读取智能小车的出厂默认参数值并显示在界面当中,同时下发参数至智能小车的主控平台中。
5 结论(Conclusion)
基于Android的智能小车控制系统融合了图像识别、传感器、物联网、Android应用技术等多个技术方向。智能小车在Android端优化图像识别算法,使用摄像头采集图像,可以在有效地范围内进行高效的环境视频传输。Android端应用可对模糊图像进行二次处理,可以通过Android端对智能小车进行自动控制,智能小车可以自行前行、路径识别、巡线、避障,可以平稳快速的行驶,同时还能接受Android端界面的手动控制。本研究對小车自动驾驶及智能交通系统的发展具有促进作用,可应用于城市建设的各个方面。
参考文献(References)
[1] 楚士杰,徐子豪.智能车设计与发展研究[J].通信电源技术,2020(4):48-49;51.
[2] 侯文静,杨广东.基于DSP的智能车控制系统设计[J].信息技术与信息化,2020(5):234-235;239.
[3] 郑亚利,古训.基于CMOS摄像头循迹的智能车控制系统设计[J].贵阳学院学报:自然科学版,2019(1):100-104.
[4] 王春东,杨宏,宫良一.基于Android平台的视频监控智能车设计[J].消防科学与技术,2017(1):72-75.
[5] 魏溪含,涂铭,张修鹏.深度学习与图像识别原理与实践[M].北京:电子工业出版社,2019.
[6] 马鑫源,李燕燕,梁雅雯,等.四旋翼飞行器控制系统设计及可视化仿真[J].软件工程,2020(2):29-33.
[7] 黄姝娟,刘萍萍,白小军,等.基于STM32的智能车控制系统的设计与实现[J].计算机技术与发展,2018(9):185-188;193.
[8] CAI S, HUANG Y, YE B, et al. Dynamic illumination optical flow computing for sensing multiple mobile robots from a drone[J]. IEEE Transactions on Systems, Man, and Cybernetics: Systems, 2018, 48(8): 1370-1382.
作者简介:
刘剑英(1979-),女,硕士,副教授/高级工程师.研究领域:嵌入式技术,软件开发.