深入浅出,带你了解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-23 17:03:18

为企业 AI 提供数据原料,永洪科技想为业务人员提供“BI”服务

为企业 AI 提供数据原料,永洪科技想为业务人员提供“BI”服务

根据 Gartner 报告显示的数据,从全球500强在IT投入上来看,5年前在这些大型集团在 BI 和分析上的投资是低于 ERP 的。而现在,他们在BI和分析的投资增速是最快的接近20%。

2020-02-27 17:36:14

浅析机器学习基于学习策略的分类(一)

浅析机器学习基于学习策略的分类(一)

学习策略是指推理策略学习使用系统的过程。机器学习由环境(如书本或教师)提供数据信息,一个学习管理系统发展总是由学习和环境两部分组成。还有一个便是,机器学习部分则实现企业信息进行转换,用能够通过理解的形式记忆下来,并从中我们获取社会有用的信息。 机器学习发

2022-11-22 09:52:44

人脸识别技术目前所面临的优势和困难

人脸识别技术目前所面临的优势和困难

每一个技术的产生,都是螺旋式上升,波浪式前进的,人脸识别技术当人也不例外,本文,我们就来一起了解一下人脸识别技术目前所面临的优势和困难。 人脸识别技术目前所面临的优势是其自然性和不被被测个体察觉的特点,所谓自然性,是指该识别方式同人类(甚至其他生物)进行

2022-11-21 11:39:49

据说你还不知道什么是网络虚拟技术

据说你还不知道什么是网络虚拟技术

虚拟,是一个十分抽象的词,更不用说提到虚拟技术了,不过你不用担心,本文就简单说一下什么是网络虚拟技术。 首先需要我们可以描述一下自己一个病毒通过分析者的工作:分布式块存储当拿到一个企业样本时,我们并不敢直接经济运行它,谁也无法查杀的新病毒。因为它可能是带

2022-11-21 10:35:57

四大挑战!关于企业应用人工智能技术

四大挑战!关于企业应用人工智能技术

关于企业应用人工智能技术有四大挑战,我们下面做具体分析。     在专家看来,人工智能信息技术,不仅我们可以通过促进其核心企业业务的转型,同时也提高了员工和客户服务体验,并最终催生了新的商业发展模式。 但目前,对于大多数传统企业以及中小企业来说,

2020-05-08 16:46:42

严选云产品

澜舟科技孟子大模型 孟子预训练模型是基于团队自研的大规模预训练语言模型。可处理多语言、多模态数据,同时支持多种理解和生成任务,能快速满足不同领域、不同应用场景的需求。
商汤睿目通行一体机SensePass S7 SensePass S7 睿目通行一体机,集成了商汤科技最新AI识别算法,采用7寸高清触控显示屏、200万像素双目高动态摄像头,具备IP66防水防尘等级,支持多种标准接口拓展,适用于各种复杂环境。可结合管理平台提供身份核验、门禁通行、考勤签到、访客迎宾等多场景一站式服务。
英方软件i2CloudCDP 云备份 云备份产品是将系统容灾备份软件和云计算平台技术结合为一体,可以通过充分的云计算资源共享,实现成本低廉、部署迅速、灵活弹性的远程数据容灾备份服务。
Karbon:Kubernetes服务 Karbon:企业级Kubernetes服务大大简化了Kubernetes的供应,操作和生命周期管理,而无需专用资源来管理基础架构。
数势科技经营罗盘系统 数势科技经营罗盘系统通过API、RPA等方式自动化采集多渠道多系统数据,建立电商运营通用指标体系及分析算法模型,提供一站式场景分析、决策 和自助分析探索能力,助力商家经营效率提升。
ZStack CMP 多云管理平台 ZStack CMP 多云管理平台,深度结合用户需求,管理多种公有云、私有云、及多种异构云基础设施,包含强大的运维和运营能力,提供统一的一站式多云管理服务。

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

申请试用