hidefumiiのロボット技術つまみ食い日記

アレも食べたいコレも食べたいちょっとずつ

「ROS2ではじめよう」第1章ROS1ツアー #7

「ROS2ではじめよう次世代ロボットプログラミング」

1-4 センシング

1-4-1 画像センサー

ROSは、主要なセンサーの出力の定義を.msgのメッセージファイルであらかじめ規定しています。これにより、画像センサーであれば、それがたとえ

あんなカメラやこんなカメラやどんなカメラであろうとも同じインタフェースで扱える、という夢のような仕組みになってるという、まあ皆さんよくご承知の通り。

画像センサーから得られる画像を表すメッセージsensor_msgs/Image.msgは以下のように定義されてる、と。

std_msgs/Header header  # タイムスタンプや親座標系名など
unit32 height           # 画像の高さ方向のピクセル数
uint32 width            # 画像の横方向のピクセル数
string encoding         # エンコーディング形式
uint8 is_bigendian      # dataがビッグエンディアン並び順かどうか
uint32 step             # 1ピクセルあたりのバイト幅
uint8[] data            # 画像のバイト列

std_msgs/Headerには座標系情報が格納されてる。ROSで座標系といえばtf。という話が出てきたけどtfについてはサラッと触れたくらいで終わり。また後でtf出てくる?出てこない?

さて、ここでUVCカメラ使って何かやるみたい。「UVCってなに?」についてはこちらを参照。 www.argocorp.com

さて、以下をインストール。

$ sudo apt install ros-$ROS_DISTRO-uvc-camera ros-$ROS_DISTRO-rqt-image-view

WebカメラをPCに接続し、uvc_camera_nodeを実行してみましょう。

そのへんに転がってたUSBカメラを指して、

$ ls /dev/video*
ls: cannot access '/dev/video*': No such file or directory

えっ?見つからないよ!どゆこと?

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

なーい。

以前に書いた通り、WSL上にUbuntu 18.04入れてROS1入れて遊んでるわけだが、 hidefumii.hateblo.jp

どうやらWSLだとUSBデバイスの認識に問題があるらしい。 learn.microsoft.com

うぬー。進まない!

でもキリが悪いので今日はここまで。WSL-USB問題は明日なんとかする。寝る!