怎么在Apollo中添加新的车辆
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了怎么在Apollo中添加新的车辆,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介我们通过本文将向开发者阐述如何向A
千家信息网最后更新 2025年02月01日怎么在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_ptrCreateVehicleController() 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安全错误
数据库的锁怎样保障安全
进不去好友的服务器是怎么回事
高中网络技术会考必过
服务器存储方案发展历程
瑞庭网络技术西安分公司待遇
网络安全方面的论文题目有哪些
公众号推文网络安全
数据库 dataset
3.5寸服务器硬盘的主流容量
医疗软件开发框架
《网络安全法》网民 遵守
新罗区寄长枫网络技术服务部电话
网络安全技术机构
串口终端服务器价格
数据库建立方案
手机台湾代理服务器
延安网络技术网上价格
北京java软件开发询问报价
上海匡致互联网科技有限公司
嵌入式软件开发和硬件
ftp服务器 c语言
邯郸系统软件开发报价
数据库考卷
陕西省网络安全中心主任
12306是什么数据库
币天下网络技术有限公司
云和网络安全性
大连城市大脑网络技术有限公司
陕西省网络安全技术
服务器升级方法
闵行区推广网络安全技术指导