ROS2學習筆記之了解ros2doctor篇

2021-10-03 02:24:16 字數 3553 閱讀 7147

總結學習目標:學會使用ros2doctor工具分析出現的問題

當ros2沒有安裝我們預期的設定執行的時候,我們可以用ros2doctor工具檢查ros2的設定。

ros2doctor對ros2全面的檢查,包括平台、版本、連線情況、環境、執行的系統等等。然後給出可能的錯誤和原因。

ros2doctor是乙個還在不斷開發中的工具。功能可能不是很穩定,會頻繁更新。官方鼓勵使用者發帖對存在的問題和改進提供建議.

ros2doctorros2cli包的一部分。只要我們安裝了ros2cli,我們就能夠使用ros2doctor,通常我們安裝ros2的時候就安裝了這個包

首先讓我們用ros2doctor對ros2的整體設定進行檢查。首先source一下,然後開啟終端執行命令

ros2 doctor
這將對所有設定模組進行檢查,並返回警告和錯誤。

如果我們的設定沒什麼問題我們會收到下面這樣一條訊息。

all  checks passed
但是我們也有可能會收到警告的訊息。當我們收到一條userwarning警告,並不是說我們的設定不可用,它更像是一種暗示,說明某些配置不太理想。

如果我們收到了一條警告的訊息,它可能像下面這個樣子。

: : userwarning: 
例如當我們使用乙個ros2不太穩定的版本的時候ros2doctor就會發出一條警告

userwarning: distribution  is not fully supported or tested. to get more consistent features, download a stable version at
如果ros2doctor只是在我們的系統中發現了警告,還是會顯示all checks passed的訊息

大多數檢查都是進行警告而不是報錯。主要還是取決於使用者自己來決定ros2doctor反饋的重要性。如果在我們的設定當中找到乙個比較嚴重的錯誤,就會顯示userwarning: error:,並且認為檢查失敗。

同時我們會收到類似於這樣一條的訊息。

1/3 checks failed

failed modules: network

錯誤表示系統缺少對ros2非常重要的重要設定或功能,我們應該解決錯誤以確保系統正常執行。

我們還可以對執行中的ros2系統進行檢查,以便找出問題可能出現的原因。為了讓我們觀察ros2doctor如何在乙個正在執行的ros上工作,我們執行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就認為這可能有問題。

如果我們用兩個命令去列印這兩個話題的訊息這個警告就會消失。

我們開啟兩個終端執行下面命令。

ros2 topic echo /turtle1/color_sensor
ros2 topic echo /turtle1/pose
我們再次執行ros2doctor會發現這兩個警告就沒有了。我們ctrl + c依次關掉這兩個終端,再次執行ros2doctor,我們會看到這兩個警告又出現了。

我們ctrl + c關掉鍵盤控制的節點或者海龜介面的節點,我們再次執行ros2doctor我們會發現出現了更多的publisher without subscriber或者subscriber without publisher的警告。

在乙個複雜的系統中,如果有很多的節點,ros2doctor對於診斷連線問題就比較有用。

通過執行ros2doctor我們可以得到來自節點連線情況、系統情況等等的警告,我們加上--report引數還可以獲得更詳細的資訊,方便我們分析問題。

當我們收到了乙個關於通訊方面的警告,而且我們想知道是哪部分引起的這個警告我們就可以使用--report引數

當我們要發帖進行求助的時候,我們可以賦值貼上報告中相關的部分在帖子裡面,這樣別人就可以更好的了解你電腦當前的環境,提供更好的幫助。

我們用下面的命令執行就可以得到乙個完整的報告。

ros2 doctor --report
命令會返回乙個由五部分組成的列表

network configuration

...platform information

...rmw middleware

...ros 2 information

...topic list

...

我們可以將這些訊息和ros2 doctor返回的警告對比來看。

例如,假設ros2 doctor返回的警告是我們使用的ros版本是沒有完全支援或測試的版本,我們就可以檢視報告中ros 2 information關於ros詳細資訊的部分。

假設這部分的如下

distribution name      :

distribution type

: ros2

distribution status : prerelease

release platforms :

我們可看到我們版本的發行狀態是預發行,所以我們就會得到這個警告。

ros2doctor會告訴我們ros2在安裝和執行過程中的問題,我們可以使用--report引數更深入地了解這些警告背後的資訊。

但是請記住,ros2doctor它不是除錯工具,它不會幫助解決**或系統實現方面的錯誤。

ROS2官方教程 ROS2 概念概覽

原文 ros是乙個基於匿名訊息發布 publish 或訂閱 subscribe 機制的中間層,這種機制可以幫助訊息能夠在不同的ros程序之間傳輸。在ros2系統中的核心是ros圖 ros graph ros圖指的是乙個ros系統中的節點網路以及它們之間通訊時的聯絡。在ros圖中,節點是必要的組成部分...

ROS2學習 建立自己的ROS2功能包

建立資料夾 mkdir p ros2 ws src cd ros2 ws colcon build1 建立功能包 建立乙個pubsub的包 ros2 pkg create build type ament cmake cpp pubsub改xml檔案裡的郵箱 2 寫發布節點 建立ros2 talke...

ROS2學習筆記之rosbag篇

總結後續 學習目標 記錄發布在話題上的訊息,方便我們後期檢視 ros2 bag是乙個命令列工具用於記錄話題上發布的訊息。他可以儲存任意數量話題上的訊息內容。我們可以通過資料回放實現實驗場景的重現。同時這也是和他人分享資料的好方法。我們首先安裝ros2 bag sudo apt install ros...