當前位置: 華文問答 > 科學

ROS 2入門教程——2.11 ros2doctor入門

2021-03-07科學

2.11.1 目標

使用ros2doctor工具確定ROS 2安裝設定中的問題。

2.11.2 教程級別

入門

2.11.3 學習時間

10分鐘

2.11.4 內容

2.11.4.1 背景知識

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

工具ros2doctor可以檢查ROS 2的各個方面,包括平台、版本、網絡、環境、正在執行的系統等,並警告您可能的錯誤和產生問題的原因。

2.11.4.2 前提條件

ros2doctor工具僅在ROS 2 Eloquent和更高的發行版中可以使用。

ros2doctor工具是ros2cli軟件包的一部份。只要您安裝了ros2cli(任何常規安裝都應該已經安裝好了ros2cli),就可以使用ros2doctor工具。

本教程使用turtlesim來展示一些範例。

2.11.4.3 任務

(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,它的各個節點之間都在積極地進行通訊。

透過開啟一個新終端、source ROS 2安裝檔、並輸入以下命令來啟動該系統:

ros2 run turtlesim turtlesim_node

開啟另一個終端並source ROS 2安裝檔來執行teleop控制節點:

ros2 run turtlesim turtle_teleop_key

現在在它自己的終端中再次執行ros2doctor。您將會看到上次執行ros2doctor時遇到的在安裝設定上的警告和錯誤(如果有的話)。後面會跟著與Turtlesim系統本身相關的一些新的警告訊息:

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

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

似乎/turtlesim節點在將數據釋出到兩個尚未訂閱的話題上,ros2doctor工具認為這可能會出現問題。

如果執行命令來回顯(echo)/color_sensor和/pose話題,則這些警告將會消失,因為釋出者將會擁有訂閱者。

您可以在turtlesim仍在執行時開啟兩個新終端、在每個終端中source ROS 2安裝檔並分別執行以下命令來嘗試此操作:

ros2 topic echo /turtle1/color_sensor

ros2 topic echo /turtle1/pose

然後再次在其終端中執行ros2doctor。「沒有訂閱者的釋出者」警告訊息將會消失。(請確保在執行echo的兩個終端中按下Ctrl + C鍵來停止執行)。

現在嘗試結束turtlesim視窗或者結束Teleop並再次執行ros2doctor。 由於系統中的一個節點不可用,您將會看到更多針對不同話題的「沒有訂閱者的釋出者」或者「沒有釋出者的訂閱者」的警告訊息。

在一個有許多節點的復雜系統中,ros2doctor工具對於確定造成通訊問題的可能原因將會非常有用。

(3)獲得一個完整的報告

盡管ros2doctor工具會讓您知道有關網絡、系統等的警告訊息,但使用--report參數執行它會為您提供更多詳細資訊,以幫助您分析問題。

如果收到有關您的網絡設定的警告訊息,並且想確切地找出網絡配置中是哪個部份導致了該警告訊息,則可能要使用--report參數。

當您需要開啟支持通知單以獲取ROS 2幫助時,這也會非常有用。您可以將報告的相關部份復制並貼上到該通知單中,以便幫助您的人可以更好地了解您的環境並提供更好的幫助。

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

ros2 doctor --report

這會返回歸為五類的一個資訊列表:

NETWORK CONFIGURATION

...

PLATFORM INFORMATION

...

RMW MIDDLEWARE

...

ROS 2 INFORMATION

...

TOPIC LIST

...

您可以對照從執行ros2 doctor收到的警告來交叉檢查此處的資訊。 例如,如果ros2doctor返回您的發行版「未完全支持或未經過測試」的警告訊息(如前所述),則可以檢視報告的ROS 2 INFORMATION部份:

distribution name : <distro>

distribution type : ros2

distribution status : prerelease

release platforms : {'<platform>': ['<version>']}

在這裏您可以看到「發行狀態」為「預發行」,這就解釋了為什麽不完全支持該發行版。

2.11.5 小結

ros2doctor工具會通知您ROS 2安裝設定和執行系統中的問題。您可以使用--report參數更深入地了解這些警告訊息背後的資訊。

請記住,ros2doctor工具不是偵錯工具;它不會幫助您解決程式碼或系統實作方面的錯誤。

2.11.6 相關內容

ros2doctor工具的讀我檔案(README)會告訴您更多有關不同參數的資訊。您可能還想看看ros2doctor的儲存庫,因為它相當適合初學者,並且是開始進行貢獻的好地方。

2.11.7 下一步

至此您已經完成了所有入門級教程!

*英語原文地址:http:// docs.ros.org/en/foxy/Tu torials/Getting-Started-With-Ros2doctor.html#ros2doctor