怎么在Apollo中添加新的车辆
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍了怎么在Apollo中添加新的车辆,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介我们通过本文将向开发者阐述如何向A
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
管理上千台服务器
软件开发模型的v模型图
csgo开挂社区服务器
高中网络技术应用教案教科版
软件开发年度总结和计划
所有x79主板都支持服务器内存
网口同时为服务器和客户端
php 服务器验证
打拐dna数据库是什么东西
联盟与服务器之间的通讯出现问题
如何看待软件开发工作
常州软件开发找哪家
数据库怎么绑定treeview
面向对象嵌入式软件开发
因为与服务器
中专计算机网络技术考卷
备份数据库覆盖了如何找回
军事职业网络技术基础考试答案
apple软件开发投入多少钱
保安编码器连接服务器失败
数据库sql语句优化
软件开发投资银行
验证服务器失败
php 按行读取数据库
亚马逊云服务器安全组
板式数控加工异形路径数据库
耕地资源调查数据库
网络安全作文400字初中
rust怎么创造自己的服务器
软件开发要求电脑什么水平