怎么在Apollo中添加新的车辆
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了怎么在Apollo中添加新的车辆,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介我们通过本文将向开发者阐述如何向A
千家信息网最后更新 2026年11月03日怎么在Apollo中添加新的车辆
这篇文章主要介绍了怎么在Apollo中添加新的车辆,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
简介
我们通过本文将向开发者阐述如何向Apollo中添加新的车辆。
注意: Apollo控制算法将林肯MKZ配置为默认车辆
添加新的车辆时,如果您的车辆需要不同于Apollo控制算法提供的属性,请参考:
使用适合您的车辆的其它控制算法。
修改现有算法的参数以获得更好的结果。
添加新车辆的步骤
按照以下步骤以实现新车辆的添加:
实现新的车辆控制器
实现新的消息管理器
实现新的车辆工厂
注册新的车辆
更新配置文件
一、实现新的车辆控制器
新的车辆控制器是从 VehicleController类继承的。 下面提供了一个头文件示例:
/** * @class NewVehicleController * * @brief this class implements the vehicle controller for a new vehicle. */class NewVehicleController final : public VehicleController { public: /** * @brief initialize the new vehicle controller. * @return init error_code */ ::apollo::common::ErrorCode Init( const VehicleParameter& params, CanSender* const can_sender, MessageManager* const message_manager) override; /** * @brief start the new vehicle controller. * @return true if successfully started. */ bool Start() override; /** * @brief stop the new vehicle controller. */ void Stop() override; /** * @brief calculate and return the chassis. * @returns a copy of chassis. Use copy here to avoid multi-thread issues. */ Chassis chassis() override; // more functions implemented here ...};二、实现新的消息管理器
新的消息管理器是从 MessageManager 类继承的。 下面提供了一个头文件示例。
/** * @class NewVehicleMessageManager * * @brief implementation of MessageManager for the new vehicle */class NewVehicleMessageManager : public MessageManager { public: /** * @brief construct a lincoln message manager. protocol data for send and * receive are added in the construction. */ NewVehicleMessageManager(); virtual ~NewVehicleMessageManager(); // define more functions here. ...};三、实施新的车辆工厂
新的车辆工厂是从 AbstractVehicleFactory 类继承的。下面提供了一个头文件示例。
/** * @class NewVehicleFactory * * @brief this class is inherited from AbstractVehicleFactory. It can be used to * create controller and message manager for lincoln vehicle. */class NewVehicleFactory : public AbstractVehicleFactory { public: /** * @brief destructor */ virtual ~NewVehicleFactory() = default; /** * @brief create lincoln vehicle controller * @returns a unique_ptr that points to the created controller */ std::unique_ptr CreateVehicleController() override; /** * @brief create lincoln message manager * @returns a unique_ptr that points to the created message manager */ std::unique_ptr CreateMessageManager() override;}; 一个.cc示例文件如下:
std::unique_ptrNewVehicleFactory::CreateVehicleController() { return std::unique_ptr (new lincoln::LincolnController());}std::unique_ptr NewVehicleFactory::CreateMessageManager() { return std::unique_ptr (new lincoln::LincolnMessageManager());}
Apollo提供可以用于实现新车辆协议的基类 ProtocolData。
四、注册新的车辆
在modules/canbus/vehicle/vehicle_factory.cc里注册新的车辆。 下面提供了一个头文件示例。
void VehicleFactory::RegisterVehicleFactory() { Register(VehicleParameter::LINCOLN_MKZ, []() -> AbstractVehicleFactory* { return new LincolnVehicleFactory(); }); // register the new vehicle here. Register(VehicleParameter::NEW_VEHICLE_BRAND, []() -> AbstractVehicleFactory* { return new NewVehicleFactory(); });}五、更新配置文件
在 modules/canbus/conf/canbus_conf.pb.txt 中更新配置,在Apollo系统中激活车辆。
vehicle_parameter { brand: NEW_VEHICLE_BRAND // put other parameters below ...}感谢你能够认真阅读完这篇文章,希望小编分享的"怎么在Apollo中添加新的车辆"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
车辆
文件
控制
示例
个头
算法
篇文章
配置
工厂
消息
更新
管理
控制器
步骤
参考
价值
兴趣
参数
同时
属性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技企业
互联网高科技
互联网科技公司简介
国智互联网科技
互联网科技深圳
互联网科技开发公司
高科技与互联网
西安互联网科技
电子科技大学互联网
互联网科技公司名称
开启互联网科技时代小说
字节跳动和互联网科技
重庆互联网医院沙龙医盟信息科技
南平创想时代互联网科技有限公司
互联网5g黑科技有哪些
雨阳互联网卡科技有限公司
工业互联网科技创业
中国科技和美国互联网
马化腾互联网科技教学
玉溪新华互联网科技怎么选
互联网科技开发公司
上海万想互联网科技
互联网金融监管科技
镁科技互联网资讯平台
新华互联网科技校企合作
互联网软件和科技
互联网科技产业特征
996高科技互联网公司
科技赋能视角下互联网保险发展
神州科技互联网有限公司