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

来源: 云巴巴 2019-09-18 15:51:01

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系统中生效。

更多产品了解

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

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

都在这里!

 

评论列表

为你推荐

那你知道智能门锁的主要功能都有那些吗

那你知道智能门锁的主要功能都有那些吗

现在,智能门锁更多地进入到我们的生活中了,本文,就主要介绍一下智能门锁的功能。 智能门锁通常使用的基本功能为,可以供多人指纹开门,一家里或者办公室往往不只一两个人。产品质量要稳定,性能好,可以分权限开门,不可能让户主和保姆、清洁工具有一样的开门管理权限,

2022-11-21 13:59:40

 干货分享,有关RPA的从加速器到加数器

 干货分享,有关RPA的从加速器到加数器

在全球流行的深度打击实体经济,现在,再次给企业的数字化改造敲响了警钟,兼并和加快跨部门跨组织及数字化协同的业务流程,正在成为管理者办公桌的日常选择。        另一方面,深度植根于FSSC与CoE团队,随着应用深度与广度的不断扩展,开启了对企业数字,

2020-04-29 13:27:14

浅析智能运维发展及主要技术研究

浅析智能运维发展及主要技术研究

智能运维(AIOps)是指通过使用机器进行学习等人工管理智能控制算法,并作出重要决策的运维方式,自动地从海量运维数据中学习并总结社会规则。 智能运维理念最早由Gartner提出。 是将人工智能技术融入运维系统,基于大数据和机器学习,采集海量数据(包括日志

2022-11-22 10:13:15

放眼身边,我们身边的人工智能你知道哪些?(上)

放眼身边,我们身边的人工智能你知道哪些?(上)

提起人工智能,相信大家脑海里会出现“机器人”、“智能家居”等一些词语,而在我们日常使用的人脸识别中也有人工智能的应用。不仅仅是我们对着手机通过自己的声音完成认证之后打开手机助手,我们身边越来越多的领域内其实都有人工智能的身影。而人工智能又分为强人工智能和弱

2022-11-23 16:58:11

眼神科技响应新基建 构建智慧社区新模式

眼神科技响应新基建 构建智慧社区新模式

在政策和需求的双重刺激下,构建智慧社区进程也在不断加速,眼神科技以AI赋能社区应用场景,实现社区服务智能化和管理精准化。

2022-11-23 17:09:44

语音合成媲美人声,腾讯云AI语音成为人机交互下一个入口

语音合成媲美人声,腾讯云AI语音成为人机交互下一个入口

腾讯云语音合成满足将文本转化成拟人化语音的需求,打通人机交互闭环。提供多场景、多语言的音色选择,支持 SSML 标记语言,支持自定义音量、语速等参数,让发音更专业、更符合场景需求。

2024-03-27 14:01:55

严选云产品

腾讯电子签物业行业解决方案 腾讯电子签开放平台是基于腾讯云技术和区块链技术倾力打造的电子签约及合同服务管理平台,为企业提供全生命周期的电子合同服务流程和联合解决方案,为企业降低运营成本,提升数字化经营效率。
寄云科技时序数据库系统TSDB 时序数据库系统(TSDB)是专为工业时序数据的接入、存储、查询、展示和管理而设计开发的产品。TSDB针对时序数据结构清晰的特点,在数据加载、存储和查询等环节做了深度优化,能够支持每秒千万测点以上的实时注入和秒级查询响应,提供基于Web页面的图形化用户交互界面,支持SQL风格的时序数据查询。
腾讯云小微小样本数智人 腾讯云小微小样本数智人,通过少量的小样本素材(3~5分钟),即可导入训练模型,生成与真人无异的数字人分身,五官、动作、表情完全模仿真人。适用于内容讲解、口播视频生产、直播带货等需要真人出镜的场景,节约成本,全年无休。
有赞新零售鞋服行业解决方案 有赞新零售鞋服行业解决方案,扩张营销触点,开拓增量,为私域蓄能,门店、线下活动客流全掌握,实现线下客户数字化沉淀。导购主动触达 + 利益点吸引,留下每一位线下客户客资,深度结合腾讯生态能力,帮助商家全链路经营,创造增量价值。
鲁班工场App 鲁班工场移动App(Luban iWorks App)是鲁班项目协同管理的APP产品,将BIM技术和移动互联网技术相互结合,致力于帮助项目现场管理人员能够更轻便、更有效、更直观的查询BIM信息并进行协同合作。
灵智数科小活儿智能化用工平台 灵智数科小活儿智能化用工平台,共享经济模式下的灵活用工。基于LBS/技能标签等匹配B端商家与C端灵活就业者,满足企业及时调动/长期招募的多样化用工需求。

甄选10000+数字化产品 为您免费使用

申请试用