-
该项目基于百度Apollo对自动驾驶各个模块分别介绍:
坐标转换,感知,预测,高精地图及导航,决策规划,运动控制,车辆动力学
该项目的大多数资料来源于Apollo。大部分内容是对Apollo-v6.0.0各模块及 Cyber框架 的解析和注释,属于源码阅读笔记。
作者邮箱:hanhy20@mai ls.jlu.edu.cn 欢迎交流。
项目地址 https://github.com/HaiYangLib/ApolloAnnotation
- 在代码上传时,某些大文件(主要是某些模型文件)没有上传,下面给出了这些文件的详细路径,如果有需要的,可以去Apollo的github上下载,对应版本**apollo-v6.0.0**
*.caffemodel *.model *.caffemodel.metadata *.onnx modules/planning/data/model/*.pt modules/perception/production/data/perception/camera/models/lane_detector/darkSCNN/params modules/perception/production/data/perception/camera/models/lane_detector/darkSCNN/params modules/perception/production/data/perception/camera/models/yolo_obstacle_detector/3d-r4-half/params modules/perception/production/data/perception/camera/models/yolo_obstacle_detector/3d-yolo/params modules/perception/production/data/perception/camera/models/lane_detector/darkSCNN/params
模块关系
橙色的部分是正在做的工作。与注释相关的文档,全部保存在doc文件夹中。
各个模块订阅及发布的Topic
Prediction模块的话题:
输入
话题名称 数据类型 说明 /apollo/perception/obstacles PerceptionObstacles 感知模块输出的障碍物 /apollo/planning ADCTrajectory 规划模块输出的轨迹 /apollo/localization/pose localization::LocalizationEstimate 定位数据 /apollo/storytelling storytelling::Stories 输出
话题名称 数据类型 说明 /apollo/prediction PredictionObstacles 预测模块输出结果 Routing模块的话题:
输入
成员变量 话题名称 消息类型 配置Proc "/apollo/routing_request" RoutingRequest 输出
成员变量 话题名称 消息类型 response_writer_ "/apollo/routing_response" RoutingResponse response_history_writer_ "/apollo/routing_response_history" RoutingResponse Planning模块的话题:
输入
成员变量 话题名称 消息类型 配置Proc "/apollo/prediction" PredictionObstacles 配置Proc "/apollo/canbus/chassis" Chassis 配置Proc "/apollo/localization/pose" LocalizationEstimate routing_reader_ "/apollo/routing_response" RoutingResponse traffic_light_reader_ "/apollo/perception/traffic_light" TrafficLightDetection pad_msg_reader_ "/apollo/planning/pad" PadMessage story_telling_reader_ "/apollo/storytelling" Stories 输出
成员变量 话题名称 消息类型 planning_writer_ "/apollo/planning" ADCTrajectory rerouting_writer_ "/apollo/routing_request" RoutingRequest planning_learning_data_writer_ "/apollo/planning/learning_data" PlanningLearningData 介绍Cpp常用的一些开源库,如protobuf glog gflags poco boost ros 等, 主要涉及他们的安装及基础使用,更加具体的使用在Cyber篇的cyber_cmake源码中会体现。
这些第三方库很多在apollo中会用到, 属于比较常用的实用工具。
完成了Cyber的cmake版移植,详细代码见cyber_cmake
提供了Cyber所需的第三方库的安装脚本,在thritd_party目录下
针对感知模块(Perception), ApolloAnnotation做了以下工作:
- Radar子模块的注释工作主要涉及:Radar数据预处理,IDMatch和匈牙利匹配算法的讲解
- Liadr子模块的注释工作主要涉及:Lidar数据预处理,Pointpillars算法实现过程的分析与代码注释
- Camera子模块的注释工作暂时未做
导航篇包含两个模块:Map和Routing
介绍了Apollo Map模块,主要包含高精地图类对高精地图的封装,拓扑地图类对拓扑地图的封装,基于高精地图创建拓扑地图。
介绍了Apollo Routing模块,主要包含Routing模块的具体实现,拓扑子图的生成和基于拓扑子图A*搜索,组装搜索结果并整合成RoutingResponse。
介绍了PncMap和ReferenceLineProvider,其中后者依赖前者, ReferenceLineProvider小节分析了参考线生成及平滑
针对规划模块(Planning), ApolloAnnotation做了以下工作:
- 对Frenet坐标系做了推导
推到了笛卡尔坐标系和Frenet坐标系之间的转换关系
- 对Lattice Planner做了介绍
详细介绍了LatticPlanner的原理以及实现过程,其中包括计算障碍物的S-T图,巡航模式下纵向4次多项式轨迹生成,存在障碍物停或止点时纵向5次多项式轨迹生成,基于二次规划的横向轨迹生成。还介绍了对每组横纵向轨迹代价的计算。
- 对OpenSpacePlanner做了介绍
介绍了OpenSpaceROI区域的生成,混合A*,ReedShepp轨迹生成
- 对Scenario的执行流程做了介绍
介绍了Scenario的切换原理,Scenario--->Stage--->Task的执行流程
主要讲解了Frenet坐标系,车辆运动学模型,动力学模型, PID,LQR, MPC控制方法
介绍了纵向控制,主要涉及纵向串级PID,横向LQR, 横纵向MPC
向一些愿意分享自动驾驶经验的博主表示感谢:
-
Notifications
You must be signed in to change notification settings - Fork 12
HaiYangLib/ApolloAnnotation
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
Annotation for Apollo
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published