- UID
- 864567
|
利用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 地图匹配算法设计
地图匹配以某个车辆位置点或某段车行轨迹曲线作为待匹配样本,以该点或该轨迹曲线附近的所有道路上的位置点或道路曲线作为模板,通过待匹配样本或模板间的匹配,选择相似度最高的匹配样本或模板作为匹配结果。最后根据匹配结果校正定位模块的定位误差。车载导航系统中将车辆定位显示在电子地图上时,应该根据车辆的行驶方向,将车辆定位显示于某一道路上。但是,由于各种误差(主要是定位技术的误差),电子地图上显示的车辆会偏离实际的道路,失去其导航的功能;而地图匹配这一软件技术能校正定位技术的误差,使车辆位置准确地显示在电子地图上。 |
|