这是学习Apollo基础课程的第一课,课程从自动驾驶核心技术模块出发,讲解高精地图、定位、感知、预测、规划、控制等模块知识,帮助零基础开发人员了解无人驾驶的基本原理与整体框架,初步掌握并运用 Apollo 自动驾驶开放平台所使用的自动驾驶算法。
Apollo基础课程之高精地图
一、高精地图与传统地图
当我们开车时,打开导航地图通常会给我们推荐几条路线,甚至会显示道路是否拥堵以及每条路线将花费多长时间、交通管制,例如交通信号灯或限速标志等,我们会根据地图提供的信息来决定是在行驶中直行、左转还是右转以及对周围驾驶环境的评估。
而无人驾驶车缺乏人类驾驶员固有的视觉和逻辑能力。如我们可以利用所看到的东西和GPS来确定自己的位置,还可以轻松准确地识别障碍物、其他车辆、行人、交通信号灯等,但要想让无人车变得和人类一样聪明,可是一项非常艰巨的任务。
Apollo基础课程之定位
学习百度Apollo无人驾驶课程之定位教程。
本周学习定位模块的知识,了解车辆如何以个位数厘米级别的精度进行自定位。
定位是让无人车自己知道自身确切的位置,定位对无人驾驶尤其重要,对于无人车来讲不仅仅要找出自身的大概位置,而是要以10厘米级别,将车感信息与高精地图信息相比对来精确地位置寻找。
ArrayMap
发表于
更新于
本文字数: 阅读时长 ≈
本文字数: 阅读时长 ≈
ArrayMap源码的分析,
ArrayMap实现了Map接口,所以它也是一个数组加链表(或红黑树),结构也是哈希表。它是线程不安全的,它允许key为null,value为null。相比于HashMap,ArrayMap空间效率更高。
ArrayMap内部维护了两个数组,
- 1,一个int[]数组,用户保存每个item的hashCode值
- 2,一个Object[]数组,用于保存key–value对。容量上是一个数组的两倍它可以避免在将数据插入Map中时额外的空间消耗(相比于HashMap)。它的扩容只需要进行数组拷贝,不需要重建哈希表(相比于HashMap的扩容)。
和HashMap相比,ArrayMap不仅仅有扩容功能,在删除时,如果集合剩余元素少于一定阈值时,还有收缩功能,这样可以减少空间的浪费。毕竟是Android团队专门为Android新增的api,肯定考虑了移动设备内存很珍贵的因素。