【RaspberryPi】ros で usb カメラを扱ってみる

こんにちは!今回は、Raspberry Pi(ラズベリーパイ)とROS 2環境を使って、USBカメラの映像データを取得・処理する方法についてご紹介します。

ロボット開発や画像認識の第一歩として、カメラトピックを正しく処理できる環境を作るのは非常に重要です。今回はDockerコンテナ上で環境を構築し、Pythonノード(OpenCV)でカメラ映像を表示させるまでの流れをまとめました。

主な開発・実装の流れ

今回の環境構築およびノード作成の手順は大きく分けて以下の3ステップです。

  • 1. Dockerコンテナの構築と起動: GUI表示(X11)やカメラデバイス(/dev/video0等)へのアクセス権限を付与してDockerコンテナを立ち上げます。
  • 2. サブスクライバーノードの作成: ROS 2のPythonパッケージ(ament_python)を作成し、/image_raw トピックを受け取るノードを記述します。
  • 3. cv_bridgeとOpenCVによる画像表示: 取得したROSの画像メッセージを cv_bridge でOpenCV形式(bgr8)に変換し、cv2.imshow() でリアルタイム表示します。

【動画】実演・解説アーカイブ

実際のコマンド操作やコードの書き方、カメラ映像が表示されるまでの手順は以下のYouTube動画からご覧いただけます!

【RaspberryPi】ros で usb カメラを扱ってみる

まとめ&今後の展開

ROS 2とOpenCVを連携させることで、USBカメラから取得した画像データをベースに、色認識や物体検知、さらにはステレオカメラを用いた距離測定やSLAMなどの応用開発へと広げることができます。

まずはシンプルなサブスクライバーから始めて、徐々に独自の画像処理ノードへと組み上げていきましょう!また新しい検証を行ったらブログで報告します。

続きを読む