初めに
1つのPythonのプログラムでIntel RealSense D455を複数台同時に使用する方法についての備忘録です。
2台以上のRealSenseを1つのプログラムで動作させたいときの助けになれば幸いです。
RealSense D455
https://www.intelrealsense.com/depth-camera-d455/
複数台使用する際の説明には、こちらの「RealSenseD400シリーズでキャプチャした点群を.plyとして保存する」という記事を参考にさせていただきます。
https://qiita.com/SatoshiGachiFujimoto/items/50d0f0a65b730647fe84
手順
大まかな手順については以下の通りです。
- RealSenseのシリアル番号を確認する。
- シリアル番号を指定してpythonプログラムを記述する。
1. RealSenseのシリアル番号を確認
こちらについては、
- Intel RealSense Viewerを使う
- pythonプログラムの実行
の2通りで求めることができます。
Intel RealSense Viewerを使う方法
公式から出されてるアプリであるIntel RealSense Viewerを使用してシリアル番号を調べます。
https://github.com/IntelRealSense/librealsense/releases/tag/v2.54.2
PCにシリアル番号を調べたいRealSenseを1台のみつないだ状態でViewerを起動します。
起動後、現在つないでいるRealSenseのシリアル番号を確認できます。
①右上のメニューからinfoを選択
②シリアル番号を確認
pythonプログラムで確認する方法
Pythonプログラムを実行することで現在つないでいるRealSenseのシリアル番号を調べます。
こちらの方法も1台ずつシリアル番号を調べてください。
import pyrealsense2 as rs
# RealSenseカメラを初期化
pipeline = rs.pipeline()
config = rs.config()
pipeline.start(config)
# カメラの情報を取得
pipeline_profile = pipeline.get_active_profile()
device = pipeline_profile.get_device()
serial_number = device.get_info(rs.camera_info.serial_number)
print(f"RealSenseカメラのシリアル番号: {serial_number}")
# RealSenseカメラをシャットダウン
pipeline.stop()
2. シリアル番号を指定してpythonプログラムを記述する。
次に、シリアル番号を指定するコードをpythonプログラムに追加し、完了です。
参考にさせていただいたプログラムを2台使用するために拡張したプログラムのシリアル番号を指定する箇所を添付いたします。
# Create a pipeline
pipeline1 = rs.pipeline()
pipeline2 = rs.pipeline()
config1 = rs.config()
config1.enable_device('117222251152') # realsense1のシリアル番号を指定
config1.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config1.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
config2 = rs.config()
config2.enable_device('053122250872') # realsense2のシリアル番号を指定
config2.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config2.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
この他にも、profileやintrinsicなども1,2の番号で識別してあげる必要がありますが、それさえすれば1つのプログラムで複数のRealSenseを使用可能です。
2つの点群データをレジストレーションするための回転行列を事前に求めておけば、リアルタイムでマージした点群を作成することも可能です。
参考プログラムのように、sキーを押すと複数の点群を別で保存したり、マージ後の点群を1つのデータとして保存できるようになるはずです。
終わりに
今回は1つのpythonプログラムで複数のRealSenseを使用する方法を紹介いたしました。
私の環境ではUSBハブを用いて、同時に4台のRealSenseを動かすことができました。