べれすく!

素人プログラマによるモノづくりやブログ生活を話すブログ

【スポンサーリンク】

PythonでRealSenseの開発環境を整える話

RealSenseって知ってますか?
インテル製の深度カメラです。

深度カメラっていうとあんまりピンとこないかもしれませんね。
Xbox360Kinectなんかもその深度カメラです。

深度カメラとは物体との距離情報を把握したカメラです。
その測量方式は様々ですが、音波や光波を使って距離をつかみ、別のカメラで撮った映像と合体させているようです。

 

intel RealSense™ Depth Camera D435

intel RealSense™ Depth Camera D435

  • 発売日: 2018/01/18
  • メディア: Personal Computers

今回はIntel RealSense Depth Camera D435をお借りしたので、環境を整えて少し遊びましょう。
f:id:Veresk:20190902235255j:plain

背面のカバーをとるとTypeCで接続が可能になります。

f:id:Veresk:20190902235321j:plain
RealSenseを接続するUSBポートはUSB3.0でなくてはいけません。
うまく接続されているかは、デバイスマネージャーを見るとわかります。

f:id:Veresk:20190903145542p:plain カメラのタブにRealSenseが一つしかありません。
これではだめです。
f:id:Veresk:20190903150635p:plain

このままサンプルプログラムを動かすとこんなエラーが出ます。
原因は

  • USB2.0で接続している。
  • 対応していないTypeCコードで接続している。
  • パソコンの省電力機能がUSB3.0の性能を落としている。

といった感じです。
自分は3つ目でした。
今もその機能の切り方がわからず、バッテリーがフルじゃないと読み込んでくれません。

<追記>
認識しました。
解決法は超勢いをつけて差し込むことでした。
公式のGitHubでも英語で議論されていました。
どうやら付属のコードはそこそこ欠陥品が混ざっているようでこういったことがあるようです。
解決はしましたが、こんなことではPC側のUSB3.0がダメになってしまいそうです。

非常に厄介です。

f:id:Veresk:20190903150846p:plain

このようにカメラの欄に2つ表示されていればうまく接続されています。

接続が確認出来たら、開発環境の準備をします。
RealSenseをつかった開発をPythonでするにはpyrealsense2が必要です。

f:id:Veresk:20190902231524p:plain

いろんな言語に対応してるんですね。
今回はPythonを使ってみましょう。 Python環境は各自準備して下さい。
おすすめは Python+PyCharmです。
導入方法はここがとってもわかりやすいです。
gammasoft.jp

この時、注意しないといけないことがあります。
pyrealsense2はPython2なら2.7、Python3なら3.6までにしか対応していません(2019/09/01現在)

現在、最新バージョンのPython3.7では使えないので注意してください。

導入は簡単です。

pipでインストールできるpython環境の方はいつも通りです。

pip install pyrealsense2

これだけ。

PyCharmの方も簡単ですね。
検索するとあるので、いつものパッケージ導入方法で入ります。

f:id:Veresk:20190903151140p:plain

早速サンプルプログラムを動かしてみましょう。
プログラムはこちらからお借りしました。

mirai-tec.hatenablog.com

自分で組みたいって方はこちらのリファレンスを読むといいと思います。
関数の一覧とか載ってるので。

intelrealsense.github.io

f:id:Veresk:20190903151341p:plain 左がカメラ、右が深度センサーですね。
遠くが青で近くなるにつれて赤くなっていくプログラムになっているみたいです。
これを見て気づいたのは

  • 近すぎると黒くなる。(距離が測れていない)
  • 太陽光のような強い外乱があると距離が測れない。
  • 物体の付近は影になって測れないところがある。
  • 動作中はRealSense本体がかなり熱くなる。

ということです。
距離も見れるこのカメラの存在は便利ではありますが、まだまだ難点が多そうですね。

それでは!