迷路时,导航软件是怎么给我们指条明路的?

当代生活,没有手机导航提供的路线规划、定位引导等服务,人们已经很难顺利地认清方向、走对路,为了在导航时给大家指条明路,导航软件都做了什么?

一款导航软件是否好用很大程度上取决于这三点:起点和终点间的路线规划、行驶过程中的准确定位和及时的语音图像引导。

规划两点间的最佳路线是第一步,假设你在下午5点20分要从北京西站去百度大厦,百度地图会推荐三条路线,其中路程最长的路线预测的驾驶时间却比另外两条路线要短得多,这些路线和时间是怎么算出来的?

首先要知道如何从茫茫路 中找到两点间的最短路线,比如在这个简化模型中求C点到M点的最短路线。

1959年,荷兰计算机科学家迪杰斯特拉提出了一个经典算法,简单来说,就是选择去往下一个点时,总是尽可能选择路程最短的那个点,比如第一步从C出发,就选路程最短的A点,接着再通过与之前记录的路线对比长短、试错,一步步扩散到M点,再从记录下的路线中选取最短的那条。

但这样找实在太慢了,要想提高速度就必须有方向的找,比如A*算法,也是从C点出发,除了要得知到相邻点的路程,还要知道这些点到终点的直线距离,两者之和最小的点就是下一步要去的地方,即H点。

接着按同样规则到I点、D点,这时会发现C→H→I→D,这个走法还不如最开始的C →D,于是就要倒回C点,排除C →H这个走法。选择路程距离第二短的C→ G,这样的话,A*就能很快找到后面的J、K、M,找到最短路程。

在这个演示中,可以直观的看到A*相比迪杰斯特拉试错的次数更少,大大提升了搜索的效率,但这只是简单的基础算法,对于更大更复杂的路 ,导航软件还会使用CH、CRP等优化算法,把路 划分成不同区域并且增加缓存,即将两地最短距离直接缓存在地图上,而不必频繁地计算中间的各种路线。然而,光考虑路程最短还不够,导航软件还必须考虑拥堵情况。

基于无数用户的行车数据,导航软件可以掌握各个线路的平均行车速度,结合路段的长度算出通行的平均时间,那如果测量的平均行车速度不准确,应该怎么办呢?因此导航软件还必须拥有排除异常情况的能力,可以更准确地反应路况。在下图中可以把各个路段的距离因素视为一种代价,把代价换成时间因素,再利用算法就能得出驾驶时间最短的路线。

这样就能找到最优路线了吗?其实不然,对于长距离导航,地图软件还要学会分析未来各个路段的路况变化,比如车道数量、限速要求、道路事故、收费站、高速路等因素,这些因素都可以用于计算代价,而导航软件还让这种代价得以动态调整,因为不同人对代价的感受并不一样,所以每个人可以根据自己的需求选择合适的线路。

然而路线规划只是地图软件的基本操作,真正的考验是在行驶过程中的准确定位,当用户行驶在卫星信 弱的路况时,导航软件还要有智能定位算法辅助帮助导航。简单来说,手机里的加速度计和陀螺仪可以采集自身X、Y、Z轴的移动加速度和绕X、Y、Z轴旋转的角速度,X轴移动加速度大于0意味着车辆加速,求加速度曲线下的面积就知道速度曲线,就速度曲线下的面积就知道路程曲线。

同理,计算Z轴转动角速度就能得到车辆转向角度,再结合路程曲线就可还原车辆实时行驶轨迹。

知道路线和车辆行驶轨迹后,图像语音的及时引导也尤为重要,它可以在复杂路况提前为用户提供指引,避免用户走错路。

有了路线规划、定位引导和图像语音引导三重服务,导航软件就可以为迷路的我们指条明路,那么你对你的导航软件满意吗?

#路线规划##定位引导##导航软件##软件##科技曼曼谈#

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月5日
下一篇 2021年1月5日

相关推荐