技术文档丨Apollo控制、路由等模块
控制模块:通过生成控制命令(如加速、刹车和转向)来执行规划模块提供的时空轨迹。控制模块将规划轨迹作为输入,并产生控制指令给Can总线。
路由模块:告诉自动驾驶车辆如何经过一系列车道或道路到达目的地。要计算出自动驾驶车辆经过的车道和道路,路由模块需要知道起点和终点。
数据:是计算机与外部物理世界连接的桥梁。数据采集模块由传感器、控制器等其它单元组成。
通用模块:该模块包含的代码并非专门面向任何模块,但有助于提升Apollo的功能。
以下,ENJOY
根据规划轨迹和汽车的当前状态, Control模块使用不同的控制算法来生成舒适的驾驶体验,Control模块可以在正常模式和导航模式下工作。
规划轨迹。
汽车状态。
定位。
Dreamview AUTO模式更改请求。
发送到底盘的控制命令 (转向、 油门、刹车)。
路由模块根据需求产生更加高级的导航信息。
路由模块依赖一个路由拓扑文件,在Apollo中通常以routing_map.* 方式命名。
可以使用以下命令生成路由地图:
bash scripts/generate_routing_topo_graph.sh
地图数据
路由需求(起始和终止位置)
路由导航信息
本模块包含Apollo的数据解决方案, 包括进行数据收集、存储、处理等操作的工具和基础架构。
apollo_app编译目标定义抽象类ApolloApp,该类由所有模块实现,同时它还定义宏APOLLO_MAIN,用于启动每个模块。
log编译目标将google日志系统封装成特定于项目的宏,从而可以对日志记录级别进行更精确的控制。
macro编译目标定义一些常用的特定于类的宏。
适配器用于不同模块之间的通信。AdapterManager类派生所有专用适配器并对其进行管理。适配器需使用宏REGISTER_ADAPTER进行注册。适配器类充当Apollo模块和I / O机制(例如ROS)之间的抽象层。
车辆配置在文件configs/data中指定。
math实现许多有用的数学库。
monitor定义了日志记录系统。
proto定义许多项目范围的protocol buffers。
status用于确定某些功能能否成功执行。如果不能,status将提供有用的错误消息。
time是与时间相关的辅助函数。
util包含带有注册的工厂设计模式的实现,一些字符串解析函数,以及一些用于从文件中解析protocol buffers的函数。
所述vehicle_state classs描述车辆的当前状态(例如位置、速度、方向等)。
更多话题讨论、技术交流
可以添加『Apollo小哥哥』为好友
进开发者交流群