ORBBEC Femto Boltを用いた点群取得

その他のお知らせ

今回、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/

 

タイトルとURLをコピーしました