CANBUS模块解析
[TOC]
一、CANBUS目录结构
二、如何根据车厂DBC文件生成车厂代码
工具位于apollo/modules/tools/gen_vehicle_protocol目录,使用以下命令生成车厂代码:1
python gen.py lincoln_conf.yml
会在当前目录下生成output目录,目录里包含proto和vehicle两个目录,proto目录里的xxx.proto文件是汽车的具体报文信息,vehicle目录生成以下文件:
所以该工具根据DBC文件帮你完成了大量的编码工作。
三、相关文件描述
- apollo/modules/canbus/chassis_detail.proto:该文件的作用是保存车辆自定义参数。使用DBC文件生成自己的proto文件,拷贝到chassis_detail.proto的下面。不用担心自己生成的proto文件能否被Apollo识别,因为Apollo要处理的参数并不是chassis_detail.proto,而是apollo/modules/canbus/proto/chassis.proto。你需要在自己的controller.cc中将chassis_detail.proto转换为chassis.proto。
- apollo/modules/canbus/chassis.proto:Apollo中的一个message。主要用来保存地盘的通用参数。这些参数通过转换车辆自定义的chassis_detail.proto得到。转换函数在自己的conroller.cc中实现
- 在上一步中生成了车辆lincoln文件夹,在这个文件夹中,lincoln_controller.cc就是用来将其他模块发出来的message转换成底盘可以执行的数据,同时也将底盘的返回的数据转换成Apollo需要的message返回给其他模块。lincoln_message_manager.cc管理CAN的protocol data。lincoln_vehicle_factory.cc将lincoln添加进入Apollo。
四、CANBUS模块类图
五、数据流
CANBUS数据流图