今回、ORBBEC Femto Boltという3Dカメラを使用する機会がありましたので、セットアップや点群取得などの手順を紹介します。
ORBBEC Femto Boltの背景
産業用の3Dカメラは数十万円から数百万円、用途によってはそれ以上するものが一般的です。そんな中、2010年にMicrosoftから発表されたKinectは、数万円台の3Dカメラとして注目を集めました。2020年からAzure Kinectとして新モデルが発売されていましたが、残念なことに2023年10月にMicrosoftから開発終了がアナウンスされました。
一方、良いニュースもあります。Microsoftと協業していたパートナー企業にこれらの技術が引き継がれ、今後も同様の機能を持った3Dカメラが販売されることになりました。今回紹介するORBBEC社のFemto Boltもその一つです。
ORBBEC Femto Boltの特徴
高画質な4K HDR RGBカメラと、120°FOVの広視野角を持つ深度カメラを搭載しています。また、前述の通り深度カメラはMicrosoft社のToF技術を取り入れています。
環境構築
実行環境
- Ubuntu 22.04
- OrbbecSDK(1.10.6)
①電源コネクタをデバイスの背面にある電源ジャックに挿入します。ケーブルのもう一方の端に USB 電源アダプターを接続し、アダプターを電源コンセントに差し込みます。
②USB データ ケーブルの一方の端をデバイスに接続し、もう一方の端を PC の USB 3.0 ポートに接続します。
③電源インジケータ LED (USB ケーブルの横) が白く点灯していることを確認します。
デバイスの電源がオンになるまで数秒かかります。前面のストリーミング LED インジケーターが消えたら、デバイスは使用可能になります。
SDKのインストール
Orbbec Femto BoltにはOrbbec SDK と Orbbec SDK K4A Wrapper の 2 つの SDK が用意されています。前者はOrbbec社製のカメラの機能をフルに利用できます。後者のK4AとはAzure Kinect SDKのことで、Orbbec社製のカメラをAzure Kinectと同じAPIで利用するためのものです。今回はOrbbec SDKを使用します。
以下のコマンドを実行してSDKをgit cloneしてください。
git clone https://github.com/orbbec/OrbbecSDK.git cd OrbbecSDK/misc/scripts sudo chmod +x ./install_udev_rules.sh sudo ./install_udev_rules.sh sudo udevadm control --reload && sudo udevadm trigger
サンプル実行
以下のコマンドを実行してビルドします。
git clone https://github.com/orbbec/OrbbecSDK.git cd OrbbecSDK && mkdir build && cd build && cmake .. && cmake --build . --config Release
サンプルの実行
サンプルの実行
git clone https://github.com/orbbec/OrbbecSDK.git cd OrbbecSDK/build/bin ./OBMultiStream
また、OrbbecSDK/build/binの中を確認すると以下のようなサンプルを確認する事が出来ます。それぞれの動作は https://github.com/orbbec/OrbbecSDK/tree/main/examples から確認する事が出来ます。
viewer実行
Azure Kinect Viewerを起動するとデプスカメラとカラーカメラの映像を確認する事が出来ます。
点群取得
サンプルコードに含まれているob_point_cloudを実行すると、点群を取得しplyファイルとして保存されます。
cd OrbbecSDK/build/bin
open3Dを用いて点群を描画し確認します。以下のコードを実行する事で以下の画像のように保存されたplyファイルを描画する事が出来ます。
import open3d as o3d import numpy as np if __name__ == "__main__": # 点群の読み込み print("Loading point cloud") ptCloud = o3d.io.read_point_cloud("points.ply") # 点群の確認 print(ptCloud) print(np.asarray(ptCloud.points)) # ウィンドウ内での描画 o3d.visualization.draw_geometries([ptCloud]) # 点群の保存 o3d.io.write_point_cloud("output.ply", ptCloud)
点群が取得できている事が確認できます。以下の画像は同じ状態のときのカラーカメラとデプスカメラの映像です。
参考文献
OrbbecSDK
https://github.com/orbbec/OrbbecSDK/tree/main
pythonSDK
https://github.com/orbbec/pyorbbecsdk
orbbecドキュメント
https://www.orbbec.com/documentation/