久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在Apollo中添加新的車輛

171次閱讀
沒有評論

共計 3268 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要介紹了怎么在 Apollo 中添加新的車輛,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

簡介

我們通過本文將向開發者闡述如何向 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 VehicleController  CreateVehicleController() override;
 /**
 * @brief create lincoln message manager
 * @returns a unique_ptr that points to the created message manager
 */
 std::unique_ptr MessageManager  CreateMessageManager() override;};

一個.cc 示例文件如下:

std::unique_ptr VehicleController 
NewVehicleFactory::CreateVehicleController() { return std::unique_ptr VehicleController (new lincoln::LincolnController());
std::unique_ptr MessageManager  NewVehicleFactory::CreateMessageManager() { return std::unique_ptr MessageManager (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
 ...
}

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“怎么在 Apollo 中添加新的車輛”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3268字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宁阳县| 安龙县| 云南省| 临海市| 陆川县| 东阿县| 沛县| 双城市| 西贡区| 吐鲁番市| 东兰县| 长乐市| 荃湾区| 黑山县| 华容县| 工布江达县| 盐亭县| 九寨沟县| 宁强县| 阿拉善盟| 哈密市| 赤壁市| 长垣县| 隆化县| 惠安县| 治县。| 山西省| 邹平县| 木里| 黔江区| 咸阳市| 奇台县| 益阳市| 神池县| 隆回县| 石城县| 宿迁市| 铁岭县| 榆树市| 镇坪县| 政和县|