开发者说丨Apollo学习进阶指南
今天分享给大家的,是Apollo社区开发者——王方浩根据自己学习Apollo的经验而收集整理的学习目录。目录由初阶到高阶逐步递进,为其他学习Apollo的开发者提供了一个很好的参考。
这位开发者之所以创建这个项目,是因为看到不少网络上的资料和个人博客之后,感叹一些大神仅仅依靠自学就能够做到如此优秀,因此敦促自己完成了这份优秀的笔记。
笔记的完成也要感谢@百度Apollo项目 @3Blue1Brown @台大李宏毅 @iMorpheusAI @阿Paul哥。
以下,ENJOY
由于国内目前访问github太慢,网上有通过设置host来加快访问github的攻略,为了方便大家下载代码,现在把代码同步托管到码云上。主线代码可能随时都在更新,因此我会定期同步代码,如果需要稳定版本最好下载tag版本"v5.5.0"。
码云地址: apollo:
https://gitee.com/daohu527/apollo
Apollo简介:
https://github.com/daohu527/Dig-into-Apollo/blob/master/introduction
简介
https://github.com/daohu527/Dig-into-Apollo/blob/master/introduction#introduction
目录结构
https://github.com/daohu527/Dig-into-Apollo/blob/master/introduction#content
编译
https://github.com/daohu527/Dig-into-Apollo/blob/master/introduction#compile
Map
https://github.com/daohu527/Dig-into-Apollo/blob/master/map
采集
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#collect
加工
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#process
转换
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#transform
地图信息头
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#header
人行横道
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#crosswalk
路口
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#junction
车道
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#lane
停止信号
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#stop_sign
交通信号标志
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#signal
让行
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#yield
重叠区域
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#overlap
禁止停车
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#cleararea
道路信息
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#road
停车区域
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#parking
行人道路
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#sidewalk
Map模块简介
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#introduction
Map目录结构
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#content
地图数据结构
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#map_data_struct
OpenDriver地图解析
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#parse
高精度地图API
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#api
如何制作高精度地图
https://github.com/daohu527/Dig-into-Apollo/blob/master/map#how
Reference
https://github.com/daohu527/Dig-into-Apollo#reference
Localization
https://github.com/daohu527/Dig-into-Apollo/blob/master/localization
Localization模块简介
https://github.com/daohu527/Dig-into-Apollo/blob/master/localization#introduction
代码目录
https://github.com/daohu527/Dig-into-Apollo/blob/master/localization#content
RTK定位流程
https://github.com/daohu527/Dig-into-Apollo/blob/master/localization#rtk
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/localizationreference
Perception
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception
Caffe2环境准备
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#env
安装显卡驱动
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#drivers
安装CUDA
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#cuda
安装CUDNN
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#cudnn
安装Caffe2
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#caffe2
参考
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#reference
选择CUDA版本
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#cuda_version
安装CUDA
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#cuda_install
设置环境变量
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#cuda_env
检验安装
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2#cuda_check
什么是CNN?
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#what_is_cnn
CNN的原理
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#cnn_principle
如何构建CNN
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#how_to
基本概念
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#base_concept
引用
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#reference
卷积层(Convolutional Layer)
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#convolutional
池化层(Max Pooling Layer)
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#max_pool
全连接层(Fully Connected Layer)
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn#fully_connect
CNN
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/cnn
Caffe2
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception/caffe2
Perception
https://github.com/daohu527/Dig-into-Apollo/blob/master/perception
Prediction
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction
初始化(Init)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#message_init
消息处理
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#onperception
初始化(Init())
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#preciction_init
回调执行(Proc)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#preciction_proc
ContainerSubmoduleProcess
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#preciction_submodule
PredictionEndToEndProc
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#preciction_endtoend
介绍
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#introduction
目录结构
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#directory
预测模块(PredictionComponent类)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#preciction_component
消息处理(MessageProcess)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#message_process
容器(Container)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#container
场景(Scenario)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#scenario
评估者(Evaluator)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#evaluator
预测器(Predictor)
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#predictor
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/prediction#reference
Routing
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing
创建Routing地图
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#create_routing_map
Routing主流程
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#routing_main
Demo
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#demo
地图
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#map
最短距离
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#shortest_path
Routing模块简介
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#introduction
基础知识
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#base
Routing模块分析
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#routing
调试工具
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#tools
问题
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#question
OSM数据查找
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#osm_find
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/routing#reference
Planning
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning
DP & QP
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#dp_qp
场景转换
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#scenario_update
场景运行
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#scenario_process
Planner注册场景
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planner_register
运行场景
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planner_plan
初始化
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#onLanePlanning_init
事件触发
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#onLanePlanning_trigger
模块注册
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planning_register
模块初始化
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planning_init
模块运行
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planning_proc
Planning输入输出
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planning_io
Planning整个流程
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planning_flow
Planning模块简介
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#introduction
Planning模块入口
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planning_entry
OnLanePlanning
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#onLanePlanning
Planner
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#planner
Scenario
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#scenario
Task
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#task
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/planning#reference
Control
https://github.com/daohu527/Dig-into-Apollo/blob/master/control
校准表
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#calibration_table
PID参数调节
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#pid
控制器注册
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#register
Pad消息
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#pad
Estop_标志位
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#estop
Control模块简介
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#introduction
Control模块主流程
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#main
控制器
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#controller
LonController控制器
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#lon_controller
LatController控制器
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#lat_controller
MPCController控制器
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#mpc_controller
StanleyLatController控制器
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#stanleylat_controller
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/control#reference
Canbus
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus
消息管理器(MessageManager)
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#message_manager
消息接收(CanReceiver)
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#can_receiver
消息发送(CanSender)
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#can_sender
Canbus客户端(CanClient)
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#can_client
车辆工厂模式(VehicleFactory)
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#vehicle_factory
车辆控制器(LincolnController)
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#lincoln_controller
Canbus模块介绍
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#introduction
Canbus模块主流程
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#main
Canbus(驱动程序)
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#canbus_driver
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/canbus#reference
Simulation
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation
NPC
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#npc
天气
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#weather
红绿灯
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#traffic_light
地图模型制作
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#model_build
高精度地图制作
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#hdmap_build
桥接器
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#adapter
制作地图
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#make_map
测试场景
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#test_case
功能多样化
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#features
仿真软件
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#simulator
工作方式
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#simulator_work
工作原理
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#simulator_principle
为什么需要仿真
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#why_simulation
如何仿真
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#how_simulation
如何使用
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#how_to
如何构建自动驾驶仿真系统?
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#how_build
地图
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#simulation_map
真实场景地图生成
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#map_generate
虚拟场景地图生成
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#virtual_map_build
车
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#car
行为
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#behavior
API
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#api
部署
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#deploy
总结
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#summary
参考
https://github.com/daohu527/Dig-into-Apollo/blob/master/simulation#reference
Cyber
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber
云平台
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#cloud
随意的假设
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#hypothesis
多节点
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#multinode
通信方式
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#communication
资源调度
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#schedule
软件复用
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#reuse
快速测试
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#test
How do you design cyber?
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#how
需求分析
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#requirements
系统设计
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#design
其他
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#other
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/cyber#reference
Performance
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance
Perf安装
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#perf
火焰图
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#flame_graph
线程调度
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#schedule
Cgroups
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#cgroups
CPU亲和性
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#cpu
中断绑定
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#interrupt
Linux性能优化
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#linux
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/performance#reference
Transform
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform
缓存接口
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#buffer_interface
缓存实现
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#buffer_class
Transform模块简介
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#introduction
Transform(静态变换)
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#static_transform
Transform_broadcaster(广播)
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#no_static_transform
Buffer(接收缓存)
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#buffer
总结
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#summary
Reference
https://github.com/daohu527/Dig-into-Apollo/blob/master/transform#reference
Drivers
https://github.com/daohu527/Dig-into-Apollo/blob/master/drivers
Dreamview
https://github.com/daohu527/Dig-into-Apollo/blob/master/dreamview
Toolbox
https://github.com/daohu527/Dig-into-Apollo/blob/master/toolbox
各个模块的介绍都在对应的子目录中,主流程放在readme.md中,一些细节的函数和疑问放在todo.md中,需要了解主流程直接看readme.md,如果要深挖整个代码可以参考todo.md。
2020/1/10之前完成
Prediction模块的流程分析
2020/3/10之前完成
Cyber的系统调度流程,和消息收发流程
Perception模块的流程分析
次要任务
Routing模块可视化工具介绍
Planning模块各个控制器的具体实现
*apollo:
https://github.com/ApolloAuto/apollo
*awesome-self-driving-car:
https://github.com/daohu527/awesome-self-driving-car
更多话题讨论、技术交流可以扫描下方二维码添加『Apollo小哥哥』为好友,进开发者交流群。
* 以上内容为开发者原创,不代表百度官方言论。
已获开发者授权,原文地址请戳阅读原文。