Apollo 3.0代码浅析(一)
0.写在前面
因为工作中的项目使用到ros,因此本次对于apollo的分析是基于apollo 3.0
代码阅读工具为understand
1.目录结构
1.1 根目录
docker:容器相关
docs:帮助文档,写得很详细
modules:涉及到的各个模块,包括感知模块,规划模块,控制模块等
1.2 mudules目录
- calibration: 标定模块,根据不同车型的传感器方案提供包含车身、摄像头、激光雷达、GNSS、感知、雷达、初始化等参数,该文件夹只有标定好的参数,并没有标定的工具和方法。
- canbus: can总线模块,该模块接受并执行控制模块发出的指令,并收集底盘的状态作为反馈。
- common: 公共源码模块。包括如日志,工厂模式的实现,日志系统,监控模块,数学算法等。
- control: 控制模块。基于决策规划的输出路径及车身的状态使用不同的控制算法来输出控制命令,如转向刹车,控制等。
- data: 数据模块。收集、存储、处理收集到的各种数据的。
- dreamview: 可视化模块,查看规划的轨迹及实时的转向刹车油门信息
- driver: 驱动模块,包含摄像头、CAN总线、GNSS、激光雷达、麦克风
- e2e: end to end,端到端的强化学习
- elo: 利用高精度地图的自定位模块
- guardian: 系统检测保护模块
- localization: 定位模块,输入GPS和IMU信息输出自车定位信息
- map: 地图模块,输出结构化地图信息,如车道线,十字路口等。
- monitor: 监视器模块,监控硬件状态,同时把状态发给交互界面。
- perception: 感知模块,输入激光点云,高精地图,变换坐标,输出3D障碍物包括速度大小和方向。
- planning: 轨迹规划模块
- prediction: 预测模块,输出感知的障碍物信息及自定位信息输出障碍物未来的轨迹。
- routing: 路由模块,输入包括地图信息各起点终点地址,输出一个全局的导航信息。
- third_party_perception: 第三方感知模块
- tools: 通用监控与可视化模块。
3.Apollo框架
在apollo 3.0里,Runtime Framework应该就是ros了,rtos实时操作系统,ros通过can总线与之通信,从而控制各个硬件模块
4.软件结构
整体的逻辑结构和人开车的过程是一致的,(感知模块)眼睛去观察周围的情况,前面后面有没有人、车,距离多远,自己在哪条车道,前面的标识牌是什么,这条道限速多少。(预测模块)前面的车应该不会刹车吧,两边的那个人有没有可能突然串出来,能不能换车道。(规划模块)周围情况都知道了,那该转就转,该换道换道,该加速加速,该刹车刹车。(控制模块)脑子想好一切了,手打方向盘,踩离合挂挡,油门踩到底,逮虾户
Apollo 3.0代码浅析(一)相关推荐
- Apollo 5.0,GitHub热榜第四
雷刚 发自 凹非寺 量子位 报道 | 公众号 QbitAI Apollo 5.0有多火? 看GitHub最新热榜就行了,在全球最大的开发者社区,目前迭代新版本的Apollo,已经冲至第4. 目前总获 ...
- 百度apollo 7.0 感知代码分析
主要参考: 自动驾驶 Apollo 源码分析系列,感知篇(七):Lidar 障碍物检测基本流程 目录架构 |-- BUILD // 基础类 |-- base // 基础类 |-- camera // ...
- 百度自动驾驶新突破:获首批T4牌照,升级Apollo 5.0,将进行复杂城市场景路测...
作者 | KYLE WIGGERS等 编译 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 最近,百度自动驾驶项目终于有了进展.先是上周悄然发布了 Apollo 的最新版本 Apoll ...
- Apollo 2.0发布前 试乘百度L3、L4级自动驾驶汽车
循着"每周更新,两个月左右进行一次新版本和总体能力的提升"的节奏,去年 9 月,Apollo 1.5 对外发布,整个系统新增了 65000 行代码,重点开放了 5 种能力:障碍物感 ...
- 用RtlAdjustPrivilege来调整进程权限(VB6.0代码)
论坛上有朋友说起RtlAdjustPrivilege这个函数,就查了一下,写了个声明与调用示例出来,方便下次调用. 程序代码 Option Explicit Private Declare Funct ...
- Apollo 6.0 Mid2Mid Planner论文阅读
[Apollo 论文]Exploring Imitation Learning for Autonomous Driving with Feedback Synthesizer and Differe ...
- Apollo 2.0 传感器标定方法 使用指南(官方)
点击我:官方地址 Apollo 2.0 传感器标定方法使用指南 欢迎使用Apollo传感器标定服务.本文档提供在Apollo 2.0中新增的3项传感器标定程序的使用流程说明,分别为:相机到相机的标定, ...
- 美狐美颜SDK动态贴纸代码浅析
如今,在美颜的刚需下,各大平台开始接入美颜SDK,接入美颜SDK是因为该平台希望能在竞争中脱颖而出并吸引更多用户,而现如今基本的美容和美容功能已无法满足用户的需求,还需要各种趣味功能,例如动态贴纸的帮 ...
- Apollo6.0代码Lattice算法详解——Part5: 生成横纵向轨迹
Apollo6.0代码Lattice算法详解--Part5: 生成横纵向轨迹 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc中代码部分 ...
最新文章
- python如何创建函数对列表里的元素进行分类_zip()函数如何在python中遍历多个列表?...
- 移动端丨-webkit-overflow-scrolling:touch属性导致页面卡住
- jQuery addClass,removeClass,class属性增删
- 大二暑假周进度报告(三)
- 有哪些py写的黑科技_2020年汽车界又新增了哪些值得一提的黑科技产品?
- [MATLAB调试笔记]Update the electric field in one step
- poj3070 Fibonacci 矩阵快速幂
- 数字调制系统工作原理_空间光调制器工作原理是什么 空间光调制器工作原理...
- Android设计模式之——观察者模式
- 最近项目中遇到的问题以及解决办法
- 【java基础知识】Spring Boot启动报错com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectExcepti
- 大二第二学期周学习进度总结(十三)
- 飞机上终于能开着手机连 Wi-Fi 了,它背后的技术原理是什么?
- 解决Vmware虚拟机中没有网络连接Ubuntu无法上网
- 深入理解WCF系统体系(之二:WCF客户端如何构建?(上))
- Codeforces Round #FF(255) DIV2
- 维盟无线ap服务器地址,让WiFi飞起来!维盟室外无线AP桥接与中继配置方案
- CF1428 G1,G2 . Lucky Numbers题解
- linux下at24c02驱动程序,Linux下iic(i2c)读写AT24C02
- 西瓜视频地址分析下载(2020-10-29)