怎么在Apollo中添加新的车辆
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,这篇文章主要介绍了怎么在Apollo中添加新的车辆,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介我们通过本文将向开发者阐述如何向A
千家信息网最后更新 2024年11月22日怎么在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安全错误
数据库的锁怎样保障安全
上海个性化软件开发价格表
盟威软件开发
甘肃浪潮服务器维修调试云服务器
网络安全的法律的全称是
网络技术网站英文
网络安全类国企
昭通互联网科技怎么样
之前的云服务器不可用怎么办
软件开发工作计算方法
进口软件开发哪家强
怎么管理企业服务器
奇凡天深圳软件开发有限公司
软件开发完成了
fm22怎么改数据库
怎么将信息写入数据库
网络安全及用户的安全意识
石嘴山办公软件开发怎么样
厦门睿路达互联网科技
软件开发职业健康认证体系
法律数据库服务企业
达梦数据库查询日志策略
软件开发对显卡要求
服务器应用程序在哪里
网络技术上市公司
银行网络安全主题
正统三国有那些服务器
网络安全获奖手抄报图片大全
多wan服务器怎么设置静态ip
服务器资源生成下载地址
黄山纸蚕网络技术有限公司