1. 程式人生 > 其它 >ROS2學習之旅(19)——學會使用ros2doctor

ROS2學習之旅(19)——學會使用ros2doctor

學會使用ros2 doctor...

當ROS 2程式沒有按預期執行時,可以使用ros2doctor工具檢查其設定。

ros2doctor檢查ROS 2的所有方面,包括平臺、版本、網路、環境、執行系統等,並警告可能出現的錯誤和問題原因。

ros2doctorros2cli包的一部分。

1.檢查設定

使用ros2doctor整體檢查一般的ROS 2設定。首先,在一個新的終端中source ROS 2,然後輸入命令:

ros2 doctor

這將檢查所有的安裝模組並返回警告和錯誤。

如果ROS 2的設定是沒有問題,會看到類似這樣的訊息:

All <n> checks passed

然而,收到一些警告是很正常的。使用者警告並不意味著設定是不可用的,更有可能的是,這只是一種指示,表明某些東西的配置方式並不理想。

如果收到一個警告,它看起來像這樣:

<path>: <line>: UserWarning: <message>

例如,如果使用的是不穩定的ROS 2 版本,ros2doctor會發現這個警告:

UserWarning: Distribution <distro> is not fully supported or tested. To get more consistent features, download a stable version at https://index.ros.org/doc/ros2/Installation/

如果ros2doctor

只在系統中發現警告,仍然會收到All <n> checks passed訊息。

大多數檢查被歸類為警告,而不是錯誤。這主要取決於使用者,來決定ros2doctor返回的反饋的重要性。如果它確實在安裝中發現一個罕見的錯誤,由UserWarning: ERROR:指示,檢查被認為失敗。

將看到類似於下面問題反饋列表的訊息:

1/3 checks failed

Failed modules:  network

一個錯誤表明系統缺少對ROS 2至關重要的設定或功能。應該解決錯誤,以確保系統正常執行。

2.檢查系統

還可以檢查正在執行的ROS 2系統,以確定問題的可能原因。為了檢視ros2doctor

在一個正在執行的系統上的工作情況,執行turtlesim

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

執行ros2doctor:

UserWarning: Publisher without subscriber detected on /turtle1/color_sensor.
UserWarning: Publisher without subscriber detected on /turtle1/pose.

它似乎認為/turtlesim節點向兩個未訂閱的主題釋出資料,而ros2doctor認為這可能會導致問題。

如果執行命令顯示/color_sensor/pose主題,這些警告將消失,因為釋出者將擁有訂閱者。

可以在turtlesim執行時開啟兩個新終端,終端中執行以下命令:

ros2 topic echo /turtle1/color_sensor
ros2 topic echo /turtle1/pose

然後再次在其終端中執行ros2doctorpublisher without subscriber警告將消失。(確保在執行echo的終端中輸入Ctrl+C)

在具有許多節點的複雜系統中,ros2doctor對於識別通訊問題的可能原因非常有用。

3.得到完整的報告

雖然ros2doctor可以知道有關網路、系統等的警告,但使用--report引數執行它將提供更多細節,以幫助分析問題。

如果得到一個關於網路設定的警告,並且希望確切地找出是配置的哪一部分導致了該警告,此時可以使用--report

當需要ROS 2的幫助時,它也非常有用。可以將報告的相關部分複製並貼上,以便幫助的人能夠更好地瞭解環境並提供更好的幫助。

要獲取完整的報告,在終端中輸入以下命令:

ros2 doctor --report

它將返回一個資訊列表,其中分為五組:

NETWORK CONFIGURATION
...

PLATFORM INFORMATION
...

RMW MIDDLEWARE
...

ROS 2 INFORMATION
...

TOPIC LIST
...

可以對照執行ros2 doctor得到的警告來交叉檢查這裡的資訊。例如,如果ros2doctor返回了警告:not fully supported or tested,可以檢視報告的ROS 2 INFORMATION部分:

distribution name      : <distro>
distribution type      : ros2
distribution status    : prerelease
release platforms      : {'<platform>': ['<version>']}

可以看到distribution statusprerelease,這解釋了為什麼它不被完全支援。

4.總結

ros2doctor會通知ROS 2安裝和執行系統中的問題,可以使用--report引數更深入地瞭解這些警告背後的資訊。

請記住,ros2doctor不是一個除錯工具,它不會幫助解決程式碼中的錯誤或系統的實現方面的錯誤。

如果給您帶來幫助,希望能給點個關注,以後還會陸續更新有關機器人的內容,點個關注不迷路~歡迎大家一起交流學習。
都看到這了,點個推薦再走吧~
未經允許,禁止轉載。