高德地图红绿灯读秒是怎么实现的?(一)

news2024/9/22 21:22:14

关于这个读秒实现功能众说风云,目前有两种说法,一种说是靠大数据分析,一种说是靠交管部门数据。

我们先看一下官方的回应:可以自行去抖音看官方号的解释。

在这里插入图片描述


以下为原答:
有人说是接入了地方交管数据,其实政策难度很大且没必要。合理推测一下:

其实一个路口红绿灯的变化规则是比较固定的,当时国内除了极少数的智能红绿灯(根据车流实时变化红绿灯状态),99%的红绿灯都是固定相位红绿灯。即提前设置好一个相位表,然后周而复始的进行轮换:

在这里插入图片描述
既然相位表是提前设定好的,说明红绿灯的变化规律是周期的,那么作为地图软件,唯一要做的就是想办法估计出这个周期T。

高德等软件的一个能力是读取正在导航的手机的加速度计信息,因此当在此路口很多本来停止的车逐渐起步时,高德事实上可以推断出此处的红绿灯由红转绿了。更重要的是,高德还可以获得正在导航手机的routing信息,因此它甚至很容易的,知道是哪几个车道由红红转绿。于是很容易地可以推算出这个路口的周期T于当前状态S。

之后的任务就更简单了,一方面将推断出信息通过网络分发给用户,一方面根据用户的行为实时微调当前状态于周期T,从而实现长期循环。

但可以想到的一个问题是,如果一个十字路口很长时间没有车通过(例如一夜没过车),那么误差累积下,高德的读秒推算系统就需要在第二天早上逐渐有车的时候进行重新初始化了,有兴趣的同学可以尝试下凌晨四五点开车通过一些十字路口,看看高德的读秒是不是准确。

再更新最后一次:
服了一些二极管们的思考能力了。针对一些问题简单回复。

  1. 为什么有些路口有显示有些路口没有?

    答:学过状态估计的都知道,我们在估计出状态后还会得到一个方差,描述了算法对估计的不确定度。当算法由干数据不足、红绿灯周期时变、当前路线(例如左转)数据匹配不确定等原因时,会出现算法估计方差过大的问题,这时候就不在前端显示了。

  2. 为什么有些路口极其精准,有些路口不准,有些路口没车也很准?

    答:准不准固然与经过的车辆开导航的比例有关,同时也与红绿灯策略的变化频率有关。

    例如一个郊区的红绿灯,交警部门不会给其很复杂的变化策略,那么一日估计出周期,一个月周期都不变,那么算法会逐渐增强对自己估计的肯定,因此会很准确。

    又例如一个繁忙的十字路口,因为刚刚结束早高峰,红绿灯周期发生了切换。那么算法需要根据观测逐步调整估计。但因为历史数据累积的足够多,算法依然很确定自己的估计,所以会导致前端显示出误差较大的结果。

  3. 为什么有些地方交警官方宣传与高德合作?

    答:早期或部分地级市可能存在接入。但是观察新闻可以发现,新闻几乎都是地级市级别的交警部门在宣传,这其实说明地级市之间的数据大概率难以打通,各位想一想中国有多少地级市?高德的产品经理一个一个去谈合作? 这些地级市的交通系统api又有多大差别?后台的程序员们一个城市一个城市写if else? 但凡和政府打过交道,或者开发过大型系统就知道这不靠谱。

  4. 算法估计难以给出这么精确的值?手机级别的传感器难以给出精确启停时间?

    这个估计的难度真的不高,说难估计的大概率《概率论》没怎么学。说大数据不靠谱,过于复杂的大概率没接触过大数据。目前自动驾驶领域,车辆摄像头被遮挡的情况下,仅凭自车感知,都可以比较精确的根据周车状态,估计出红绿灯信息,更别说高德地图这种多源数据了。

    至于说大家一起摇手机干扰估计,其实是可以做到的。前几年就一直有闲的没事的人,拿好多个手机开导航在路上慢慢走,给导航软件,虚假拥堵。

    至一说高德算力不够更扯淡,这算法义不过网络,cpu算算快的一批,搞不好直接用里户手机做一些初步计算,直接上传一个中间结果,云端再做汇总,根本但不了多少算力。

       说了这么多,本质上还是大家即使是程序员,依然对政府有过多幻想,对科技有低估和抵触。

       其实高德,百度估计这个,志不在小。如果是接入交管系统,那么只是把app当一个显示器。但如果是自己估算,那么未来是不是可以将自己估算的结果直接上传到交警系统,然后告诉红绿灯系统,如果这时候变灯,能节省大家多长时间,最终反而去控制红绿灯? 这才是这些智慧城市的低成本,高智慧,高收益形态。虽然现在误差还有,但相信随着算法优化,这一天不会太远。

最后

       最近忙里偷闲,自己开了一个公众号,里面定时给大家分享技术博文、前方高能资讯内容!欢迎各位老板点赞关注,你们就是我的动力源泉!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年度 FinClip 扩展 SDK 推荐!

2022年,FinClip 团队进行了24个产品迭代,为了丰富FinClip 的平台能力,除了核心SDK之外,我们还为开发者们提供了扩展SDK,扩展SDK是一个依赖核心SDK的库,里面提供了核心SDK中所没有的各种小程序API。 官方希…

arduino和物联网云端平台系列---物模型之事件

事件,先下个简单的定义就是发生了什么事件 系列文章都是已经完成了基本的库安装和使用为前提 物模型之事件 基本的添加步骤不描述了,设置一个测试用例 事件我已经设定好了,输出参数代表的是在云端得到的输出,需要我们在设备进行…

【程序环境和预处理】C语言

前言: 到此节便是我们C语言学习的终章了,对C语言的学习便告一段落了,到学完这一章节我们便要进入下一个主题的学习了。 目录1. 程序的翻译环境和执行环境2. 详解编译链接2.1 翻译环境2.2 编译本身也分为几个阶段2.3 运行环境3. 预处理详解3.1…

ESP32设备驱动-L3GD20三轴角速率传感器驱动

L3GD20三轴角速率传感器驱动 1、L3GD20介绍 L3GD20 是一款低功耗三轴角速率传感器。 它包括一个传感元件和一个 I2C 接口,能够通过数字接口 (I2C/SPI) 向外部世界提供测量的角速率。传感元件采用意法半导体开发的专用微加工工艺制造,用于在硅晶片上生产惯性传感器和执行器。…

高通Qualcomm处理器的手机或设备进EDL 9008模式的办法

适用于变砖的设备 由于我们有很多基于 Qualcomm 的设备,其中一些设备可能会古怪地猜测如何进入 EDL 模式,或者如何正确进入。 例如,对于 Alcatel,您必须先按住两个音量键,然后再按住其中一个,对于 CAT B35…

DocPrompt代码实现细节

数据预处理阶段 PaddleOCR PP-Structure:这个库其实是用于版面分析的一个开源库,参见:github: Layout-Parser/layout-parserhttps://github.com/Layout-Parser/layout-parser 代码推理阶段 Paddle-Inferencehttps://paddle-inference.readt…

[JavaEE]定时器

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1.定时器的概念 2.标准库中的定时器 3.实现定时…

团灭LeetCode跳跃游戏(相关话题:贪心,BFS)

目录 LeetCode55跳跃游戏 LeetCode45. 跳跃游戏 II LeetCode1306. 跳跃游戏 III LeetCode1345. 跳跃游戏 IV LeetCode55跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否…

win32com操作word 第三集:Range精讲(一)

本课程《win32com操作word API精讲&项目实战》,本公众号以文字分享为主,B站与视频号则发布视频分享,ID均为:一灯编程 本集开始,将会深入Document接口。打开或创建一个文档都会产生一个Document对象,它代…

十大排序(Java版本)

排序分为比较排序和非比较排序两种,常见的排序为比较排序,共有七类:直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序以及归并排序。另有三种非基于比较类的排序:计数排序、基数排序和桶排序。基于比较的排序直接插…

TreeMap和TreeSet的介绍

目录 1、认识 TreeMap 和 TreeSet 2、TreeMap 的主要成员变量 3、TreeMap 的主要构造方法 4、TreeMap 和 TreeSet 的元素必须可比较 5、TreeMap 和 TreeSet 关于 key 有序 6、TreeMap 和 TreeSet 的关系 7、总结 1、认识 TreeMap 和 TreeSet TreeMap 和 TreeSet 是Ja…

探索SpringMVC-组件之ViewResolver

前言 ViewResolver也就是视图解析器,他将是我们《探索SpringMVC》系列要介绍的最后一个常用的组件。其他组件:MultipartResolver、LocaleResolver、ThemeResolver、RequestToViewNameTranslator、FlashMapManager,相对简单,大家可…

一个想活得简单的程序猿的2022年终总结!

前言 今年的总结相比以往来说,可写的太少了,但看到我17年开始写的年终总结,已定下每年写下的承诺,因此即便可写的不多,但是还是写下吧,毕竟又过了一年,总有东西会留下! 今年事件 疫…

【Linux杂篇】Windows远程登陆Linux、Linux静态IP配置

前言 如果要长期连接Linux环境,就需要给Linux配置一个静态IP,否则可能每次连接的IP都不一样而且还很麻烦。 除此之外,我们使用ssh远程登录的时候,每次都要输入密码,也很麻烦,所以建议配置ssh密钥&#xff…

执行 java -jar xxx.jar 的时候底层到底做了什么?

大家都知道我们常用的 SpringBoot 项目最终在线上运行的时候都是通过启动 java -jar xxx.jar 命令来运行的。那你有没有想过一个问题,那就是当我们执行 java -jar 命令后,到底底层做了什么就启动了我们的 SpringBoot 应用呢?或者说一个 Sprin…

Redis删除了大量数据后,为什么内存占用还是很高?

前言 上周刚来了个应届小师弟,组长说让我带着,周二问了我这样一个问题:师兄啊,我用top命令看了下服务器的内存占用情况,发现Redis内存占用严重,于是我就删除了大部分不用的keys,为什么内存占用…

文件操作【C语言】

目录 一、为什么使用文件 二、什么是文件 1、程序文件 2、数据文件 3、文件名 三、文件的打开和关闭 1、文件指针 2、文件的打开和关闭 四、文件的顺序读写 五、文件的随机读写 1、fseek 2、ftell 3、rewind 七、文件读取结束的判定 1、被错误使用的feof 1、文…

unocss原子化

文章目录1. 安装2. 配置3. Unocss预设3.1 presetUno3.2 presetAttributify3.3 presetIcons了解什么是UnoCSS请看:重新构想原子化CSS - 知乎 github地址:UnoCSS UnoCSS搜索引擎 1. 安装 npm i -D unocss2. 配置 vite.config.ts import { defineConf…

分享微信抽奖小程序制作步骤_微信抽奖小程序怎么开发

各位商家在节日期间做活动的时候,都希望用更少的费用去或者更好的宣传和推广的效果。比较常见的就是抽奖活动小程序。无须玩家下载,通过微信扫码或者指定入口就可以参与。方便,效果又好。那么,性价比高的抽奖活动小程序怎么做? 来…

LabVIEW使用VI脚本重新排列对象

LabVIEW使用VI脚本重新排列对象VI脚本可用来重新排列前面板和程序框图的对象。该教程以程序框图对象重新排列为例。按照下列步骤,使用VI脚本重新排列程序框图对象。创建VI前,需先了解VI脚本的基本内容。必须启用VI脚本,才能显示VI脚本选板&am…