久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

共計(jì) 2033 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。

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

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

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

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

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

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

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

注冊(cè)新控制器

為了更好的理解,下面對(duì)每個(gè)步驟進(jìn)行詳細(xì)的闡述:

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

所有控制器都必須繼承基類 Controller,它定義了一組接口。以下是控制器實(shí)現(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,輸入以下內(nèi)容:

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

3、參考如下內(nèi)容更新  modules/control/proto/control_conf.proto 文件:

optional apollo.control.NewControllerConf new_controller_conf = 15;

4、參考以內(nèi)容更新  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 中相應(yīng)更新控制配置文件。

注意:上面的 control/conf 文件是 Apollo 的默認(rèn)文件。您的項(xiàng)目可能使用不同的控制配置文件。

三、注冊(cè)新控制器

要激活 Apollo 系統(tǒng)中的新控制器,請(qǐng)?jiān)谌缦挛募械摹癈ontrollerAgent”中注冊(cè)新控制器:modules/control/controller/controller_agent.cc

按照如下示例添加注冊(cè)信息:

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

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

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

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)2033字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 读书| 开阳县| 曲松县| 乌恰县| 阆中市| 根河市| 昌黎县| 长垣县| 兴城市| 白山市| 晋宁县| 息烽县| 图木舒克市| 蓝田县| 普宁市| 北票市| 怀集县| 镇安县| 望江县| 和平县| 万山特区| 望城县| 玉林市| 三穗县| 务川| 阿克苏市| 兴和县| 伊通| 文化| 渝中区| 柳州市| 上虞市| 金乡县| 宣恩县| 乐至县| 中牟县| 南靖县| 南江县| 秦皇岛市| 加查县| 宁武县|