なるべく自前のカメラを作らないこと
今後も供給されるであろうステレオビジョン・ToFカメラなどを用いること
・自前のステレオライブラリを必要としないこと
・自前のIMUやタイムスタンプを必要としないこと
- image sensorそのISP(image signal processor)のレベルで以下の問題を解決していること
- トンネルの出口での白飛びによって、トンネルの外の車両などを見失わないこと。
- 夜間の暗い環境で、黒い衣類を着た人物を見失わないこと。
- LEDの信号の表示が、サンプリング周期の影響で、点灯していないように見えないこと。
- 複数のカメラで
- 複数のカメラで同期がとれた撮影ができること
- Image センサ
- グローバルシャッタ方式であること
- システムでのステレオ画像を取得できるまでの遅延は何 msec になるのか?
- そのモジュールの外部に計算資源を必要とするのかどうか?
- 必要な計測範囲の奥行きは何m ~ 何 m なのか?
- 必要な視野角は?
そういうことに留意して、あなたの用途のステレオカメラを選んでほしい。
XVISIO の利用
kinectは消えてしまった。
realsense機種によっては 消えてしまった。
https://www.intelrealsense.com/depth-camera-d435/
利用例 CRANE-X7 https://rt-net.jp/humanoid/archives/5069
画像データを取得できる部分
ステレオカメラって何?原理や用途、車載用の最新動向もチェック!
車載カメラの視覚
- リコー
- 日立オートモティブシステムズ(現 日立Astemo株式会社)
- ZMP ADAS/自動運転用ステレオカメラRoboVision3
- ZF(ドイツ)
- ボッシュ(ドイツ)
- http://www.bosch.co.jp/tms2017/pdf/CC-ProductDataSheet-SVC-JA.pdf
- https://www.bosch-mobility.com/en/solutions/camera/multi-purpose-camera/
ライブラリが供給されているステレオカメラを利用するのがよいと考える。
理由:
- 自分たちが勝負するところは、ステレオ計測ではないはずだ。
- タイムスタンプ問題、IMUを持っているか。
https://www.e-consystems.com/jp/default-jp.asp
USB 3 カメラ Tara-USBステレオビジョンカメラ
OpenCV Layerを持つ。
ブロック図の中にIMUが含まれている。
ITD Lab Intelligent Stereo Camera
基線長(baseline lenghth) Resolution FOV での距離精度
pdf 製品カタログ Intelligent Stereo Camera 評価ユニット ISC-1000VM, ISC-100XC
残念なことに、タイムスタンプの問題と、IMUについての情報が不足している。
近距離側が 0.5mからと遠方側に性能がでることを優先する設計になっている。
このITD Labの代表取締役会長 は実吉敬二さんで、(株)SUBARU でステレオカメラの開発を行った方である。
そのため、車載カメラで距離計測をする分野での距離範囲を意図したものになっている。
FPGAでの使用を前提としており、いわばステレオカメラ開発キットのような状況であり、USBカメラをつないですぐ使えるタイプのカメラとは違っている。
SeerSense™ DS80 Module
https://www.stereolabs.com/zed-2/
stereolab zed-x
グローバルシャッターで 1200p 60fps
IMUがちゃんとある。
Neural Depth Engine 2
stereolabで開発したDepth計算のライブラリを使っている。
OpenCVには深層学習以前のステレオ計算のライブラリが含まれている。
OpenCVに含まれる従来の対応点の視差を元にdepthを算出しているものでは、欠損点ができて、その点に対してdepthの推定ができないものになっている。
深層学習によって、単眼カメラでも視差を推定できる学習が存在する。
もちろん、ステレオ画像を用いたものの方が、十分に根拠のある奥行きを算出できる。
"Neural Depth Engine 2" とはきっとそのようなライブラリなのではないかと推測する。
マルチカメラ同期
接続されている複数のデバイスのハードウェア同期をフレームレベルで 100 マイクロ秒以内に実行します。 同じシーンの複数の RGB イメージと深度イメージをすべて位置を合わせてキャプチャします。
SDK Downloads を読むと、たとえば CUDA 12のサポートOSにWindows, Ubuntu, Jetpackが含まれている。
ZED MINI
こちらbaseline が 50 mm と短いタイプ。
そのためDepth rangeはZED Xの半分になる。
この会社のステレオカメラのインタフェースとしては、USBのものの他にGMSL2のインタフェースによりものとがある。各人の用途によって使い分けること。
Stereolab ZED シリーズに関連したソフトウェア
https://github.com/stereolabs/zed-unity
https://github.com/stereolabs/zed-ros2-wrapper
Github Visual SLAM using Stereo Camera for Autonomous Vehicles.
StereoLabs のdepthmap
StereoLabs は深層学習を用いたdepth計算をしている。そのため、従来の対応点マッチングで視差を算出できた点についてだけdepthが求まるライブラリと結果が違ってくる。対応点がとれない画素についても、depthが返ってくる。
Teledyne FLIR
XVISIO
ToF カメラであると同時にFisheye Stereo カメラ(grayscale)を持ち、stereo depthを計算するengineを持つ(更にRGBカメラ)。RGBカメラがToFの視野角に近いので、ToFの画像とRGB画像を対応付けやすい。
https://www.hms-global.com/product/A-series
https://www.xvisiotech.com/product-center/
https://www.xvisiotech.com/product/seersense-ds80/
推測:
fisheye camera がgrayscale なのは以下の理由によると推測する。
- 通常の視差計算ライブラリはgrayscale で行う。
- だからRGB画像をグレースケールに変換する処理がないほうが遅延が減る。
- 魚眼カメラになると周辺部ほど変化が大きくなる。
- そのため、beyer配列での各画素でのRGBの推定では、影響を受けやすい。
- そのような周辺部のRGB画素値をグレースケール化するよりは、最初からグレースケールで撮影したほうがのぞましい。
RealSense
https://www.intelrealsense.com/
https://www.intelrealsense.com/depth-camera-d457/
Introduction to Intel® RealSense™ Visual SLAM and the T265 Tracking Camera
intel RealSense NVIDIA Jetson installation
Github SLAM with D435i
Leopard Imaging
同社では、図に示したタイプのステレオカメラを提供している。
カメラの取り付け位置を自由に変更できるものが多い。
[ロボット開発に最適なAI機能搭載ステレオカメラ「M4.5S」「M4.3WN」とSoCNU4000」取扱い開始のお知らせ
引用元
比較表に含めるべき項目
FoV(水平)
FoV(垂直)
FoV(対角)
画素数(水平)
画素数(垂直)
サンプリングレート
グローバルシャッター
IMUの有無
基線長(baseline)
深度範囲
インタフェース
計算リソースの有無
基線長(baseline) を選べるステレオカメラがほしいときには
- カメラの位置を固定する前のステレオカメラモジュールを販売している業者があります。
- それを適切に機械的な要因や温度変化でたわんだりしないようなベースに固定してします。
- それをキャリブレーションを実施して利用する。
そのようなステレオカメラの部品の例
以下のページでは奥行きの推定のためにどういう手法があるのか、それぞれの手法の特徴を書いている。
ロボットの視覚
アシモの場合、頭部の視覚センサの他に腹部に床面センサを持っている。
入れ損ねても仲間がカバー、2台の人型協働ロボットが食材盛り付け連携
ROS2で動作が確認できているステレオカメラ
-
ZED
-
-
英語のWikiでも状況の説明は書かれている。
それによると、RealSense部門を縮小している。いくつかの製品のEOLが発布されているが、
ステレオ製品ラインの大部分はまだ入手可能であり、その間に新製品がリリースされましたとのことである。
-
英語のWikiでも状況の説明は書かれている。
-
ティアフォー社製カメラ
ティアフォー社のカメラは、車載向けに特化したカメラになっている。- ハイダイナミックレンジ(HDR)
- 高感度・低ノイズ
- LEDフリッカー抑制
-
OrbbecのステレオカメラもROS2対応している。
OrbbecSDK_ROS2 -
OAK-D もROS2に対応している。
Deploy with Raspberry Pi
Luxonis OAK-D-LITE Depth AIカメラ(固定焦点版)
ROS2でOAK-D lite depth AI Cameraを動作させる 1
マシンビジョンの場合のアプローチ
- パターン光をプロジェクタで照射して、カメラで撮影する「AI+産業用ロボットの領域において、
産業用3Dカメラ+画像処理ソフトウェア+ロボット経路計画ソフトウェアを
独自開発・製造・販売する3Dカメラメーカー」ことで、3D計測する手法がある。 - 構造光法、構造化照明型3Dカメラとか、構造光型3Dスキャンとか、光切断法とか、いろんな呼び方がある。
- 2台のカメラだけでは、輪郭近くで対応点がとれない部分が生じる。
- 4台のカメラを4正方形状に配置して、それらから3D計測を行っている例もある。
この場合、輪郭近くでの対応点の欠損が減る。
マシンビジョンのソリューションを提供している会社の例
Keyence
Mech Mind
「AI+産業用ロボットの領域において、
産業用3Dカメラ+画像処理ソフトウェア+ロボット経路計画ソフトウェアを
独自開発・製造・販売する3Dカメラメーカー」
商用ライブラリでステレオ計測について提供しているソフトウェア会社
例: MATLAB
例題の内容:
ステレオ平行化のための算出済みのパラメータを読む。
左カメラの動画、右カメラの動画を読む。
左カメラのフレーム、右カメラのフレームをステレオ平行化する。
disparityMap = disparitySGM(frameLeftGray, frameRightGray);
を計算する。
3次元の点群に換算する。
人を画像を検出して、人までの3次元的な距離を求める。
Lidar Toolbox 入門
Velodyne だけサポートしている。
こういったライブラリを使うことで、
最初のとっかかりをつかむことができます。
LINX 社 HALCON ライブラリ
マルチステレオビジョン・光切断による3D計測ライブラリを含む。
ただし、光切断による計測には、光源・カメラなどがいるので、単にライブラリを買ってくるだけではいけない。
光源・カメラの選択・データ取得の問題が別にある。
ライブラリ
- そのステレオカメラは、どれだけライブラリをサポートしていますか。
- また、そのカメラでの利用実績はどれくらいありますか。
そのステレオカメラはどれくらい継続して供給されてきましたか
- 継続的に生産が続いてくれそうですか。
組み込み屋が、ステレオカメラ・ToFカメラを検討するときに考慮すること
- 利用する対象のCPU/GPUボードで、その機種が対応されているかどうか
- CPUの種類
- OSの種類とバージョン
- GPU利用の有無
- カメラとのボード間のインタフェース(例:USB3.1 type C)
- デバイスドライバの状況
- SDKの状況
- CPUボード側に必要なライブラリ
例:CUDAのライブラリ
例:OpenCVのライブラリ
例:OpenVinoのライブラリ
こういったものを考えること。
NVIDIA Jetson Xavier AGX 開発キットで複数の ZED カメラを使用する
Using multiple ZED cameras on NVIDIA Jetson Xavier AGX devkit
Microsoft がKinectの開発を停止しましたが、継承先があります。
マイクロソフトが「Azure Kinect DK」生産終了、中国メーカーが技術継承へ
英語での役立ちそうな情報
https://rosindustrial.org/3d-camera-survey
そのStereoCameraはどの程度サポートされているか、使われているか
- 対象のボードの種類、対象のインタフェース、対象OS
- 物理的に接続できていることと、デバイスドライバーが提供されていることとは別物である。
- ROS, ROS2を使う場合、利用例の情報が入手できるか?
- 利用できる言語とそのバージョンはどうか?
シミュレーション環境でもそのカメラを使いたいかどうか?
- シミュレーション環境でもそのデバイスが使いたい場合には、そのシミュレーション環境でそのカメラのシミュレータが用意されているかを調査する。
- 用意されている場合には、環境の点群データから、カメラの入力画像を計算したり、そのカメラが算出するはずのdepthを取得できるらしい。
以上のように利用する目的によっては、利用できるステレオカメラが絞られる。