溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apollo中怎么添加新的控制算法

發(fā)布時間:2021-12-18 16:08:19 來源:億速云 閱讀:182 作者:小新 欄目:云計算

小編給大家分享一下Apollo中怎么添加新的控制算法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Apollo中的控制算法由一個或多個控制器組成,可以輕松更改或替換為不同的算法。 每個控制器將一個或多個控制命令輸出到CANbus。

Apollo中的默認控制算法包含橫向控制器(LatController)和縱向控制器(LonController)。 它們分別負責橫向和縱向的車輛控制。

新的控制算法不必遵循默認模式,例如,一個橫向控制器+一個縱向控制器。 它可以是單個控制器,也可以是任意數(shù)量控制器的組合。

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

  1. 創(chuàng)建一個控制器

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

  3. 注冊新控制器

為了更好的理解,下面對每個步驟進行詳細的闡述:

一、創(chuàng)建一個控制器

所有控制器都必須繼承基類Controller,它定義了一組接口。 以下是控制器實現(xiàn)的示例:

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、根據(jù)算法要求為新控制器配置和參數(shù)定義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系統(tǒng)中的新控制器,請在如下文件中的“ControllerAgent”中注冊新控制器:modules/control/controller/controller_agent.cc

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

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

在完成以上步驟后,您的新控制器便可在Apollo系統(tǒng)中生效。

以上是“Apollo中怎么添加新的控制算法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI