基于Android的车载导航系统的研究与设计
引言
近年来随着社会经济的飞速发展,公路交通的复杂性和拥挤度与日俱增,现有的交通运输管理与服务手段已不能适应交通运输的需求,这已成为长期以来困扰发展中国家和发达国家的问题。因此,车载导航应运而生,在一些发达国家,车载导航已成为大众生活的辅助品。但是在中国由于技术、资金以及成本等原因,我国的车载导航市场还是处于发展初期。车载导航系统是集中应用了自动定位技术、地理信息系统与数据库技术、计算机技术、无线通信技术的高科技综合系统。目前国内市场上的车载终端技术不够完备,市场化程度低,真正达到消费者要求的并不多见。随着对导航系统信息服务能力要求的进一步提高、终端硬件成本的不断下降以及操作系统的不断升级,选择一款易于开发、维护和升级,并且兼容性强的操作系统来支撑终端硬件系统的运行就显得异常重要。
由嵌入式Linux和Java虚拟机构成的Android操作系统,为嵌入式移动设备带来全新的开放系统解决方案。本文在众多的操作系统中选择Android作为车载导航的系统终端软件,因为Android是开源的操作系统,有利于开发人员理解平台框架,降低移动终端设备的价格,同时也便于软件的开发、维护和升级。
1 Android操作系统介绍
Google公司于2007年11月发布的Android操作系统,是一款建立在Linux操作系统2.6版本内核之上的手机操作系统平台。Google公司是这样定义Android操作系统的,它是首个专门为移动终端打造的真正意义上的开源且系统完整的移动平台,而且不存在不同设备上的兼容性问题。
Android平台由操作系统、中间件、用户界面和应用软件组成。Linux内核层用来提供系统的底层服务,位于硬件和其他软件层之间,采用YAFFS2文件系统。Android运行库包含一组核心库和Dalvik虚拟机,Android提供丰富的类库支持且大部分为开源代码,如采用嵌入式数据库SQLite。应用框架层为Android开发人员提供了访问框架应用程序接口的全部权限,采用结构化设计简化了组件之间的重用。在应用程序层,Android本身附带了一些核心的应用程序,大大简化了Android应用程序的开发。
因此,利用Android操作系统作为车载导航终端的应用平台,由于操作系统与软件免费,导航终端更便宜;同一平台克服格式问题,功能更多元化;使用者决定功能,比个人电脑更人性化、更贴近消费者。
2 系统框架设计
本系统是一款以三星公司的S3C6410处理器为核心的嵌入式开发板,先开发Bootloader引导程序,接着在此基础上移植Linux内核,然后制作Android文件系统;在移植好Android操作系统后,进行车载导航功能的开发,任务集中在通过GPS实时获取路径,使用地图匹配算法校正定位模块的定位误差,采用最短路径导航规划算法进行导航,通过语音提示实现路径的引导,并且通过电子地图配合Android系统软件的API接口,同时它还具有不断升级的地图库,并能按照用户的需求进行各种信息查询,真正实现一个体积小、耗电少、成本低并且人机界面友好的嵌入式操作系统平台。系统框架图如图1所示。
图1 系统框架图
利用Android操作系统在ARM硬件平台上实现车载导航终端各功能模块的整合,配合相应的串口驱动、液晶屏驱动等完成指定的功能,如对接收到的数据进行处理,计算所在位置的经度、纬度、海拔、速度和时间等,并且采用地图匹配算法进行定位误差校正,自主导航路径规划采用Dijkstra算法,实现最短路径导航。GPS系统具有全天候、全球覆盖、三维定速、定时、高精度、快速、省时、高效率、应用广泛、多功能等特点,因此可广泛应用于陆地、海洋以及航空航天等。电子地图的使用,直观地将丰富的城市地图、全国的公路网图、加油站、便利商店、政府机关、餐馆、医院、停车场等信息同步地在LCD液晶显示屏上显示出来,方便中高端使用人员进行查询参考。
3 车载定位导航系统软件设计
在车载导航系统软件设计过程中,利用了Android软件平台的5大功能模块,分别为Android应用程序层、应用框架层、普通函数库、Java程序运行环境和Linux内核层。在应用程序层利用Android的各种组件API接口开发了针对车载导航的GPS、电子地图的Java应用程序,并在内核层提供了相应串口以及液晶屏等其他的底层驱动。
3.1 GPS定位模块软件设计
Android操作系统支持GPS APILBS,可以通过集成GPS芯片或外接GPS设备来接收卫星信号,通过GPS全球定位系统中至少3颗卫星和原子钟来获取当前设备的坐标数据。对于定位功能而言,稳定性好是重中之重,而Android实现了这一点。Android提供了许多定位相关的类以及相关的函数,使得开发人员可以灵活应用。使用位置信息管理类LocationManager进行GPS定位,使用Criteria类来实现自定义定位功能。当然在设计的导航系统中,我们希望所实现的GPS设备尽可能省电,定位尽可能精确,并且需要获取运动物体的速度。因此,设置的Criteria对象如下所示:
Criteria mCriteria=new Criteria();
mCriteria.setAccuracy(Criteria.ACCURACY_FINE); /*经纬度是否精确提供*/
mCriteria.setAltitudeRequired(false); /*是否提供高度信息*/
mCriteria.setBearingRequired(false); /*是否提供航向信息*/
mCriteria.setCostAllowed(true); /*费用*/
mCriteria.setPowerRequirement(Criteria.POWER_LOW); /* 设置低电量参数*/
mCriteria.setSpeedRequired(true); /* 是否获取当前物体的速度*/
- 基于ARM的车载导航系统的研究与设计(08-09)
- LBS的车载导航应用(10-14)
- 车载导航中人机语音交互系统的设计与实现(01-24)
- ADXL202在组合车载导航系统中的应用(09-15)
- 基于SOPC技术的多功能车载终端设计(01-16)
- 基于Android车载虚拟仪表人机界面设计(06-22)