Apollo添加新的控制算法步骤

电子说

1.3w人已加入

描述

Apollo中的控制算法由一个或多个控制器组成,可以轻松更改或替换为不同的算法。 每个控制器将一个或多个控制命令输出到CANbus。 Apollo中的默认控制算法包含横向控制器(LatController)和纵向控制器(LonController)。 它们分别负责横向和纵向的车辆控制。

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

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

创建一个控制器

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

注册新控制器

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

1

创建一个控制器

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

123456789101112131415161718 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

 

2添加新控制器的配置信息

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

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

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

12345678 syntax = "proto2";package apollo.control;message NewControllerConf {    double parameter1 = 1;    int32 parameter2 = 2;}

 

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

1 optional apollo.control.NewControllerConf new_controller_conf = 15;

 

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

12345 enum ControllerType {    LAT_CONTROLLER = 0;    LON_CONTROLLER = 1;    NEW_CONTROLLER = 2;  };

 

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

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

3注册新控制器

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

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

12345 void ControllerAgent::RegisterControllers() {  controller_factory_.Register(      ControlConf::NEW_CONTROLLER,      []() -> Controller * { return new NewController(); });}

 

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分