基于Android的车载导航系统的研究与设计

发布者:快乐的旅程最新更新时间:2012-05-10 来源: 单片机与嵌入式系统 关键字:Android  车载导航系统  Dijkstra算法 手机看文章 扫描二维码
随时随地手机看文章
引言
    近年来随着社会经济的飞速发展,公路交通的复杂性和拥挤度与日俱增,现有的交通运输管理与服务手段已不能适应交通运输的需求,这已成为长期以来困扰发展中国家和发达国家的问题。因此,车载导航应运而生.在一些发达国家,车载导航已成为大众生活的辅助品。但是在中国由于技术、资金以及成本等原因,我国的车载导航市场还是处于发展初期。车载导航系统是集中应用了自动定位技术、地理信息系统与数据库技术、计算机技术、无线通信技术的高科技综合系统。目前国内市场上的车载终端技术不够完备,市场化程度低,真正达到消费者要求的并不多见。随着对导航系统信息服务能力要求的进一步提高、终端硬件成本的不断下降以及操作系统的不断升级,选择一款易于开发、维护和升级,并且兼容性强的操作系统来支撑终端硬件系统的运行就显得异常重要。
    由嵌入式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处理器为核心的嵌入式开发板,先开发Bootlader引导程序,接着在此基础上移植Linux内核,然后制作Android文件系统;在移植好Androld操作系统后,进行车载导航功能的开发,任务集中在通过GPS实时获取路径,使用地图匹配算法校正定位模块的定位误差,采用最短路径导航规划算法进行导航,通过语音提示实现路径的引导,并且通过电子地图配合Android系统软件的API接口,同时它还具有不断升级的地图库,并能按照用户的需求进行各种信息查询,真正实现一个体积小、耗电少、成本低并且人机界面友好的嵌入式操作系统平台。系统框架图如图1所示。

[page]

    利用Android操作系统在ARM硬件平台上实现车载导航终端各功能模块的整合,配合相应的串口驱动、液晶屏驱动等完成指定的功能,如对接收到的数据进行处理,计算所在位置的经度、纬度、海拔、速度和时间等,并且采用地图匹配算法进行定位误差校正,自主导航路径规划采用Dijkstra算法,实现最短路径导航。GPS系统具有全天候、全球覆盖、三维定速、定时、高精度、快速、省时、高效率、应用广泛、多功能等特点,因此可广泛应用于陆地、海洋以及航空航天等。电子地图的使用,直观地将丰富的城市地图、全国的公路网图、加油站、便利商店、政府机关、餐馆、医院、停车场等信息同步地在LCD液晶显示屏上显示出来,方便中高端使用人员进行查询参考。

3 车载定位导航系统软件设计
    在车载导航系统软件设计过程中,利用了Android软件平台的5大功能模块,分别为Android应用程序层、应用框架层、普通函数库Java程序运行环境和Linux内核层。在应用程序层利用Android的各种组件API接口开发了针对车载导航的GPS、电子地图的Java应用程序,并在内核层提供了相应串口以及液晶屏等其他的底层驱动。
3.1 GPS定位模块软件设计
    Android操作系统支持GPS API-LBS,可以通过集成GPS芯片或外接GPS设备来接收卫星信号,通过GPS全球定位系统中至少3颗卫星和原子钟来获取当前设备的坐标数据。对于定位功能而言,稳定性好是重中之重,而Android实现了这一点。Android提供了许多定位相关的类以及相关的函数,使得开发人员可以灵活应用。使用位置信息管理类LocationManager进行GPS定位,使用Critcria类来实现自定义定位功能。当然在设计的导航系统中,我们希望所实现的GPS设备尽可能省电,定位尽可能精确,并且需要获取运动物体的速度。因此,设置的Criteria对象如下所示:
   
    接着将Criteria的参数传递给LocationManager对象。然后启动GPS定位功能,LocationManager对象就开始通过自身的函数来获取经纬度和其他一些数据。其获取数据的方法如下所示:
    ①对于经纬度,getLatitude()返回维度数据,getLongitude()返回经度数据;
    ②对于方向,hasBearing()判断是否有方向数据,而getBearing()则以度为单位返回其值;
    ③对于海拔高度,hasAltitude()判断是否有海拔数据,而getAltitude下则以m为单位返回海拔数据;
    ④对于速度,hasSpeed()判断是否有速度值,而getSpeed()则以m/s为单位返回速度值。
    ⑤最后,LocationManager对象返回的数据及时地更新在电子地图上,并且随着物体和时间位置的变化,开发者可以利用Location Mana ger,使用定位监听器Location Listener根据时间和物体移动距离进行数据更新。
3.2 地图匹配算法设计
    地图匹配以某个车辆位置点或某段车行轨迹曲线作为待匹配样本,以该点或该轨迹曲线附近的所有道路上的位置点或道路曲线作为模板,通过待匹配样本或模板间的匹配,选择相似度最高的匹配样本或模板作为匹配结果。最后根据匹配结果校正定位模块的定位误差。车载导航系统中将车辆定位显示在电子地图上时,应该根据车辆的行驶方向,将车辆定位显示于某一道路上。但是,由于各种误差(主要是定位技术的误差),电子地图上显示的车辆会偏离实际的道路,失去其导航的功能;而地图匹配这一软件技术能校正定位技术的误差,使车辆位置准确地显示在电子地图上。

[page]

    可用来判断车辆当前可能在哪条路段上行驶的信息主要有3个:当前车辆定位点距候选路段的投影距离、车辆当前行驶方向与候选路段方向的夹角以及候选路段与前一匹配路段的几何拓扑关系。一般来讲,投影距离和方向夹角越小的候选路段成为匹配路段的可能性越大,反之亦然。此外,与前一匹配路段相同或拓扑相连的候选路段成为匹配路段的可能性大,其余的可能性小。车辆在行驶的过程中,把GPS原始定位点向各待匹配路段作投影,可计算GPS原始定位点与待匹配路段之间的最短距离ri(i=1,…,n);另外车辆行驶方向与各待匹配路段之间的夹角θi(i=1,…,n)也可以得到,进而计算各待匹配路段的匹配值λi(i=1,…,n)。
    地图匹配算法在进行匹配时的步骤如下:
    ①通过特征提取把所有的待匹配路段分析、描述,提取出相应的匹配因子。
    ②计算定位点P到各个待匹配路段的最短距离。距离与夹角示意图如图2所示。其中r1、r2为要求的最短距离;a1、a2为所求夹角。根据匹配规则,依次计算定点P到各个待匹配路段的匹配值。


    ③把匹配值中最小的路段作为最终匹配路段,并把在此路段上距离原始定位点最近的点作为最终匹配点。
3.3 电子地图显示模块设计
    利用Android平台开发导航地图过程中,主要采用Androld提供的MapView和MapActivity两个类实现。其中MapView是一个展示地图的视图,它可以获取键盘事件来支持地图的移动和缩放功能,地图可以以不同的形式来显示,如街景模式、卫星模式等,通过setSatellite(boolean)、setTraffic(boolean)和setStreetView(boolean)方法,同时也支持多层Overlay的使用。可以在地图上画坐标、写地名、画图片等。MapView只能通过MapActivity来建立,因为MapView需要在后台使用文件系统和网络。所有这些线程需要在Activity的生命周期中被控制。
    如何利用电子地图功能将GPS模块定位得到的经纬度信息在地图上显示出来呢?地球上的任何一个地点都可以利用经纬度来表示。在Andro id的类库中,Point类代表了一个地点的经纬度,函数格式为:Pointment(intIatitudeE6,int longitudeE6)。E6是微度,即度数乘以1000 000。如果要指定地图地点,须传递一个Point类到地图中。然后调用setMapLocationCenter方法将地图移动到合适的位置,最后调用MapCont roller对象的animateTo方法将该坐标位置设置为地图的中心点。在实际应用中,可以使用zoomTo(int)缩放到需要的级别,同时利用mapVie  w.toggleSatellite()和mapView.toggle-Traffic()来获得卫星图和路况图。
3.4 最短导航路径规划算法设计
    求解最短路径问题的算法中,Dijkstra算法是国内外公认的比较成功的算法,该算法通用性强,而且编程实现简单,是目前理论上比较完善、应用最广泛的最短路径分析算法。Dijkstra算法按路径长度的递增次序,逐条产生最短路径。
    Dijkstra算法的基本思想是:设从顶点V0 出发,搜索从它到其他顶点的最短路径。把有向图中的顶点集V分为两个集合,已求出最短路径的顶点集合S,尚未确定最短路径的顶点集合V-S(定义为T);按最短路径长度递增的顺序逐个把集合T中的顶点加到集合S中,直到和出发点V0有路径相通的所有顶点都包含在集合S中。在整个过程中,V0到集合S中各顶点的最短路径长度都不大于V0到集合T中的任意顶点的最短路径长度。
    设带权有向图G={V,E},V={V0,V1,…,Vn-1},用带权的邻接矩阵Arcs表示图G;Arcs[i][j]表示弧上的权值,S表示已求得的从V0 出发的最短路径终点的集合;向量D的每个分量D[i]表示当前求得的从始点V0到每个终点Vi的最短路径的长度,算法描述如下:
    ①初始化集合S、向量D。S={V0},D[i]=Arcs[0][i](i=0,1,…,n-1)。
    ②选择Vj,使得D[j]=min{D[i]|Vi∈V-S},S=SU{Vi}。
    ③修改从V0出发到集合V-S上任意节点Vk的最短路径长度。若D[k]>D[j]+Arcs[j][k],则修改D[k]为D[k]=D[j]+Arcs[j][k]。
    ④重复②、③操作n-1次,即可求得从V0到其余各顶点Vi的最短路径长度。
    Dijkstra算法的时间复杂度是O(n2)。在实际应用中往往只需要搜素从某一源点到某一或某几个特定终点的最短路径,用Dijkstra算法求解,此问题与求源点到其余各顶点的最短路径的时间复杂度相同,也为O(n2)。

[page]

4 性能测试分析
    基于Android操作系统和ARM微处理器进行设计的车载导航系统,利用Android通用框架和与设备无关的应用程序开发平台,实现了车载导航的软件总体架构。


    图3为车辆定位显示的应用程序窗口。截图所示范围为厦门软件园附近,箭头为汽车所在位置。在实现的导航设备中,对导航设备的定位精度、电子地图显示速度以及在最短路径导航规划所需的时间进行性能测试。
    (1)定位精度测试
    现在国内民用饺好的产品的导航定位精度基本控制在5~10 m,不太好的设备可能达到几十米甚至几百米,本次设计的导航终端经测试,定位精度约为7 m。
    (2)电子地图显示时间测试
    当导航设备接收到GPS数据后,如果使用本地电子地图显示当前位置的时间为1 s之内;如果连网下载电子地图,显示当前位置的时间为3 s之内。
    (3)最短路径导航路径规划距离测试
    通过最短路径觇划后,测出从厦门到福州的最短路径是261 km,如果是普通的大路优先算法则是292 km;接着测试从厦门到北京的最短路径距离为2 106 km,如果是普通的大路优先算法,距离则是2312km。

结语
    利用车载导航系统的设计方案,并结合Androld系统特性设计的嵌入式系统可嵌入到手机、PDA、POS机、机顶盒、数字电视、家庭媒体播放器等其他终端设备,具有很好的可移植性和可扩展性。在移动导航终端的应用中,以GPS导航为代表的综合信息管理平台将是未来移动终端通信及导航产品的发展趋势,而Android系统在导航终端的应用将会逐步成熟和发展,产品价格也将最终接近大众消费水平,届时导航产品将成为人们休闲、娱乐、旅游探险的必备工具。

关键字:Android  车载导航系统  Dijkstra算法 引用地址:基于Android的车载导航系统的研究与设计

上一篇:在汽车中驱动LED照明的开关
下一篇:基于XC164的六通道ABS开发板设计

推荐阅读最新更新时间:2024-05-02 22:03

安兔兔6月Android手机性能榜单:一加6退居第三
最近一段时间,各大手机厂商纷纷推出了自家的旗舰机型,尤其是小米8,vivo NEX和OPPO Find X等几款机型,让人眼前一亮。   这些机型硬件配置抢眼,性能强劲,那么跑分到底谁最强呢?今天,安兔兔公布了新一期的6月安兔兔Android手机性能榜单,为大家揭晓答案。   注:     -本文图表中的安兔兔跑分(v7版)均为平均跑分成绩,并非最高分;   -数据收集时间为,2018年6月1日至6月30日;   -单一机型数据统计量 1000条。   在新一期安兔兔Android手机性能榜单中,黑鲨游戏手机,平均跑分达到了287759,再一次高居榜首;一加手机6,平均跑分为282275,退居第三。   值得一提的是,vivo
[手机便携]
三星官方:明年年初开始升级升安卓8.0
    早在当初谷歌发布Android 8.0 Oreo时,三星、索尼、华为、一加等手机厂商纷纷表示将迅速更新自家设备系统。 定了!三星官方:明年年初开始升级升安卓8.0   目前,华为已经发布了基于安卓8.0系统的Mate 10手机,一加也开始了测试8.0系统更新;索尼也宣布旗下Xperia XZ Premium将于12月收到Android 8.0固件更新。而现在,三星也终于表态,公布了自家设备升级安卓8.0时间。   今日,三星(土耳其)官方披露,三星已经开始制作安卓8.0升级,将在2018年年初推出。除此之外,官方没有透露关于具体时间表、适配机型的更多消息。 定了!三星官方:明年年初开始升级升安卓8.0   事实上,早在9月
[手机便携]
微软求突围,考虑让Windows跑Android App
        微软在行动市场上发展碰壁,即使推出自己的平板品牌,甚至跨业并购诺基亚手机硬体部门,市占率仍无法有效提升。为替Windows平台找出路,传微软考虑让Windows手机与平板电脑支援Android应用程式。 当前的行动作业系统市场基本上由谷歌的Android与苹果iOS所把持,IDC最新数据显示,两大阵营去年第四季市占率合计达95.7%,而Windows则只有3%,想翻身的机率微乎其微。 科技部落格The Verge报导指出,微软正认真思考是否让Windows跑Android应用程式,目前内部高层正反意见都有。 有鉴于市面上支援Windows的行动App寥寥可数,开发商又兴趣缺缺,因此支持的一方视Android应用程式
[手机便携]
三星S8安卓8.0正式版更新翻车:升级后狂重启
春节放假前夕,三星面向部分Galaxy S8/S8+用户推送了Android Oreo 8.0正式版系统更新。   然而在2月14日,SamMobile报道称,三星已经紧急暂停了推送,版本号G950/G955-FXXU1CRAP。   外媒称,前期主要是欧洲用户率先接受了升级,这一点从版本号也可以看出来。   关于叫停的原因,媒体发回了更进一步的报道,原来是迭代后的用户发现,设备出现频繁重启的问题,几率颇高。   为此,三星不得不重新检查,并告知用户耐心等待下一版。   作为安卓第一大厂,三星手机吃上奥利奥的节奏已经算非常慢和落后了,结果第一个正式版还出现了翻车事故,令人遗憾。   另外,国行三星S8的8.0 ROM也处于最后的
[手机便携]
风河设立新研发中心 植Android技术实力
风河(Wind River)为进一步厚植强化其全球研发实力,宣布在瑞典首都斯德哥尔摩建立专注于移动应用技术研发的全新工程团队。这个新建的工程团队彰显出Wind River将持续加强研发投资的决心,包括致力于加强对Android平台的专业技术与知识,以便广泛支持诸如平板电脑、多媒体手机(Media Phone)等各类Android操作系统为基础的设备。在过去的几年中,Wind River在移动应用解决方案上获得的设计项目(Design-Wins)件数快速增加,成长态势十分显著,其移动应用相关业务也同步呈现出三位数的高成长率,缴出了漂亮的成绩单。 Wind River最近在瑞典建立的这支研发工程团队,将深入研究特定的移动应用
[手机便携]
又投安卓之父创办手机公司,如今富士康已控制多个手机品牌
今年1月,集微网曾报道,“Android系统之父”Rubin 在离职谷歌后,于2015年于加州注册了名字为“Essential”的公司,并且正准备打造高端无边框屏幕、陶瓷后壳并深度集成AI的智能手机的公司,借此挑战苹果的iPhone。 今天, Rubin潜心研发的新款手机Essential Phone终于亮相。据悉,这款Essential Phone机身由钛和陶瓷材质打造,配备5.7英寸2560x1312 QHD分辨率屏幕,正面为一块几乎无边框的圆角全面屏。屏幕几乎覆盖整个顶端,屏占比面积S8还大,可能称得上是市面上最接近全屏的智能手机。该机售价699美元(约合人民币4789元)。目前只对美国消费者开放购买。 不过,本文说的
[手机便携]
北斗导航系统正式进入车载使用阶段
    8月26日,国内第一次由自主导航系统——北斗导航面向车载导航的应用体验周活动在北京拉开帷幕。这一在中国卫星导航系统管理办公室指导下、由中国北斗导航车载应用产业联盟及科维电子科技有限公司联合主办的活动,得到了国内北斗卫星系统多位专家和经销商的支持。     记者了解到,自2012年底北斗系统提供区域正式服务以来,我国相关企业在北斗车载联盟的平台上,加快了北斗车载导航产品的研发步伐,完全掌握了自主知识产权核心技术。经过百、千、万几个级别用户使用和反馈之后的优化,本次体验周活动中推出的北斗车载导航产品性能优良,同时兼容了目前市场上普遍使用的GPS导航系统。用户如果设置在北斗和GPS双模式下,同时可享用16颗以上的卫星,从而能
[汽车电子]
Android 13曝光:新旗舰曝光 搭载定制Soc
据Android Police报道,Android 13开发者预览版中有谷歌下一代旗舰Pixel 7系列的踪迹。 据报道,谷歌Pixel 7系列和上一代Pixel 6系列一样,有两款机型,分别是Pixel 7、Pixel 7 Pro,代号分别是Cheeta和Panther。 不仅如此,Android 13开发者预览版中发现了一款全新处理器Cloudripper GS201,它是谷歌定制的第二代Tensor芯片,由Pixel 7系列首发搭载。 在谷歌Pixel 6系列上,谷歌为其配备了第一代Tensor芯片,它采用三星5nm工艺,由Cortex X1超大核、CortexA76大核和Cortex A55大核组成,GPU为Mali
[手机便携]
<font color='red'>Android</font> 13曝光:新旗舰曝光 搭载定制Soc
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved