Raspberry PIによるROS:遅い流動性能のコア問題の調査
7330 ワード
ロボットを動かすことは、ロボットがその環境を点検して、動くのを可能にする視覚センサーを加えることに、典型的につながるでしょう.視覚センサは、距離測定のための超音波センサーまたはレーザースキャナ、360度のレーザー走査イメージのためのライダー、RGBイメージを提供するカメラと複雑な点雲を提供するセンサーを含みます.ROSはすべてのこれらのセンサーをサポートしています:RVIZとGazeboの正しいプラグインを添付し、ハードウェアセンサーを起動し、正しいトピックを発行し、そのデータを購読する.
私のロボットプロジェクトでは、WiFi経由で接続されたモバイルロボットから、イーサネット経由で接続されたLinuxワークステーションにストリーム画像データを送ることが目標です.私の選択のカメラは、インテルのRealSense D 435です.一度rosのソフトウェアと設定が行われ、トピックの画像のストリーミング
この問題は、2つ以上の問題を調査して、見つけて、解決するために私を連れて行きました.に沿って、D 435カメラ、イメージとROSでポイントクラウドの設定の使用方法を最適化について多くを学び、ネットワークパフォーマンス.
注意:技術的な環境はUbuntu 20.04です.
この記事はもともと私のブログに登場admantium.com .
この記事の文脈を詳細にするために、私は私のロボットプロジェクトで使用している具体的なハードウェアとソフトウェアです. 移動ロボット ラズベリーPI 4 B Ubuntu 20.04サーバLTS ( headless ) ROSノロジー1.15.11 Linuxワークステーション インテルセレロンN 3450@4 x Ubuntu 20.04フォーカル ROSノロジー1.15.11 移動ロボットについてもRealsense SDK とRealsense ROS package -異なるバージョンでは、パフォーマンスが違います.詳細は次のセクションで説明します.
RealSenseカメラSDK 2.47とRealSense Ross 1 2.3.2では、カメラのノードの起動とストリームのイメージを得ることができました.移動ロボットノードではROSノードを起動し、Linuxのワークステーションで受信したメッセージの数をコマンドで測定した
ベースライン、次に、これは
ここから、私はRSD Realsenseノード、カメラSDとRealSense ROSパッケージの異なるバージョンのために異なる構成パラメータを組織的に試みました.これらの測定結果を次のセクションで説明した.
最初の試みでは、SDKとライブラリのこれらのバージョンを使用しました.
パラメータ
深さと色幅
設定されない
設定されない
640年
640年
640年
640年
640年
640年
深さと高さ
設定されない
設定されない
480
480
480
480
480
480
デプスヘ
設定されない
設定されない
5
5
5
6
6
6
カラーリングFPS
設定されない
設定されない
5
5
5
6
6
6
リセットする
真
真
真
真
真
真
真
有効な同期
真
深さ
フィルタ
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
河川
任意
色
任意
任意
色
色
色
色
OrderedCard PC
はい
トピックHz受信
/色/imageRAW RAW
6.5
データなし
1.5
1.5
データなし
6
6
6
/深さ/色/点
データなし
データなし
データなし
データなし
データなし
3
1
3
/深さ/イメージrect
7
6.5
データなし
データなし
6
6
6
6
最初の結果はどんな流れのためにもストリームが7 fpsよりよく得ることができないことを示しました、そして、6 fpsに特に点雲データをセットするときだけ、どんなデータでも受信されました.
だから私は別のを開きましたGithub issue about ROS1 performance と実験を続けた.
他の問題では、RealSense SDKを格下げすることでパフォーマンスを向上させることができました.私はross 1とross 2の両方のために格下げSDKバージョンを試みました.
次の試みではSDKを格下げしました.
パラメータ
深さ/幅
640年
640年
640年
深さ/高さ
480
480
480
デプスヘ
5
30
30
カラーリングFPS
5
30
30
リセットする
偽
真
真
有効な同期
偽
偽
偽
深さ
偽
真
真
フィルタ
ポイントクラウド
-
-
河川
トピックHz送信
カラーイマージュ
17
15
28
26
深さ/色/点
データなし
12
16
0
画像の奥行き
30
25
17
カメラ/アライメント・デプス
データなし
データなし
8
15
話題Hz受信機
カラーイマージュ
6
6
11
10
深さ/色/点
2
2
3
画像の奥行き
9
9
5
5
これらの結果はトピックの安定28 fpsを示す
rok 2の次の測定もsdkのダウングレード版で行った.
パラメータ
深さ/幅
640年
深さ/高さ
480
デプスヘ
カラーリングFPS
リセットする
有効な同期
深さ
フィルタ
ポイントクラウド
河川
インフラ1
障害者
インフラ2
障害者
トピックHz送信
カラーイマージュ
19
16
16
深さ/色/点
データなし
データなし
13
画像の奥行き
30
30
28
話題Hz受信機
カラーイマージュ
2.5
2
2
深さ/色/点
データなし
1
画像の奥行き
4.5
4.5
4
イメージのための19 fpsの最大値と点雲のための13 -それはROS 1より悪いです.また、レシーバー側の厳しいframerate低下は、ナビゲーションの可視化のためにどんな使用でも妨げます.
これらの結果を踏まえて,ros 1とros 2性能についてインターネット上で一般的な探索を行った.これは、パフォーマンスのギャップを探す場所について一般的な感情を提供する必要があります.調査する潜在的な問題のいくつかは以下の通りです. 受信機の適切なバッファサイズとキューサイズの設定 トピックが複数の購読者を持つ場合、トピック出版率が減少する 以前のバージョンはheavy constraints when parsing Python messages , これは非常にsloppyメッセージをもたらしました、しかし、これは現在のROS 2 ROS 2ではmulticasting can cause problems with specific routers : 全体的に、これらの問題は、私の地元の無線LANをチェックしてください.ラズベリーパイ4自体から、私は単純になりましたonline speedtest .
WLAN接続を使用する
そして、ここから、私は私の調査のために全く新しい方向をとりました:私のラズベリーパイのWLAN速度を最適化して.そして、これは別の記事の話です.
ロボットのナビゲーションには視覚センサが不可欠である.多くの利用可能なデータフォーマットの中で、この記事はトピックを調査しました
私のロボットプロジェクトでは、WiFi経由で接続されたモバイルロボットから、イーサネット経由で接続されたLinuxワークステーションにストリーム画像データを送ることが目標です.私の選択のカメラは、インテルのRealSense D 435です.一度rosのソフトウェアと設定が行われ、トピックの画像のストリーミング
/camera/color/image_raw
とポイントクラウドデータの/camera/depth/color/points
開始できます.しかし、私は悪いパフォーマンスに驚きました.画像は約17 fpsでロボットに公開されたが,ワークステーションでは6 fpsであった.そして、ポイントクラウドデータのために、それは12 fpsから3 fpsまで落ちました.これは、ロボットの環境をリアルタイムで見て、十分なナビゲーションのために十分に高速ではありません.この問題は、2つ以上の問題を調査して、見つけて、解決するために私を連れて行きました.に沿って、D 435カメラ、イメージとROSでポイントクラウドの設定の使用方法を最適化について多くを学び、ネットワークパフォーマンス.
注意:技術的な環境はUbuntu 20.04です.
この記事はもともと私のブログに登場admantium.com .
ハードウェアとソフトウェア概要
この記事の文脈を詳細にするために、私は私のロボットプロジェクトで使用している具体的なハードウェアとソフトウェアです.
ベースラインパフォーマンス
RealSenseカメラSDK 2.47とRealSense Ross 1 2.3.2では、カメラのノードの起動とストリームのイメージを得ることができました.移動ロボットノードではROSノードを起動し、Linuxのワークステーションで受信したメッセージの数をコマンドで測定した
ros topic hz
.ベースライン、次に、これは
/camera/color/image_raw
と3のFPS/camera/depth/color/points
.ここから、私はRSD Realsenseノード、カメラSDとRealSense ROSパッケージの異なるバージョンのために異なる構成パラメータを組織的に試みました.これらの測定結果を次のセクションで説明した.
ROS 1 : ROSカメラのパラメータ設定
最初の試みでは、SDKとライブラリのこれらのバージョンを使用しました.
Realsense SDK v2.47
Realsense ROS 2.3.2
ROSノードの異なるパラメータを設定すると、これらの結果が得られます.パラメータ
深さと色幅
設定されない
設定されない
640年
640年
640年
640年
640年
640年
深さと高さ
設定されない
設定されない
480
480
480
480
480
480
デプスヘ
設定されない
設定されない
5
5
5
6
6
6
カラーリングFPS
設定されない
設定されない
5
5
5
6
6
6
リセットする
真
真
真
真
真
真
真
有効な同期
真
深さ
フィルタ
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
ポイントクラウド
河川
任意
色
任意
任意
色
色
色
色
OrderedCard PC
はい
トピックHz受信
/色/imageRAW RAW
6.5
データなし
1.5
1.5
データなし
6
6
6
/深さ/色/点
データなし
データなし
データなし
データなし
データなし
3
1
3
/深さ/イメージrect
7
6.5
データなし
データなし
6
6
6
6
最初の結果はどんな流れのためにもストリームが7 fpsよりよく得ることができないことを示しました、そして、6 fpsに特に点雲データをセットするときだけ、どんなデータでも受信されました.
だから私は別のを開きましたGithub issue about ROS1 performance と実験を続けた.
他の問題では、RealSense SDKを格下げすることでパフォーマンスを向上させることができました.私はross 1とross 2の両方のために格下げSDKバージョンを試みました.
ROS 1:RealSense SDKの減少
次の試みではSDKを格下げしました.
Realsense SDK v2.41
Realsense Ros 2.2.21
今回は、送信側のトピック周波数も測定しました.パラメータ
深さ/幅
640年
640年
640年
深さ/高さ
480
480
480
デプスヘ
5
30
30
カラーリングFPS
5
30
30
リセットする
偽
真
真
有効な同期
偽
偽
偽
深さ
偽
真
真
フィルタ
ポイントクラウド
-
-
河川
トピックHz送信
カラーイマージュ
17
15
28
26
深さ/色/点
データなし
12
16
0
画像の奥行き
30
25
17
カメラ/アライメント・デプス
データなし
データなし
8
15
話題Hz受信機
カラーイマージュ
6
6
11
10
深さ/色/点
2
2
3
画像の奥行き
9
9
5
5
これらの結果はトピックの安定28 fpsを示す
/camera/color/image_raw
と16 fps/camera/depth/color/points
可能です-送信側に!しかし、このデータを受信し、イーサネットを介して接続されたワークステーションは、これらのフレームの約1/3しか受信しない.ROS 2:RealSense SDKの減少
rok 2の次の測定もsdkのダウングレード版で行った.
Realsense SDK v2.41
Realsense Ros 3.13
これらは私が使用したパラメータと結果です.パラメータ
深さ/幅
640年
深さ/高さ
480
デプスヘ
カラーリングFPS
リセットする
有効な同期
深さ
フィルタ
ポイントクラウド
河川
インフラ1
障害者
インフラ2
障害者
トピックHz送信
カラーイマージュ
19
16
16
深さ/色/点
データなし
データなし
13
画像の奥行き
30
30
28
話題Hz受信機
カラーイマージュ
2.5
2
2
深さ/色/点
データなし
1
画像の奥行き
4.5
4.5
4
イメージのための19 fpsの最大値と点雲のための13 -それはROS 1より悪いです.また、レシーバー側の厳しいframerate低下は、ナビゲーションの可視化のためにどんな使用でも妨げます.
ROS性能考察
これらの結果を踏まえて,ros 1とros 2性能についてインターネット上で一般的な探索を行った.これは、パフォーマンスのギャップを探す場所について一般的な感情を提供する必要があります.調査する潜在的な問題のいくつかは以下の通りです.
WLAN接続を使用する
Testing download speed................................................................................
Download: 4.22 Mbit/s
Testing upload speed......................................................................................................
Upload: 6.23 Mbit/s
イーサネットケーブルを使うTesting download speed................................................................................
Download: 106.04 Mbit/s
Testing upload speed......................................................................................................
Upload: 42.32 Mbit/s
私は驚いた!約6 MBのアップロード速度制限は厳しいパフォーマンス低下を説明することができます:イメージは十分に速く送られません.画像あたり1 MBを想定して、受信側で30 Hzのイメージ話題周波数を得ることは、少なくとも30 Mbsのアップロード速度を意味するでしょう.明らかに、これは私の現在の無線LAN速度で可能ではありません.そして、ここから、私は私の調査のために全く新しい方向をとりました:私のラズベリーパイのWLAN速度を最適化して.そして、これは別の記事の話です.
結論
ロボットのナビゲーションには視覚センサが不可欠である.多くの利用可能なデータフォーマットの中で、この記事はトピックを調査しました
/camera/color/image_raw
and /camera/depth/color/points
, これは、生の画像データと深さ情報のポイント雲の日付です.特定のセットアップ- ReSearch D 435カメラによるRaspberry PI 4は、WiFi経由でLinuxワークステーションに接続しました-レシーバー側のこれらの話題ならば、厳しいパフォーマンス低下を示しました.Ross 1とROS 2の両方を使用してRealSense SDKの異なるバージョンを体系的に試してみると、RealSenseのノードの起動パラメータを試してみると、送信者のための出版物を改善することができました.しかし、受信機はRaw 1に対して約11 fps、PointCloud用の3 FPSでキャップされました.最後に、私のラズベリーPi 4の生のアップロード速度を測定しました.私の前の記事でカバーされたそれを改善する方法Improving Image Streaming Performance .Reference
この問題について(Raspberry PIによるROS:遅い流動性能のコア問題の調査), 我々は、より多くの情報をここで見つけました https://dev.to/admantium/ros-with-raspberry-pi-investigating-the-core-issue-of-slow-streaming-performance-1b9kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol