【RGBDカメラ】ORBBEC Gemini335をOpen CVで使ってみよう
皆さんこんにちは。アルバイトの平川です。
今回は、弊社で新しく取り扱う予定のORBBEC社のGemini330シリーズから、Gemini 335 RGBDカメラについて紹介したいと思います。
ORBBECとは?
中国の深圳を拠点とする、3Dカメラ製造としては世界有数の企業です。ステレオビジョンカメラや、ToFカメラ、Liderなど、複数の手法による3Dカメラをそれぞれ開発しています。
Gemini335 / 335Lについて
Gemini335 / 335Lは、二つのIRカメラによるステレオビジョンによって深度計測可能な、RGBDカメラです。さらにRGBカメラを備え、普通のカメラとしても使えます。赤外線を使った点群情報をとることもできます。
Gemini 335 / 335Lの仕様比較表は以下をご覧ください。
項目 |
Gemini 335 (本ブログで使用するモデル) |
Gemini 335L |
---|---|---|
モデル | G40155-170 | G40055-170 |
深度計測方式 | アクティブ・パッシブステレオ | アクティブ・パッシブステレオ |
波長 | 850 nm(赤外線) | 850 nm(赤外線) |
深度範囲 | 0.10~20 m+ (最適範囲: 0.26~3 m) | 0.17~20 m+ (最適範囲: 0.5~6 m) |
深度解像度/FPS | 最大 1280 x 800@30fps | 最大 1280 x 800@30fps |
深度視野角 (FOV) | 水平90° 垂直65° | 水平90° 垂直65° |
RGB解像度/FPS | 最大 1920 x 1080@30fps | 最大 1280 x 800@30fps |
RGB視野角 (FOV) | 水平86° 垂直55° | 水平94° 垂直68° |
シャッター方式 | ローリングシャッター | グローバルシャッター |
処理 | Orbbec ASIC | Orbbec ASIC |
空間精度 | ≤ 1.5% (1280 x 800 @ 2 m & 90% x 90% ROI) | ≤ -0.8% (1280 x 800 @ 2 m & 90% x 90% ROI) |
理論上の最大深度範囲 | 最大 65 mまで | 最大 65 mまで |
深度フィルタ | オールパス | 可視光 + NIRパス |
IMU | 対応 | 対応 |
データ接続 | USB 3.0 Type-C | USB 3.0 Type-C |
電源入力 | USB 3.0 Type-C | USB 3.0 Type-C |
トリガ | 対応 | 対応 |
消費電力 | 平均 < 3.0 W | 平均 < 3.0 W |
IP保護等級 | IP5X | IP65 |
動作環境 | -10°C ~ 45°C; 屋内/屋外; 5%~90%RH(結露なし) | -10°C ~ 50°C; 屋内/屋外; 5%~90%RH(結露なし) |
SDKサポート | Orbbec SDK | Orbbec SDK |
データ出力 | 点群データ、深度マップ、IR & RGB | 点群データ、深度マップ、IR & RGB |
寸法 (W x H x D) | 90 mm x 25 mm x 30 mm | 124 mm x 29 mm x 27 mm |
重量 | 97 g | 133 g |
取付 | 底面: ¼-20UNC、背面: 2 x M3 | 底面: ¼-20UNC、背面: 2 x M4 |
どんなことができる?
物体の認識が主として可能なため、車両型の自律移動ロボットや、協働ロボットなどに搭載可能です。
Gemini 335では、97 gと軽量なため、中型のドローンによるマッピングなどにも使用できます。保護等級がIP5Xのため、塵や埃による機器の故障などは起こりにくいですが、屋外で使用する場合は、IP65で防水も備えたGemini 335Lが適しています。
専用のASICを内蔵しているため、カメラ本体で処理をすることで応答性を高めています。
以下の動画では、ROSを使用したSLAMを行っている様子が確認できます。動画では、本ブログで使用する335よりも深度精度が高く、画像歪みのないグローバルシャッター方式を採用した335Lモデルを使用していますが、335でも同様の実装が可能です。
環境構築について
事前準備
ORBBECでは、3Dカメラを使用した開発を行うためのSDKキットを公開しています。ただ、このSDKでは、レンダリングにOpenCVを使用しているため、依存関係を設定する必要があります。また、makeにCMakeを使用し、出力されるslnファイルからビルドするため、Visual Studioも使用します。
使用したソフトウェア
・OpenCV (4.3.0)
・Visual Studio 2022(17.11.5)
・Cmake(3.31.0)
ORBBEC SDK
今回はWindows11環境で、このSDKを使用してデモを行っていきます。まずは、ORBBECのOrbbec SDKのページに飛びましょう。ページを見て頂ければ分かりますが、Windows以外にもUbintu、mac OS、Android OSと広く対応しています。また、ROS、ROS2、Unity、Python用のラッパなどについても配布がされています。
ORBBEC公式のドキュメントはこちらです。公式ドキュメントを参考に進めていきます。
から、インストーラをダウンロードします。また、から、カメラ用のドライバもダウンロードしておきましょう。
に飛ぶと、これまでのバージョンのzipがあります。今回は "v1.10.12_20240809_69b687f22_win_x64_release.zip" をダウンロードしました。任意のツールでzipを展開します。
OpenCVのインストール
OpenCVのページに行きます。上のLiblaryタブからReleasesに移動します。今回は、OEBBEC SDKの環境構築の方法のmdファイルに記されている "OpenCV ver 4.3.0" を入れます。
(3ページ目にありました。2024/10/25時点)
Windowsを押すとexeファイルがダウンロードされるのでそれを実行します。
ドライブ直下に入れてしまいます。
続いて、システム環境変数の設定をします。
システム環境変数側の編集ボタンを押して、
変数名:OpenCV_DIR
変数値:opencv\build\x64\vc15\lib
のように設定します。Orbbec公式のドキュメントではbuildディレクトリを変数値にすると書いてありますが、x64で動かすのにあたって、このように変更する必要があるようでした。
先ほどCドライブ直下にOpenCVを入れたので、今回の場合の変数値はこのようになります。
これでOpenCV周りの設定は以上です。
makeの実行
cmakeを開きます。ここでは、source codeのディレクトリと、build先のディレクトリを入力します。
ORBBEC SDKのExampleフォルダをsource codeのディレクトリに、Exampleにbuildディレクトリを作り、そこをbuild先のディレクトリとして設定します。
SDKの場所自体は問わないので、Example内になってれば問題ありません。
Configureを押すと、以下のようなウィンドウが開きます。
そこで、 "Optional platform for generator" を "x64" に設定し、Finishを押します。
おそらく下の画像のような感じで、warningが複数出てきますが、OpenCVのバージョン云々の話なので、動作への直接的な影響はありませんでした。
"Generate" を押しましょう。
"Generating done (~~s)"のように出れば成功です。
続いて "Open Project" を押して、Visual Studioからslnファイルを開きましょう。
今回は、HelloOrbbecを実行したいと思います。
ソリューションエクスプローラから、 "HelloOrbbec" を右クリックして、スタートアッププロジェクトに設定します。
実行するPCと Gemini 335 が接続されていることを確認してから、上の "ローカルwindowsデバッガー" のボタンを押して実行します。
プログラム側でOrbbec製のカメラを識別できると、このような感じで、デバイス名やセンサのタイプなどをズラズラと表示してくれます。
せっかくのRGBDカメラなので、カラー画像や深度マップを表示してみましょう。先ほどと同じ要領で、 "MultiStream" をスタートアッププロジェクトにして、デバッガーを起動します。
このような感じで、RBG映像(左上)、深度マップ(中上)、赤外線の点群カメラ映像(右上、左下)、6軸IMU(中下)の情報が表示されました。
動画だと以下のような感じ。
深度マップでは、近くのものは青に、遠くに行くほど赤に変化します。手指の状態や椅子の外形など、かなりの精度で認識して表示してくれていますね。
最後に
今回は、ORBBECのGemini 335 RGBDカメラをテストしてみました。
環境構築やテストをするのにあたって、公式の情報がかなりまとまっていて、非常に準備がしやすいという印象でした。
また、本体に三脚とボールジョイント付きの雲型がついており、カメラの向きを簡単に変えて設置できたり、USB Type-Cコネクタで、データの送受信と電源供給ができたりと、手軽に扱えるのが地味にうれしいポイントです。
今回使用したGemini 335よりも、視野角や深度識別範囲の大きいGemini 335Lモデルも当社では取り扱っています。
また、今回使用したGemini 335は、ステレオビジョン式の深度センサを搭載していましたが、ORBBEC社では、ToF方式や、ストラクチャードライト式のカメラも取り扱っています。
ToF方式
ストラクチャードライト式
Femto Bolt / Megaについても、テストしたブログがあるので、こちらも良ければご覧ください!