立即咨询

电话咨询

微信咨询

立即试用
商务合作

深入浅出,带你了解Apollo技术

2019-09-18

Apollo中的控制算法由一个或多个控制器组成,可以轻松更改或替换为不同的算法。 每个控制器将一个或多个控制命令输出到CANbus。

Apollo中的默认控制算法包含横向控制器(LatController)和纵向控制器(LonController)。 它们分别负责横向和纵向的车辆控制。

新的控制算法不必遵循默认模式,例如,一个横向控制器+一个纵向控制器。 它可以是单个控制器,也可以是任意数量控制器的组合。

添加新的控制算法的步骤:

创建一个控制器

在文件control_config中添加新控制器的配置信息

注册新控制器

为了更好的理解,下面对每个步骤进行详细的阐述:

一、创建一个控制器

所有控制器都必须继承基类Controller,它定义了一组接口。 以下是控制器实现的示例:

namespace apollo {

namespace control {

class NewController : public Controller {

 public:

  NewController();

  virtual ~NewController();

  Status Init(const ControlConf* control_conf) override;

  Status ComputeControlCommand(

      const localization::LocalizationEstimate* localization,

      const canbus::Chassis* chassis, const planning::ADCTrajectory* trajectory,

      ControlCommand* cmd) override;

  Status Reset() override;

  void Stop() override;

  std::string Name() const override;

};

}  // namespace control

}  // namespace apollo

 

二、添加新控制器的配置信息

按照下面的步骤在文件control_config中添加新控制器的配置信息:

1、根据算法要求为新控制器配置和参数定义proto。作为示例,可以参考以下位置的LatController的proto定义:modules/control/proto/ lat_controller_conf.proto

2、定义新的控制器proto之后,例如new_controller_conf.proto,输入以下内容:

syntax = "proto2";

package apollo.control;

message NewControllerConf {

    double parameter1 = 1;

    int32 parameter2 = 2;

}

 

3、参考如下内容更新 modules/control/proto/control_conf.proto文件:

optional apollo.control.NewControllerConf new_controller_conf = 15;

4、参考以内容更新 ControllerType(在modules/control/proto/control_conf.proto 中):

enum ControllerType {

    LAT_CONTROLLER = 0;

    LON_CONTROLLER = 1;

    NEW_CONTROLLER = 2;

  };

protobuf定义完成后,在modules/control/conf/lincoln.pb.txt中相应更新控制配置文件。

注意:上面的"control/conf"文件是Apollo的默认文件。您的项目可能使用不同的控制配置文件。

三、注册新控制器

要激活Apollo系统中的新控制器,请在如下文件中的“ControllerAgent”中注册新控制器:modules/control/controller/controller_agent.cc

按照如下示例添加注册信息:

void ControllerAgent::RegisterControllers() {

  controller_factory_.Register(

      ControlConf::NEW_CONTROLLER,

      []() -> Controller * { return new NewController(); });

}

在完成以上步骤后,您的新控制器便可在Apollo系统中生效。

更多产品了解

欢迎扫码加入云巴巴企业数字化交流服务群

产品交流、问题咨询、专业测评

都在这里!

 

热门数字化产品

腾讯乐享企业培训管理系统腾讯乐享连接知识、沉淀经验,整合学习地图、课堂、考试、直播、文档、社群、问卷、员工关怀、项目管理、讲师管理等多应用于一体,帮助团队建立学习型组织、降低沟通成本,提升员工自发性和组织内协同性,助力企业数字化管理升级。
Oracle NetSuite云ERP系统Oracle NetSuite云ERP系统是一个集成的云端企业资源规划平台,提供财务管理、供应链、CRM和电子商务管理等功能,支持全球业务扩展,加速企业创新和增长。
百度智能云曦灵智能数字人平台百度智能云曦灵-智能数字人平台,致力于打造智能的服务型&演艺型数字人,面向金融、媒体,运营商、MCN,互娱等行业,提供全新客户体验及服务。该平台可进一步降低数字人应用门槛,实现人机可视化语音交互服务和内容生产服务,有效提升用户体验、降低人力成本,提升服务质量和效率。
分贝通企业支出管理平台分贝通企业支出管理方案,全面满足企业费用支出管理需求。一站式企业支出管理平台,体验全新企业支出体验,全流程费控,全场景支付,提供整合的数据及流转。为高成长企业带来一站式的企业支付体验,帮助财务更高效、更数字化的管理费用支出。
腾讯云微搭低代码WeDa腾讯云微搭低代码是高效、高性能的低代码开发平台。腾讯云微搭低代码以云开发作为底层支撑,通过行业化模板、拖拽式组件和可视化配置快速构建多端应用(小程序、H5 、PC Web 应用等),免去了代码编写工作,让您能够完全专注于业务场景。
为你推荐
2025腾讯产业合作伙伴大会|云巴巴荣获双项大奖,载誉而归

1月16日,2025腾讯产业合作伙伴大会在三亚召开。云巴巴,荣膺“2024腾讯云卓越合作伙伴奖—星云奖”和“2024腾讯云AI产品突出贡献奖”双项大奖

2025-01-17
五大主流云手机横评!跨境云手机/OgPhone/火山引擎/天翼云/百度云谁更好?

五大主流云手机横评!跨境云手机/OgPhone/火山引擎/天翼云/百度云谁更好?

2025-07-01
国内主流CRM系统综合评测,管理者必看!

云巴巴基于对国内 6 大主流 CRM 系统的深度调研,结合制造业、零售、外贸等行业的真实应用场景,为大家拆解系统特性与适配性,助您避开选型陷阱。

2025-07-01
电商开票系统怎么选?电商通一键搞定税收新规难题

电商开票系统怎么选?电商通一键搞定税收新规难题

2025-07-01
直播平台项目管理工具选型指南来了!腾讯TAPD自动化+数据化驱动项目落地

直播平台项目管理工具选型指南来了!腾讯TAPD自动化+数据化驱动项目落地

2025-06-30
查看更多