canbus模块简要介绍
can是汽车通信的标准协议,百度Apollo当中的canbus模块的功能就是接受并执行控制命令,并收集底盘状态作为给控制模块的反馈,也就是说,将控制消息通过canbus发送给车辆底层,并通过canbus从车辆底层获得消息。
该模块默认订阅/apollo/control
话题,获得控制消息转换为can报文发送给车辆底层,其消息类型在modules/control/proto/control_cmd.proto
当中定义。此外,还可以在配置文件当中修改参数,将订阅的话题改为/apollo/guardian
。
该模块默认发布/apollo/canbus/chassis
,获取车辆底层发来的can报文,进行解析为消息格式后发送给该话题。此外可以在配置文件当中修改相关参数,发布/apollo/canbus/chassis_detail
,消息类型分别在modules/canbus/proto/chassis.proto
和modules/canbus/proto/chassis_detail.proto
文件当中定义。
整体框架
该模块使用apollo::cyber::TimerComponent
机制,通过CanbusComponent::Init
完成初始化,cyber_RT会以一定的频率调用CanbusComponent::Proc
函数。
有关Component机制可详细参考这里。
此外,canbus模块使用了工厂模式,使得可以根据配置文件里的参数动态创建堆对象