modules/canbus/README_cn.md
Canbus组件主要实现流程创建基于车型的工厂对象,通过调用车型工厂的接口方法,实现初始化,实现处理控制指令
apollo::control::ControlCommand ,实现解析底盘数据并将底盘数据写入到
modules/common_msgs/chassis_msgs/chassis.proto。在车型工厂类 apollo::canbus::AbstractVehicleFactory
内,定义了初始化,启动和关闭,解析控制指令,解析底盘命令,发布底盘消息,发布底盘报文解析数据,更新心跳等方法,
这些方法调用了车辆控制器的对象进行实现。车辆控制器 apollo::canbus::VehicleController 定义了初始化,启动和关闭,
通过底盘反馈报文更新 chassis 数据,处理控制指令方法,处理底盘命令方法,车辆使能方法,实现油门、刹车、转向,档位、驻车、
灯光等车辆的控制逻辑。
每一类车型,继承车型工厂类 apollo::canbus::AbstractVehicleFactory 和车辆控制器类 apollo::canbus::VehicleController
,创建 CanClient 客户端,创建 CanSender 、 CanReceiver 对象,实现相应的初始化、更新chassis、处理控制指令等方
法。,创建消息管理器 apollo::drivers::canbus::MessageManager 对象,对该车型的发送/接收报文进行管理。车型的每一条报文
数据格式定义继承 apollo::drivers::canbus::ProtocolData ,并实现报文协议解析。每一类车型代码通过包管理的方式进行组
织,具体车型实现可移动到 modules/canbus_vehicle 进行查看。
CanClient 客户端是CAN卡硬件驱动的实例,它是被不同的使用CAN总线协议的传感器共享的。如果现有的CAN卡驱动不满足使用,可以通过继承 apollo::drivers::canbus::CanClient 类在 modules/drivers/canbus/can_client 的文件夹中实现新的CAN卡驱动。 CanClient 客户端可以移动到 modules/drivers/canbus/can_client/ 进行查看。
modules/canbus
├── common // 模块全局gflag定义
├── conf // 模块配置文件,参数文件目录
├── dag // 模块启动文件(mainboard)
├── launch // 模块启动文件(cyber_launch)
├── proto // 组件定义的配置文件
├── testdata // 单元测试的数据文件
├── tools // 调试工具teleop等
├── vehicle // 车辆底盘(canbus_vehicle)组件的基类代码文件
├── BUILD // 构建规则文件
├── canbus_component.cc // 组件实现的代码文件
├── canbus_component.h // 组件实现的代码文件
├── canbus_test.cc // 组件单元测试文件
├── cyberfile.xml // 包管理配置文件
├── README_cn.md // 说明文档
└── README.md // 说明文档
apollo::canbus::CanbusComponent
| Channel名称 | 类型 | 描述 |
|---|---|---|
/apollo/control | apollo::control::ControlCommand | 控制指令 |
/apollo/guardian | apollo::guardian::GuardianCommand | 安全指令 |
/apollo/chassis_control | apollo::external_command::ChassisCommand | 外部底盘命令 |
| Channel名称 | 类型 | 描述 |
|---|---|---|
/apollo/chassis | apollo::canbus::Chassis | 车辆底盘信息接口数据,包括车辆速度、方向盘转角、档位、底盘状态等信息 |
/apollo/chassis_detail | apollo::${Vehicle_Type} | 车辆底盘详细信息,展示发送和接收底盘报文解析数据 |
| 文件路径 | 类型/结构 | 说明 |
|---|---|---|
modules/canbus/conf/canbus_conf.pb.txt | apollo::canbus::CanbusConf | apollo::canbus::CanbusComponent 的配置文件 |
modules/canbus/conf/canbus.conf | gflags | 命令行参数配置 |
| flagfile | 类型 | 描述 |
|---|---|---|
modules/canbus/common/canbus_gflags.cc | cc | Canbus组件flags变量定义文件 |
modules/canbus/common/canbus_gflags.h | h | Canbus组件flags声明文件 |
modules/canbus/conf/canbus.conf配置文件/apollo/chassis_detail消息,建议调试底盘数据时打开--enable_chassis_detail_pub
--noenable_chassis_detail_pub
/apollo/control数据。注意:如果打开,则接收/apollo/guardian数据,且需要启动guardian模块--noreceive_guardian
modules/canbus/conf/canbus_conf.pb.txt配置文件配置can_card_parameter,使用哪个can卡,配置哪个,下图示例是使用HERMES_CAN设备,PCI类型,端口号0,最大端口数8。
can_card_parameter {
brand: HERMES_CAN
type: PCI_CARD
channel_id: CHANNEL_ID_ZERO
num_ports: 8
interface: NATIVE
}
mainboard -d modules/canbus/dag/canbus.dag
cyber_launch start modules/canbus/launch/canbus.launch