RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Apollo添加新的控制算法步驟

YB7m_Apollo_Dev ? 來(lái)源:未知 ? 作者:工程師曾玲 ? 2018-10-02 11:11 ? 次閱讀

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ì)的闡述:

1

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

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

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、根據(jù)算法要求為新控制器配置和參數(shù)定義proto。作為示例,可以參考以下位置的LatController的proto定義:modules/control/proto/ lat_controller_conf.proto

2、定義新的控制器proto之后,例如new_controller_conf.proto,輸入以下內(nèi)容:

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

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

1 optional apollo.control.NewControllerConf new_controller_conf = 15;

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

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

3注冊(cè)新控制器

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16332

    瀏覽量

    177806
  • 控制算法
    +關(guān)注

    關(guān)注

    4

    文章

    166

    瀏覽量

    21712

原文標(biāo)題:技術(shù)文檔 | 如何添加新的控制算法

文章出處:【微信號(hào):Apollo_Developers,微信公眾號(hào):Apollo開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Apollo2_ble 中添加一個(gè)service

    導(dǎo)語(yǔ) Apollo2_ble模塊硬件由Apollo2(ble host)+ em9304(ble controller)組成。軟件上,使用ARM的Cordio Stack and Profiles
    的頭像 發(fā)表于 07-02 09:55 ?5245次閱讀

    stm32直流電機(jī)控制—PID算法篇 相關(guān)資料推薦

    可以自動(dòng)生成,如何生成可參考右邊的幫助文檔。文章目錄stm32直流電機(jī)控制—PID算法篇前言一、pandas是什么?二、使用步驟1.引入庫(kù)2.讀入數(shù)據(jù)總結(jié)前言提示:這里可以添加本文要記
    發(fā)表于 06-30 06:14

    GPIO的庫(kù)函數(shù)添加步驟

    。2、添加相關(guān)的標(biāo)準(zhǔn)庫(kù)在用標(biāo)準(zhǔn)庫(kù)配置GPIO的時(shí)候,我們需要手動(dòng)添加這個(gè)GPIO的庫(kù)函數(shù)。如下圖的步驟所示添加,添加如第五步里面的幾個(gè)庫(kù)函數(shù)
    發(fā)表于 08-24 06:31

    如何對(duì)Apollo2.5 CANBUS進(jìn)行全面調(diào)試?

    前言:CANBUS是Apollo需要根據(jù)你的底盤寫代碼的地方,感覺也是Apollo最難調(diào)試的部分。這部分首先要選好CAN卡,因?yàn)椴皇?b class='flag-5'>Apollo推薦的CAN卡,驅(qū)動(dòng)程序和對(duì)應(yīng)接口,可能都需要自己調(diào)整
    發(fā)表于 08-30 06:02

    apollo2 mcu開發(fā)的相關(guān)資料分享

    接口從外部打開調(diào)試訪問允許訪問所有的內(nèi)存和外圍設(shè)備的MCU。一、Apollo2 MCU 低功耗模式活動(dòng)模式休眠模式深度模式關(guān)機(jī)二、中斷事件有哪些呢?NVIC喚醒中斷控制器退出休眠進(jìn)入休眠,等待中斷在MCU中,多個(gè)外設(shè)可以產(chǎn)生中斷。在某些情況下,單個(gè)外圍設(shè)備可能會(huì)產(chǎn)生多個(gè)不
    發(fā)表于 11-01 07:23

    PID算法調(diào)試步驟

    0、前言在我看來(lái),其實(shí)控制題是較好做(混)的一種題型,你懂我意思吧。控制題簡(jiǎn)單概括下,大概就是三個(gè)步驟。1、構(gòu)建整體方案。2、設(shè)計(jì)整體控制電路。3、軟件程序設(shè)計(jì)—PID
    發(fā)表于 11-30 06:34

    Ambiq Apollo4的相關(guān)資料推薦

    今天翻官方的網(wǎng)站,發(fā)現(xiàn)了 Apollo4 的鏈接。從其中下來(lái)Apollo3-Apollo4-SDK-2020.06.20,發(fā)現(xiàn)了\boards\apollo4_eb\examples\u***\tinyu***_cdc這個(gè)不錯(cuò),
    發(fā)表于 12-13 08:30

    Apollo Heritage版音頻接口附帶的插件

     Universal Audio在去年推出的Apollo Heritage版音頻接口提供了5個(gè)或10個(gè)獲獎(jiǎng)的UAD插件,包括Teletronix?、Fairchild?、Pultec?、Helios
    發(fā)表于 01-24 08:59

    RT-Thread Nano添加shell的步驟有哪些

    文章目錄前言一、添加Shell包二、使用步驟1.引入庫(kù)2.讀入數(shù)據(jù)總結(jié)前言今天來(lái)添加Shell,這樣就可以使用控制臺(tái)對(duì)單片機(jī)進(jìn)行控制了。一、
    發(fā)表于 02-22 07:06

    怎么解決Ambiq Apollo3移植鏈接腳本出錯(cuò)的問題呢?

    移植Apollo3過程中發(fā)現(xiàn)官方工程都使用專用的sct腳本,寫法跟MDK默認(rèn)生成的格式不同。不知道怎么修改內(nèi)存映射關(guān)系。默認(rèn)MDK生成的是 RW_IRAM1則是定義 #define
    發(fā)表于 03-14 10:43

    庫(kù)文件添加步驟

    Protel庫(kù)文件添加詳細(xì)步驟。
    發(fā)表于 11-04 11:15 ?0次下載

    如何添加NGC文件到工程目錄中的步驟教程

    如何添加NGC文件到工程目錄中的步驟教程,具體的跟隨小編一起來(lái)了解一下。
    的頭像 發(fā)表于 07-12 03:59 ?1.4w次閱讀
    如何<b class='flag-5'>添加</b>NGC文件到工程目錄中的<b class='flag-5'>步驟</b>教程

    淺析Apollo 2.5限定場(chǎng)景低成本技術(shù)方案

    本文來(lái)自Apollo團(tuán)隊(duì)的資深架構(gòu)師-朱帆老師對(duì)Apollo 2.5自動(dòng)駕駛規(guī)劃控制系統(tǒng)進(jìn)行了詳細(xì)介紹。
    的頭像 發(fā)表于 07-19 09:56 ?3434次閱讀

    apollo系列之apollo2 mcu開發(fā)(基礎(chǔ)篇)之1.1-apollo2 mcu簡(jiǎn)介

    更多內(nèi)容在:apollo系列匯總Apollo2 mcu的架構(gòu)
    發(fā)表于 10-25 17:36 ?20次下載
    <b class='flag-5'>apollo</b>系列之<b class='flag-5'>apollo</b>2 mcu開發(fā)(基礎(chǔ)篇)之1.1-<b class='flag-5'>apollo</b>2 mcu簡(jiǎn)介

    EEMD方法的原理與算法實(shí)現(xiàn)步驟

    電子發(fā)燒友網(wǎng)站提供《EEMD方法的原理與算法實(shí)現(xiàn)步驟.pdf》資料免費(fèi)下載
    發(fā)表于 10-23 11:44 ?0次下載
    EEMD方法的原理與<b class='flag-5'>算法</b>實(shí)現(xiàn)<b class='flag-5'>步驟</b>
    RM新时代网站-首页