動態

詳情 返回 返回

Ros2_control淺析——一個機器人開發通用框架的結構(1) - 動態 詳情

引言:

最近在開發一個送餐機器人,但是在電機和ros2系統交互時犯了難,不知道該怎麼寫才能讓系統架構清晰一些,後來瞭解到ros2社區有一個規範的開發框架,所以我會結合個人理解來分析一下這個架構,算是我的學習筆記吧,希望能夠對您有幫助!

ros2_control是什麼

ros2_control 是一個硬件無關的控制框架,用於抽象第三方解決方案(如 MoveIt2 和 Nav2 系統)的硬件和低級控制,它提供了一些接口來實現標準化的硬件抽象和控制流程。

有點像是cpp的庫文件,讓上層系統不必關心過多細節。它通過硬件接口插件與真實設備通信,並通過控制器將硬件狀態發佈為ROS2話題或將ROS2指令傳遞給硬件。

從而讓上層系統不必關心底層硬件的實現,只需要使用ros2_control提供的接口,從而讓上層的應用去調用來實現實際應用中的功能。

官方文檔示例

這張圖就展示了這個框架的核心思想——抽象硬件接口,方便上層軟件的使用,實現軟硬件解耦

然後是官網文檔中的舉例圖,
可以看到客户端可以不用去考慮硬件方面的資源開銷,從而最小化在實際客户端應用程序上花費的資源。可以直接拓展自己的控制器,或者通過自定義的第三方軟件進行控制操作。

這個框架的源代碼可以在以下兩個倉庫中找到:

https://github.com/ros-controls/ros2_control

https://github.com/ros-controls/ros2_controllers

這兩個倉庫裏面包含了一些控制器的示例,可以本地克隆下來嘗試一下。

官方文檔給出的ros2_control框架的架構:

可以看到明顯的分成了上下兩個部分,兩個部分之間連接處是Controller Manager(控制器管理器)和Resource Manager(資源管理器),下面來解析一下圖中的概念。

架構解析:

控制器管理器(Controller Manager )

可以看作是用户操作硬件的“調度中心”,它知道控制器需要的接口,也知道硬件提供的接口。它管理控制器及其所需接口,而且通過資源管理器訪問硬件組件的接口,“承上啓下”,可以這樣理解。

用户或者上層系統在這個框架下無法直接操作控制器,通過Ros2提供的服務(services)和控制器管理器交互。

控制器管理器支持自定義的集成,原生的控制器管理器是不帶執行器的,一個節點想要處理回調需要執行器(Executor)來運行。比如一個節點中使用rclcpp::spin(),本質上就是創建了一個默認的執行器,這樣就可以觸發節點對應的回調函數。將控制器管理器嵌入到你的執行器中後,就可以在你自己的節點中可以同時啓動控制器管理器的服務,即個人節點和CM在同一個進程下運行,從而避免進程間的通信開銷。

資源管理器(Resource Manager 簡稱RM)

資源管理器所做的事情是將物理硬件及其驅動程序(一個完整可調用的硬件模組)抽象化成硬件組件(Hardware Components),將硬件組件以插件的形式嵌入到框架之中,並管理它們的生命週期和組件的狀態

硬件組件(Hardware Components)

硬件組件是物理硬件的抽象化表示,主要分為以下三種類型:System、Actuator、Sensor。

System(系統組件):相當於一個組裝好的部分,控制多個自由度(比如機械臂,靈巧手),細節在內部處理,ros2_control只關心關節位置和控制命令。
必須實現read()和write()操作(因為要明確狀態和下達控制指令)。

Actuator(執行器組件):通常對應一個關節,比如一個電機或者一個推杆、閥門。
每個執行器之間獨立通信,通過執行器之間的組合構建出高自由度的系統。
必須實現write(),read()是可選的。

Sensor(傳感器組件):對應感知類的設備,比如IMU、攝像頭、編碼器,這些傳感器類型的硬件,通常獨立於執行器組件,因為獲取到的外接信息的處理往往需要單獨處理。
只有read(),對於感知設備讀取即可。

本篇文章的參考來源:

ros2_control官方文檔:https://control.ros.org/master/doc/getting_started/getting_started.html#architecture

《通過控制器訪問硬件的設計文檔》:https://github.com/ros-controls/roadmap/blob/master/design_drafts/hardware_access.md

ROSCon 2025 Workshop提供的ros2_control有關的幻燈片下載:https://control.ros.org/master/_downloads/facbcb9c9cc446bc58379564f481ee37/ROSCon2025-Workshop_Fun_with_Robot_Drivers.pdf

Add a new 評論

Some HTML is okay.