0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ROS2】USBカメラ映像のストリーミング

Posted at

対象となる読者

  • ROS2を使ってUSBカメラの映像を取得したい人
  • USBカメラのpermissionを設定したい人

開発環境

再現を容易にするためハード,ソフトの環境を事細かに記載しておく

ハードウェア

ソフトウェア

  • python3.12

手順

簡単に映像取得を試すためにROS2とPythonで作って学ぶAIロボット入門の「第5章 ビジョン」に記載の手順を踏襲して実施

必要ライブラリのinstall

pip3 install opencv-contrib-python==4.10.0.84
sudo apt install ros-jazzy-vision-opencv ros-jazzy-usb-cam

  • OpenCVと拡張モジュール群をまとめてinstallできるライブラリ

ros-jazzy-vision-opencv

  • ros2とopencvとを繋ぐインターフェース
  • ros2のtopicをopencvが受け取るために必要

ros-jazzy-usb-cam

  • usbカメラ用のnodeを生成するパッケージ

実行

実行しているコードはsample codeそのままなのでここでは省略

やるべき手順は以下の通り

  1. usb_cam_nodeの立ち上げ
    1.  ros2 run usb_cam usb_cam_node_exe
      
  2. OpenCVを使ったコードのnode立ち上げ
    1. 今回はfront_camera_nodeという名前にした
    2.  ros2 run front_camera front_camera_node
      
  3. rqtによるimage topicの表示
    1.  rqt
      

それぞれを動かすためのterminalが必要なので事前に用意しておく

image.png

rqt_graphも使うとnode毎の繋がりが視覚化されるので,上手く動かない場合は使ってみると欲しいnodeが繋がっていないとかを見ることができる

Tips: usbカメラのpermission errorの解消

root user以外がusbカメラにアクセスすると以下のようなErrorではじかれてしまう

[ERROR] [1730529629.400962429] [usb_cam]: Device specified is not available or is not a vaild V4L2 device: /dev/video0 

これはpermissionが制限されているために起こるErrorであるため,root user以外からもアクセスできるようにしてあげればいい

一時的にpermissionを通す場合

sudo chmod 777 /dev/video0

全てのuserに全権限を渡すため,書き換えやアクセスなどを自由にできる

以下の2つの問題から基本的にはbad case

  • 複数のuserが好きにシステムの改変ができてしまう
  • あくまで一時的な対応であるため,usbカメラを外す,再起動する,などでpermissionは元に戻る

恒久的にpermissionを通す場合

sudo usermod -aG video $USER

現在使っているuserがvideoのアクセスに関するgroupに追加する
こうすることで誰がvideoにアクセスできるかを管理でき,かつ他のデバイスが追加されてもアクセスができる

感想

改めて整理すると結構シンプルな構成でROS2を使ったストリーミングができた
ただしterminalを複数立ち上げるのは大変なので,ロボット起動の際には一度にすべてのnodeを立ち上げられるように設定ファイルを書いておきたい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?