4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

1つのPythonプログラムでRealSenseを複数台同時に使用する方法

Last updated at Posted at 2023-10-17

初めに

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

手順

大まかな手順については以下の通りです。

  1. RealSenseのシリアル番号を確認する。
  2. シリアル番号を指定してpythonプログラムを記述する。

1. RealSenseのシリアル番号を確認

こちらについては、

  1. Intel RealSense Viewerを使う
  2. pythonプログラムの実行
    の2通りで求めることができます。

Intel RealSense Viewerを使う方法

公式から出されてるアプリであるIntel RealSense Viewerを使用してシリアル番号を調べます。
https://github.com/IntelRealSense/librealsense/releases/tag/v2.54.2

PCにシリアル番号を調べたいRealSenseを1台のみつないだ状態でViewerを起動します。
起動後、現在つないでいるRealSenseのシリアル番号を確認できます。
qiita1.png
①右上のメニューから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を動かすことができました。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?