技术文档丨Apollo控制、路由等模块

控制模块:通过生成控制命令(如加速、刹车和转向)来执行规划模块提供的时空轨迹。控制模块将规划轨迹作为输入,并产生控制指令给Can总线。

 

路由模块:告诉自动驾驶车辆如何经过一系列车道或道路到达目的地。要计算出自动驾驶车辆经过的车道和道路,路由模块需要知道起点和终点。

 

数据:是计算机与外部物理世界连接的桥梁。数据采集模块由传感器、控制器等其它单元组成。

 

通用模块:该模块包含的代码并非专门面向任何模块,但有助于提升Apollo的功能。

 

 

 

  以下,ENJOY  

 

控制

 

简介

 

根据规划轨迹和汽车的当前状态, Control模块使用不同的控制算法来生成舒适的驾驶体验,Control模块可以在正常模式和导航模式下工作。

 

输入

 

  • 规划轨迹。

  • 汽车状态。

  • 定位。

  • Dreamview AUTO模式更改请求。

 

输出

 

  • 发送到底盘的控制命令 (转向、 油门、刹车)。

 

路由

 

简介

 

路由模块根据需求产生更加高级的导航信息。

 

路由模块依赖一个路由拓扑文件,在Apollo中通常以routing_map.* 方式命名。

可以使用以下命令生成路由地图:

bash scripts/generate_routing_topo_graph.sh

 

输入

 

  • 地图数据

  • 路由需求(起始和终止位置)

 

输出

 

  • 路由导航信息

 

数据

 

本模块包含Apollo的数据解决方案, 包括进行数据收集、存储、处理等操作的工具和基础架构。

 

通用——模块

 

apollo_app

 

apollo_app编译目标定义抽象类ApolloApp,该类由所有模块实现,同时它还定义宏APOLLO_MAIN,用于启动每个模块。

 

日志

 

log编译目标将google日志系统封装成特定于项目的宏,从而可以对日志记录级别进行更精确的控制。

 

macro(宏)

 

macro编译目标定义一些常用的特定于类的宏。

 

适配器

 

适配器用于不同模块之间的通信。AdapterManager类派生所有专用适配器并对其进行管理。适配器需使用宏REGISTER_ADAPTER进行注册。适配器类充当Apollo模块和I / O机制(例如ROS)之间的抽象层。

 

configs/data

 

车辆配置在文件configs/data中指定。

 

math

 

math实现许多有用的数学库。

 

monitor(监控)

 

monitor定义了日志记录系统。

 

proto

 

proto定义许多项目范围的protocol buffers。

 

status

 

status用于确定某些功能能否成功执行。如果不能,status将提供有用的错误消息。

 

time

 

time是与时间相关的辅助函数。

 

util

 

util包含带有注册的工厂设计模式的实现,一些字符串解析函数,以及一些用于从文件中解析protocol buffers的函数。

 

vehicle_state

 

所述vehicle_state classs描述车辆的当前状态(例如位置、速度、方向等)。