APP下载

基于Android平台的车路协同系统车载终端设计

2018-07-10李博森何大治冯奕佳刘思源

现代电子技术 2018年13期
关键词:智能交通程序设计

李博森 何大治 冯奕佳 刘思源

摘 要: 基于Android操作系统,通过获取车载单元与路侧单元的通信信息,开发出一套车路协同系统的车载终端平台。该平台具有突发情况预警、紧急车辆优先通行、最佳车速引导等功能,并且可以根据具体需求不断丰富与完善其功能。该车载终端系统测试效果良好,对车路协同系统的产业化应用具有一定的推动作用。

关键词: 智能交通; Android; 车路协同系统; 辅助驾驶; 车载终端; 程序设计

中图分类号: TN919.3?34; TP311.1 文献标识码: A 文章编号: 1004?373X(2018)13?0083?05

Abstract: On the basis of Android operating system, a set of vehicle terminal platform for CVIS (cooperative vehicle infrastructure system) was developed by acquiring the communication information of the vehicle unit and roadside unit. The platform has the functions of emergency warning, priority pass of emergency vehicle and best speed guidance, and can enrich and improve its functions according to the specific needs. The vehicle terminal system has perfect test results, and a certain promotion effect for the industrial application of CVIS.

Keywords: intelligent transportation system; Android; CVIS; assisted driving; vehicle terminal; programming

0 引 言

随着经济与社会的快速发展,交通问题逐渐成为世界各国大城市急需解决的重要问题。据不完全统计,在中国,每年因车祸死亡人数高达六万多人,全世界每年因车祸造成的死亡人数超过130多万。其次,特大城市的交通拥堵现象越来越严重,不但造成时间上的浪费,而且加重了环境污染。现在已有的高峰限行、拍牌限购、尾号限行等手段调节效果不明显,不能从根本上解决问题[1]。为了提高行车安全,同时为了更好地解决现存的交通拥堵问题,最大化地提高人们的出行效率,世界各国都逐步进驻智能交通领域[2]。

智能交通中最核心的一个子系统是车路协同系统。车路协同系统采用先進的通信技术以及新一代互联网技术,全方位实现车车、车路的动态实时监测,在尽可能短的时间内,实现各种有效信息的交互与共享[3]。车路协同系统通过对整个动态交通信息的采集与融合,进行车辆主动安全控制和道路协同管理。然而,我国的车路协同系统起步较晚,发展较慢,各大车厂对于车路协同系统还处于试验研发阶段,并没有大规模的商业化应用[4]。

目前国内的车载终端主要以导航和娱乐为目的,还没有商业化的与车路协同系统相结合的车载终端人机交互系统。本文以Android操作系统为平台,开发出针对车路协同系统的车载终端平台,以达到辅助驾驶,提高行车安全与交通效率的目的[5],并在上海交通大学闵行校区车路协同系统示范区进行示范应用。由于Android操作系统的开放性与可开发性,该车载终端平台可以根据具体需求不断丰富完善具体功能,为辅助驾驶、智能交通的发展提供低成本、易实施的技术路线与基础平台[6],对车路协同系统的实用化与商业化具有建设性意义。

1 车路协同系统介绍

车路协同系统由路侧单元(RSU)和车载单元(OBU)组成。路侧单元采集道路信息与车辆信息,将其接入更大的基础设施核心网络,并且将各种必要信息周期性广播至车载单元。车载单元从路侧单元采集道路信息并且播发自身信息,对道路信息做出判断和反应。

1.1 路侧单元

车路协同系统的路侧单元分布于道路基础设施中,如交通信号灯、路灯、电线杆等基础设施,在其中加入DSRC通信设备并加以改装,构成车路协同系统中的路侧单元。路侧单元首先采集道路信息与车辆信息,对于采集到的数据,路侧单元通过网络实时与数据处理中心进行交互,以等待下一步的指令。此外,路侧单元将采集到的重要基本信息通过DSRC通信技术传输到车辆中的车载单元,供车载单元进行判决与反应。路侧DSRC通信设备如图1所示。

1.2 车载单元

车路协同系统的车载单元为DSRC信号交换器和一个基于Android系统的车载终端。DSRC信号交换器采集道路信息与周围车辆基本信息,并且将采集到的指令信息在Android设备上解码。车载终端以基于Android操作系统的平板电脑为载体,其操作方便,在此平台上可以开发出针对不同功能场景的应用,具有可扩展性,可用于以后的不断更新与完善。

如图2所示为车路协同系统整体架构,车载单元包括人机交互界面、数据处理模块和通信模块,通信协议采用DSRC协议,车载单元通过BOX与路侧单元进行通信,路侧单元在接收到车载单元的信息后将其发送到服务器端(Server)[7]。服务器可以在搜集到各车辆信息(包括位置信息、车速、车辆数量等)和路测设备状态信息(红绿灯周期)后作出交通拥堵预报、路测设备诊断等,并且服务器可以通过红绿灯控制器控制红绿灯周期,从而保障行车安全并且优化车辆的路口通行。

2 车载终端系统主要功能实现

针对保障行车安全、提高行车效率与人性化操作的需求,该Android车载终端系统主要具有以下功能:

1) 对突发状况进行预警与警告;

2) 特殊车辆优先通行;

3) 车速引导判断与计算;

4) 人性化的人机交互界面。

2.1 突发情况的预警与警告

传统的机动车安全辅助设备依靠雷达、机器视觉传感器设备对短距离道路情况进行获取,在车辆危险预警方面存在很大的局限性。本车载终端系统采用不同的解决方案:远处路侧单元采集突发状况,上传至服务器,服务器将信息散发至其他各个路侧单元;邻近的路侧单元通过DSRC通信技术及时向车载单元发送突发状况预警,车载终端可提前对突发情况做出反应,保障行车安全。

2.2 特殊车辆优先通行

对于救护车和消防车等紧急救助车辆,常常由于交通拥堵耽误宝贵救助时间[8]。救护车等紧急车辆安装该车载终端后,在行驶至十字路口之前,通过车路协同系统可以将车辆信息提前通过路侧单元发送至服务器,服务器可以提前调整交通信号灯的周期和红绿灯的亮灭,从而保障当紧急车辆行驶至十字路口时,可以安全顺畅地通行。

2.3 车速引导功能

交叉路口为车辆事故高发区,而车速引导功能可以提高交叉路口的行车安全,同时提高交通效率,降低交通延误。为便于车速引导系统实际程序的开发,将实际道路交叉口与车辆进行模型化假设:

1) 车辆类型整体统一,不考虑不同车辆不同体积的影响;

2) 只考虑单一道路交叉口的车速引导,不考虑相邻道路交叉口的影响;

3) 不考虑行人和其他非机动车辆的影响;

4) 对直行车辆最高时速限制为60 km/h,转弯车辆限制[9]为30 km/h。

如图3所示为车速引导流程框图。车速引导算法考虑针对不同优先级的车辆,拥有不同的车速引导权限。当车辆即将通过路口时,首先判断车辆的优先级。如果车辆为高优先级的紧急车辆,且在信号灯周期内通过车速引导可以顺利通过,则正常通行。如果车辆不能通过车速引导正常通过,则可以在不影响其他道路安全通行的前提下,提前变换交通信号灯的状态,保障优先级车辆的顺利通行。如果为普通车辆,则其没有改变交通信号灯状态的权限,只需通过车速引导使其高效顺利通过即可。

2.4 人机交互界面

为了道路信息的直观显示,便于将车辆与道路信息及时向驾驶员呈现,该车载终端系統具有以下人机交互功能[10]。

2.4.1 地图显示功能

为了将车辆信息与道路信息直观地呈现,该车载终端系统将各种车辆与道路信息在地图上实时动态显示。地图显示模块调用第三方的Map服务,使用百度公司的地图API(Application Programming Interface,应用程序编程接口)服务,可以方便快捷地调用定位、导航等服务[11]。同时,百度地图支持多个地点标志Marker的显示,通过经纬度即可对任一地点进行定位,让用户对当前路况信息一目了然,在因恶劣天气导致的能见度低的情况下可以提高行车安全。

2.4.2 图形显示与操作界面

图形化操作界面可以显示的信息有安全警示信息,例如,前方有道路正在施工,且施工单位含有路侧终端设备,可以将施工位置的经纬度通过广播发送,车载终端接收后发送给APP的数据处理模块,若该施工位置和行车路线有冲突,则显示该警示消息;还可以显示最佳行驶方案,当行车即将到达红绿灯时,红绿灯上的路侧终端设备将红绿灯的位置、状态及时长通过广播发送,车载终端在轮询时接收到这些信息后通过最优车速模型解算出最优车速,通过图形化界面显示出来。还可以通过按钮选择是否需要地图导航的即时更新或语音播报。图形显示与操作界面如图4所示。

2.4.3 语音提示

语音模块可以将当前接收到的安全警示信息和最佳行驶方案通过语音播报的方式传递给用户,在驾车过程中能够更加安全、方便地接收到路况信息,减少用户由于查看显示界面造成的安全隐患。

3 车载终端系统主要模块代码实现

整个车速引导系统基于Google Android开源平台设计开发,系统使用Eclipse集成Android开发环境,利用Java语言进行开发,Java版本为1.8.0_65,Android系统版本为4.4.2(API 19)。程序开发过程主要包括如下几个模块的具体实现。

3.1 地图模块

出于性能优化考虑,Android的UI操作并不是线程安全的,如果有多个线程并发操作UI组件,则可能会导致线程紊乱问题。为了解决这个问题,Android制定了一条规则:只允许UI线程修改Activity里面的UI组件。同时,Android提供了一种解决方案,即使用Handler实现线程之间的通信。

基于上述规则,新启动的线程无法动态改变界面组件的属性值,此时就需要借助Handler的消息传递机制来完成,让新启动的线程周期性地改变界面组件的工作。在主界面Activity被创建时构造一个Handler对象MapUpdater,让它控制两个线程对界面的修改,其中一个线程负责更新地图上标志的位置,如本车位置[12];另一个线程负责接收安全警示消息和行驶方案,显示在图形界面并且进行语音播报。

而这两个线程相对于主线程是异步的,为了让主线程能适时地处理新启动的线程发送的消息,把更新界面组件的控制权交给子线程,显然只能通过回调的方式实现。这里使用Observer设计模式,在Java中则通过Observable类和Observer接口实现这一设计模式,具体实现过程如下:

Handler MapUpdater=new Handler();

//调控主线程和子线程的Handler

Runnable MapUpdate=new Runnable()

//更新地图信息的线程

Runnable MsgUpdate = new Runnable()

//更新警示消息和行车方案

class IsUpdateEnabled extends Observable{}

//控制消息更新线程开关的Observable类。卷屏关闭时,线程将不运行

class Watcher implements Observer{}

//监听消息更新线程开关的Watcher类

3.2 数据处理模块

Android平台上有两种基本的事件处理模型,分别是基于监听和基于回调的事件处理模型,从代码实现的角度来看,基于回调的事件处理模型更简单。而Service组件与其他组件相互通信的方式便是通过onBind方法返回一个IBinder对象,让其他组件通过该对象和Service组件通信,这也可以视为一种回调的方式。数据处理模块是一个继承自Service的类ComuService,在主界面的Activity启动时即和ComuService绑定,并且在连接成功后获取Service的onBind方法返回的MyBinder对象(继承自Binder类)[13]。同时,在Activity中还需要构造ServiceConnection对象,该对象用于监听访问者和Service之间的连接情况,在ServiceConnection的onServiceConnected()方法中有一个IBinder对象,在连接成功时该方法会产生IBinder对象,所以不需要再在其他地方构造IBinder对象。

绑定完成后,ComuService中会有一个新的线程周期性地接收和处理从车载终端传送过来的数据[14]。新建线程的原因有两点:一是Service不会专门启动一个单独的进程,而是和它所在的应用位于同一个进程中;二是Service不能直接处理耗时的任务,否则会引起UI线程阻塞,引发ANR(Application Not Responding)异常。

以下是ComuService类的定义:

public class ComuService extends Service {

private String message;

//安全警示消息或最优行驶方案

private int event=0;

//1?>车车相遇;2?>行驶方案;3?>限速提示;4?>道路施工

private int speed=0;

//限速牌提示的最高速度或能通过红绿灯的最佳车速

private double lat=0;

//本地车纬度

private double lng=0;

//本地车经度

private double latR=0;

//远程车纬度(动态改变)

private double lngR=0;

//远程车经度

private double latS=0;

//红绿灯、限速牌或施工位置的纬度(静态位置)

private double lngS=0;

//红绿灯、限速牌或施工位置的经度

public class MyBinder extends Binder;}

//与被绑定组件通信的对象

3.3 语音模块

语音模块使用一个内置的类:android.speech.tts.TextToSpeech,在主界面的Activity启动时新建一个对象mTextToSpeech并初始化它的监听器,初始化部分代码如下:

mTextToSpeech=new TextToSpeech(this,new TextToSpeech.OnInitListener(){@Override

public void onInit(int status){}

});

初始化后即可通过speak函数直接朗读出消息warnMsg,如下所示,QUEUE_ADD參数表示播放完之前的语音任务后才播报本次内容,原因是TextToSpeech类以队列方式存放需要播报的消息,可以通过参数设置选择播报方式。

mTextToSpeech.speak(warnMsg,TextToSpeech.QUEUE_ADD,null);

4 测试结果

按照预先设计的功能要求,在上海交通大学闵行校区车路协同系统示范区内进行测试,测试结果可以在地图上实时动态显示车辆和道路信息,通过语音提示驾驶员,实现紧急突发情况报警、紧急车辆优先通行和车速引导等功能,达到了预期效果。车速引导系统测试截图如图5所示。

5 结 语

本文以Android操作系统为平台,开发了一套基于车路协同系统的车载终端系统。该车载终端系统可以实时与道路设备和其他车辆进行信息交互,实现了突发情况预警、特殊车辆优先通行和车速引导等功能,并且由于Android操作系统的易开发性,后期可以根据具体需求不断增加完善新功能。经过实际车路测试,该车载终端系统使用方便,运行稳定可靠,具有较高的应用价值与推广前景。

参考文献

[1] 邵春福.我国城市交通发展中的关键问题及对策建议[J].北京交通大学学报,2016,40(4):32?36.

SHAO Chunfu. Some key problems and suggestions for the development of urban transportation in China [J]. Journal of Beijing Jiaotong University, 2016, 40(4): 32?36.

[2] 陆化普,李瑞敏.城市智能交通系统的发展现状与趋势[J].工程研究?跨学科视野中的工程,2014,6(1):6?19.

LU Huapu, LI Ruimin. Development status and trends of urban intelligent transportation systems [J]. Journal of engineering studies, 2014, 6(1): 6?19.

[3] 陶永,闫学东,王田苗,等.面向未来智能社会的智能交通系统发展策略[J].科技导报,2016,34(7):48?53.

TAO Yong, YAN Xuedong, WANG Tianmiao, et al. Intelligent transportation system development strategy for future smart society [J]. Technology review, 2016, 34(7): 48?53.

[4] 贺汉根,孙振平,徐昕.智能交通条件下车辆自主驾驶技术展望[J].中国科学基金,2016,30(2):106?111.

HE Hangen, SUN Zhenping, XU Xin. Autonomous driving techniques under intelligent transportation conditions: review and outlook [J]. Bulletin of national natural science foundation of China, 2016, 30(2): 106?111.

[5] 郭克友,王艺伟,郭晓丽.基于Android系统的机动车辅助驾驶功能的实现[J].实验技术与管理,2016,33(2):106?109.

GUO Keyou, WANG Yiwei, GUO Xiaoli. Realization of assistance driving functions of vehicles based on Android system [J]. Experimental technology and management, 2016, 33(2): 106?109.

[6] 唐硕.基于Android平台的车联网车载应用软件的设计与实现[D].北京:北京邮电大学,2014.

TANG Shuo. Design and implementation of car client application on IOV based on Android platform [D]. Beijing: Beijing University of Posts and Telecommunications, 2014.

[7] 蔡伯根,王丛丛,上官伟,等.车路协同系统信息交互仿真方法[J].交通运输工程学报,2014,14(3):111?119.

CAI Bogen, WANG Congcong, SHANGGUAN Wei, et al. Simulation method of information interaction in CVIS [J]. Journal of traffic and transportation engineering, 2014, 14(3): 111?119.

[8] 龙文民,褚端峰,施辉,等.车路协同环境下紧急车辆优先通行方法研究[J].中国安全科学学报,2015,25(7):141?146.

LONG Wenmin, ZHU Duanfeng, SHI Hui, et al. Algorithm research on traffic priority for emergency vehicles based on cooperative vehicle infrastructure system [J]. China safety science journal, 2015, 25(7): 141?146.

[9] 李鹏凯,杨晓光,吴伟,等.车路协同环境下信号交叉口车速引导建模与仿真[J].交通信息与安全,2012,30(3):136?140.

LI Pengkai, YANG Xiaoguang, WU Wei, et al. Modeling and simulation of vehicle speed guidance at signalized intersections in vehicle?road cooperative environment [J]. Journal of transport information and safety, 2012, 30(3): 136?140.

[10] 陈志忠,孙晓聪,任鹏,等.基于Android平台的车联网信息管理系统[J].科技与创新,2016(23):91.

CHEN Zhizhong, SUN Xiaocong, REN Peng, et al. Car network information management system based on Android platform [J]. Science and technology & innovation, 2016(23): 91.

[11] 王萬丽.百度地图API应用综述[J].电脑编程技巧与维护,2017(5):35?36.

WANG Wanli. Baidu Map API application review [J]. Computer programming skills & maintenance, 2017(5): 35?36.

[12] 高畅.车路协同环境下的车辆无线定位方法研究[D].北京:北京交通大学,2016.

GAO Chang. Vehicle wireless location methods in connected vehicle environment [D]. Beijing: Beijing Jiaotong University, 2016.

[13] 谢原武,龙文.基于 Android 开发的 APP 数据存储研究[J].电脑知识与技术,2016,12(28):12?13.

XIE Yuanwu, LONG Wen. Research on APP date storage based on Android platform [J]. Computer knowledge and technology, 2016, 12(28): 12?13.

[14] 上官伟,史斌,蔡伯根,等.车路协同环境下信道接入协议的优化方法[J].交通运输系统工程与信息,2016,16(6):47?53.

SHANGGUAN Wei, SHI Bin, CAI Bogen, et al. Optimization of channel access protocols and performance evaluation in cooperative vehicle infrastructure environment [J]. Journal of transportation systems engineering and information technology, 2016, 16(6): 47?53.

猜你喜欢

智能交通程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于物联网的智能交通系统架构
高职高专院校C语言程序设计教学改革探索
基于支持向量机的车牌字符识别方法
智能交通中的车辆检测专利技术综述
PLC梯形图程序设计技巧及应用