RealSenseでEmriverをマッピングしてみた話

# プロジェクトの概要

![IMG_3192.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895796/e61a138e-897b-c7d0-2aa4-bb467c508342.jpeg)

こんにちは。しがない高校生をやっています。Basalte(ばざると)と申します。
普段はロボットやプロジェクションマッピングで遊んでいます。

今回のプロジェクトの概要です。
上の写真のような「**Emriver**」と呼ばれる水理実験装置が学校にあったので、その標高の分布に合わせてリアルタイムで色分けをするプロジェクションマッピングをしました。

「Emriver」とは地学の実験装置で、上流から水が流れ、海を模した場所まで水が流れ落ちるとポンプで循環して上流に向かいます。
水量や砂の量などを自由に変更して川やその周辺の地形変化を観察することができます。

有名なものだと三角州、扇状地、河岸段丘などは聞いたことがあると思います。そのような地形を模した実験を行うことができます。

その地形の変化をリアルタイムで捉える装置を開発しました。

文化祭、学校説明会などで展示しています。

こちらは最新の作品の様子です。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">PC画面でリアルタイムに点群データをいじれるようにしました<br>保存、ポーズ、画質の変更などの機能もあります <a href="https://t.co/lLWEk7Tb8D">pic.twitter.com/lLWEk7Tb8D</a></p>&mdash; basalte(ばざると) (@basalte1199) <a href="https://twitter.com/basalte1199/status/1720751364987629697?ref_src=twsrc%5Etfw">November 4, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# アイデア

世の中には砂場をキラキラさせるという製品がゴロゴロとあり、そちらを見て水理実験装置なら独自性を出せて面白い展示が作れるんじゃないかなと思い始めました。

もともとプロジェクションマッピング自体は触っていて、RealSenseを活用できる場所を探していたので、本当に丁度いいテーマが見つかったなといった感じでした。

# 技術スタック

・Anaconda
・OpenCV
・RealSense D415
・librealsense2
・numpy
そもそもlibrealsense2がnumpyに依存しているので...
RealSense D435とD415で動作確認を取っています。
### 重要！！
**Intelの中村さんからカメラを借りさせて頂いています！本当にありがとうございます！**
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">実はRealSense貸出でニーズあるの高校生ぐらいなんですよ。学園祭などで使いたいとのこと。今日はその貸出の成果を見てきました！今の学生は頭いいなーというのが率直な感想！！！ <a href="https://t.co/zY8yFXSTFh">pic.twitter.com/zY8yFXSTFh</a></p>&mdash; Takumi-san@RealSense (@TakumiRealSense) <a href="https://twitter.com/TakumiRealSense/status/1703288921726333024?ref_src=twsrc%5Etfw">September 17, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 設置

ハードウェアの説明です。
![IMG_3935.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895796/01fbcf6c-f2ab-b63a-3cd2-6e3a4bd90c4b.jpeg)

すこし暗くて分かりにくいですが、手前に脚立、奥にプロジェクターがあるのが分かるかと思います。

脚立はPCとカメラを固定するために使っており、奥のプロジェクターは

[プロジェクター用の三脚](https://www.amazon.co.jp/プロジェクター台-プロジェクタースタンド-40cm%EF%BD%9E100cm-高さ3段階調整機能-アルミニウム製/dp/B0C69HVXRV/ref=sr_1_49_sspa?)


このリンクのような三脚を使って固定しています。

この設備だけでどう位置を設定するか気になったそこのあなた！そう！こちらプロ設置屋(自分)が位置合わせを手動でやる脳筋設置なのです！

# ソフトウェア

![スクリーンショット 2023-11-26 173439.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895796/b5a9ea24-d6a0-0251-a193-286adf8821c7.png)

実際はもう少し画像処理やってたりプロジェクターとPCで映像のフレーム処理が違ったりするのですが、細かいことを無視するとこのような感じになります。

RealSenseからDepthとRGBを分けてフレームを受け取る処理はIntel様が公開しているsampleとほぼ同じです。

プロジェクターに投影してる映像は深度情報から地図のように色分けしたもののみです。
また、高さの上限下限を設定していて、それ以外の情報は描画しないようになっています。
これにより、小さい範囲に絞る設定にすれば小さい地形の変化を反映させることができます。

PCの管理画面ではプロジェクターの色分け映像のほか、3DのColorデータも見ることができ、ボタン操作で画質の変更(sampleからお借りしました)や.plyファイルの保存等を行うことができます。

動作映像はこちらです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">最近は、物理部と共同でemriverという流水実験装置の地形を、プロジェクションマッピングを用いて可視化する試みています。<br>完成が待ち遠しいですね❗️😃 <a href="https://t.co/MXnJlhNgZK">pic.twitter.com/MXnJlhNgZK</a></p>&mdash; 海城中高地学部(新) (@earth_kaijo_2) <a href="https://twitter.com/earth_kaijo_2/status/1670805139534274561?ref_src=twsrc%5Etfw">June 19, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 



質問等はこちらに、リプやDMしていただけるとありがたいです。
[BasalteのTwitter](https://twitter.com/basalte1199)

コードはこちらで公開しています。
本当は色々新しいことを試したりして100ぐらいpythonのファイルがあったりexeファイル化してるリポジトリがあったりするのですが、汚すぎてやばいので(公開しているものも大概ですが)Privateにしてます
https://github.com/basalte1199/terrainshare_new