ROS2 で USB カメラを使う方法

ROS
StockSnapによるPixabayからの画像

ROS1 で USB カメラを使うときは,uvc_cameraを使うのが一般的です.ところが,uvc_camera は ROS2 に対応していません.今回は ROS2 のパッケージを探して試してみました.

ROS Index のパッケージリストにあった.v4l2_camera というパッケージを使います.

ROS Index
a community-maintained index of robotics software

インストール方法はドキュメントに書いてある通り…と言いたかったのですが,なぜか v4l2_camera 自身のインストール方法や実行方法が書かれていないのでこのページに書いておきます.

なお,使っているのは Raspberry Pi 4, Ubuntu 20.04LTS, foxy です.適宜読み替えてください.

ダウンロード & インストール

まず,ワークスペースに移動します.

cd <ros2_workspace>

依存パッケージの image_common, vision_opencv, image_transport_plugins をダウンロードします.

git clone --branch ros2 https://github.com/ros-perception/image_common.git src/image_common
git clone https://github.com/ros-perception/vision_opencv.git --branch ros2 src/vision_opencv
git clone https://github.com/ros-perception/image_transport_plugins.git --branch ros2 src/image_transport_plugins

私は使っているのはUbuntuなので,次のコマンドで依存パッケージをインストールします.ただし,私の場合は全てインストール済みでした.ros2 の環境構築をフルバージョンでやっているとプリインストールされているのかもしれません.

sudo apt install libtheora-dev libogg-dev libboost-python-dev

そして,なぜか Readme 書かれていない v4l2_camera のダウンロードコマンドはこちらです.

git clone --branch foxy https://gitlab.com/boldhearts/ros2_v4l2_camera.git src/v4l2_camera

面倒なので,まとめてビルド&インストールします.パッケージが多い人は個別にやったほうがいいかもしれません.

colcon build

stderr: compressed_depth_image_transport と出てきましたが,今回は depth image は使わないので無視します.

実行

次のコマンドでカメラ画像のトピックを Publish します.

ros2 run v4l2_camera v4l2_camera_node 

下の画像のように,キャリブレーションやホワイトバランスなどの設定ファイルがないので怒られますが,今回は無視します.

続いて画像を確認するために,rqt_image_view を起動します.

ros2 run rqt_image_view rqt_image_view 

おそらく,rqt_image_view は自動的に画像トピックを選択して表示しますが,表示されない場合はトピックの選択や,カメラケーブルの確認をしてください.散らかってますが,私の部屋を撮影した様子がこちらです.

コメント