您好,登錄后才能下訂單哦!
今天小編給大家分享一下apollo Can總線與定位模塊怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Can總線接收和執行來自控制模塊的命令,收集汽車底盤的狀態信息并反饋給控制模塊。
控制命令
底盤狀態
底盤各部件消息狀態
Canbus模塊主要包括以下幾個部分:
車輛:車輛本身,包括車輛控制器和消息管理器
CAN 客戶端— CAN 客戶端已被移動到/modules/drivers/canbus 目錄下,因為它已經被使用canbus 協議的不同傳感器共享。
通過繼承CanClient類的方式,您可以在文件夾can_client中實現自己的CAN 客戶端。
注意:
不要忘了在‘CanClientFactory’(Can客戶端工廠)類中注冊您自己的CAN 客戶端。
在文件夾vehicle下,您也可以通過繼承VehicleController
MessageManager類的方式實現自己的車輛控制器和消息管理器。
注意:
不要忘了在`VehicleFactory`類中注冊您的車輛。
該模塊提供定位服務。定位模塊中提供了以下兩種方法:
基于 RTK(Real Time Kinematic,實時動態定位)的方法,該方法結合GPS和IMU(慣性測量單元)信息。
多傳感器融合方法,該方法采用GPS,IMU和激光雷達的信息。
在基于RTK 的定位方法中,有兩個輸入:
GPS – 全球地理信息定位系統
IMU – 慣性測量單元
在多傳感器融合的定位方法中,由如下三個輸入:
GPS – 全球地理信息定位系統
IMU – 慣性測量單元
LiDAR – 激光雷達傳感器
輸出為一個由Protobuf 格式定義的對象實例LocalizationEstimate,該實例可在localization/proto/localization.proto 文件中查找到。
當前,基于RTK的定位方法由RTKLocalization類實現。如果您正在實現一個新的定位算法,例如FooLocalization,您可能需要執行以下步驟:
1. 在 proto/localization_config.
proto文件中, 在LocalizationType 中添加一個值為FOO的枚舉類型。
2. 切換到 modules/localization 目錄, 然后創建一個名為 foo 的文件夾。在 foo 文件夾中,參照 rtk目錄下RTKLocalization 類的代碼實現自己的定位算法類FooLocalization。FooLocalization 必須是LocalizationBase 的子類。另外,參照 rtk/BUILD文件創建一個名為 Also foo/BUILD 的文件。
3. 您需要在函數Localization::RegisterLocalizationMethods()中注冊您的新類FooLocalization,該函數在文件 localization.cc 中實現。您可以在該函數的最后插入以下代碼來注冊自己添加的類:
localization_factory_.Register(LocalizationConfig::FOO, []()->LocalizationBase* { return new FooLocalization(); });
4.確保您的代碼編譯時包含定義FooLocalization 類的頭文件FooLocalization。
5. 現在您可以回到apollo的根目錄,使用bash apollo.sh build命令編譯您的代碼。
以上就是“apollo Can總線與定位模塊怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。