Skip to content

Lincoln 林肯 MKZ 车型适配

源码路径:modules/canbus_vehicle/lincoln/

概述

Lincoln 模块是林肯 MKZ 车型的 CAN 总线适配实现,继承 AbstractVehicleFactoryVehicleController<Lincoln> 接口,将控制指令转换为林肯特有的 CAN 协议报文(制动 0x60、油门 0x62、转向 0x64、档位 0x66、转向灯 0x68)。

核心类

LincolnController

林肯车辆控制器,实现所有控制接口。

cpp
class LincolnController final : public VehicleController<apollo::canbus::Lincoln> {
 public:
  ErrorCode Init(const VehicleParameter& params,
                 CanSender<Lincoln>* can_sender,
                 MessageManager<Lincoln>* message_manager) override;
  bool Start() override;
  void Stop() override;
  Chassis chassis() override;

 private:
  void Emergency() override;
  ErrorCode EnableAutoMode() override;
  ErrorCode DisableAutoMode() override;
  ErrorCode EnableSteeringOnlyMode() override;
  ErrorCode EnableSpeedOnlyMode() override;

  void Gear(Chassis::GearPosition state) override;
  void Brake(double acceleration) override;     // 0.00~99.99 %
  void Throttle(double throttle) override;       // 0.00~99.99 %
  void Acceleration(double acc) override;        // -7.0~5.0 m/s²
  void Steer(double angle) override;             // -99.99~99.99 %
  void Steer(double angle, double angle_spd) override;
  void SetEpbBreak(const ControlCommand& command) override;
  void SetBeam(const VehicleSignal& signal) override;
  void SetHorn(const VehicleSignal& signal) override;
  void SetTurningSignal(const VehicleSignal& signal) override;
  bool VerifyID() override;

  // CAN 协议消息
  Brake60* brake_60_;         // 0x60 制动
  Throttle62* throttle_62_;   // 0x62 油门
  Steering64* steering_64_;   // 0x64 转向
  Gear66* gear_66_;           // 0x66 档位
  Turnsignal68* turnsignal_68_; // 0x68 转向灯

  void SecurityDogThreadFunc();  // 安全监控线程
};

源码modules/canbus_vehicle/lincoln/lincoln_controller.h

LincolnVehicleFactory

林肯车辆工厂,创建控制器和消息管理器。

cpp
class LincolnVehicleFactory : public AbstractVehicleFactory {
 public:
  bool Init(const CanbusConf* canbus_conf) override;
  bool Start() override;
  void Stop() override;
  void UpdateCommand(const ControlCommand* control_command) override;
  Chassis publish_chassis() override;
  void PublishChassisDetail() override;
};

CYBER_REGISTER_VEHICLEFACTORY(LincolnVehicleFactory)

源码modules/canbus_vehicle/lincoln/lincoln_vehicle_factory.h

LincolnMessageManager

林肯 CAN 报文管理器,维护 CAN ID 到协议解析器的映射。

源码modules/canbus_vehicle/lincoln/lincoln_message_manager.h

CAN 协议

CAN ID协议类说明
0x60Brake60制动控制
0x62Throttle62油门控制
0x64Steering64转向控制
0x66Gear66档位控制
0x68Turnsignal68转向灯控制

协议定义在 modules/canbus_vehicle/lincoln/protocol/ 目录。

安全机制

  • SecurityDogThreadFunc():安全监控线程,持续检查底盘状态
  • CheckChassisError():底盘错误检测
  • CheckSafetyError():安全相关错误检测(如超速、转向异常)
  • chassis_error_mask_:错误掩码,按位标识各类故障

调用关系

  • 父类AbstractVehicleFactoryVehicleController<Lincoln>
  • 依赖drivers/canbus(CAN 通信)、protocol/(CAN 协议解析)
  • 被调用CanbusComponent 通过插件机制加载

贡献者

页面历史