天天看點

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

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

學會使用ros2 doctor...

當ROS 2程式沒有按預期運作時,可以使用

ros2doctor

工具檢查其設定。

ros2doctor

檢查ROS 2的所有方面,包括平台、版本、網絡、環境、運作系統等,并警告可能出現的錯誤和問題原因。

ros2doctor

ros2cli

包的一部分。

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
           

然後再次在其終端中運作

ros2doctor

publisher 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 status

prerelease

,這解釋了為什麼它不被完全支援。

4.總結