Single USB Stereo Camera を試す。

Single USB Stereo Camera を試す。

OAK-D-Lite が、rtabmap_ros with Depth Camera で、役立たないので、
最近購入した、HBV-1780-2 S2.0 を 使ってみました。
当初、使い方が判らなかったので、困りました。

Web で検索して、画像サイズの指定のしかたで、
1画像に、Stereo 画像の、左右を一緒に Capture して送って来るみたいです。
640x240 -> 320x240 Stereo

下記に、記述がありました。
https://www.programmersought.com/article/17263978832/

Python のサンプルも、下記にありました。

https://www.programmersought.com/article/2094884799/

しかし、このカメラを、ROS and rtabmap_ros with stereo camera で試すには、
どうしたもんじゃろか?
キャリブレーションをしないと使えないのだが?
uvc_camera で、一旦取り込んで、C++ で、分割して、別々に Publish するのか?
uvc_camera の中に組み込むか?

この手のカメラを、Single USB binocular camera と呼んでいるのか!!

オリジナルの uvc_camera に、Single USB camera 部分だけ、追加してみました。
github に公開しました。
tosa-no-onchan/uvc_camera_single

開発環境
 ubuntu mate 18.04
 ros: melodic
 Camera: HBV-1780-2 S2.0

注) noetic & ubuntu mate 20.04 (Jetson Nano ubuntu20.04 and Jetpack4.6) でも、動作確認済。

ビルド方法。
1. original の uvc_camera を git clone します。
$ cd ~/work
$ git clone https://github.com/ros-drivers/camera_umd.git
$ cd camera_umd
$ copy -ar uvc_camera ~/catkin_ws/src

2. uvc_camera_single を git clone して、ダウンロードしたファイルを、全て、上記
~/catkin_ws/src/uvc_camera へコピーします。
$ cd ~/work
$ git clone https://github.com/tosa-no-onchan/uvc_camera_single.git
$ cd uvc_camera_single
$ copy -rf ./* ~/catkin_ws/src/uvc_camera
3. build
$ cd ~/catkin_ws
$ catkin_make

4. 実行
$ rosrun uvc_camera uvc_single_stereo_node
or
$ roslaunch uvc_camera single_stereo_node.launch --screen

なんとか使える様です。
出来れば、caption した 画像 Frame は、左右に並べるよりは、上下に並べてほしかったぞね!!
製造元へのお願いじゃ!!

後で、calibration して、rtabmap_ros with stereo camera で試してみます。
calibration 方法は、下記に、記載してあります。
ROS rtabmap_ros 自作 Stereo Camera

自作 Stereo Camera よりは、calibration が早いのかも?

rtabmap_ros with Stereo Camera も試してみました。
レンズの間隔のTF の値が、自作 Stereo Camera 版のままですが、
それでも、大夫、具合が良いみたいです。
注) rtabmap_ros with Stereo Camera では、左右のレンズ間隔の指定は、ありませんでした。tf-camera の位置だけでした。
この後、nodelet 版にしてみないといかんぞね!!

今は、nodelet 版 でテストしています。
rtabmap-nishi_stereo_outdoor2_bz3_navi.launch
此処に来て、やっと rtabmap_ros 中心のテストが、できるようになりました。

今、問題として出てきたのは、以前にもありましたが、
3D-Map だと、ロボットの高さ位置を、tf-base_footprint で与えないといけないようです。
自作 Turtlebot3 自立走行に向けたプログラム。#7
Vis/EstimationType=1(3D->2D) にしていますが、どうも 3Dのマップになるようで、
ロボットが、高い所に移動したら、床の中にめり込んで行きます。

その後、IMU から、高さを計測して、/odom_fox tf-base_footprint の position z を与えるように組み込んでみました。
詳しくは、上記 "自作 Turtlebot3 自立走行に向けたプログラム。#7" ページをご覧ください。

このブログ記事について

このページは、おんちゃんが2022年4月 8日 18:37に書いたブログ記事です。

ひとつ前のブログ記事は「depthai-core examples を試す。」です。

次のブログ記事は「ROS IMU による移動距離(距離測定) と向き測定」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ