ピコプロジェクターを使った空間演出システムの紹介~ロボットアームによるグラス投写型

はじめに

今回紹介するのは、バーなどでグラスを置くと、ピコプロジェクターを搭載したロボットアームが動き、グラスやグラス後方の透過スクリーンにキャラクターが投写され様々なアニメーションでお客さんをおもてなしするようなシステム。

最近制作し、実際にバーカウンターで動かしてみた際の様子は以下の通り。コンテンツとしては、グラスを重量センサ内蔵のコースターに置くとロボットアームが動き、グラス後方の透過スクリーンにピエロキャラクターが現れダンスを踊り、お礼のためのお辞儀をし、グラスを取るとロボットアームが元の位置に戻るというもの。

コンテンツの開発内容については『ピコプロジェクターを使った空間演出システムの紹介~パンチルト対応ダクトレール取付・壁面投写型』 と共通化しているため、詳細についてはこちらの記事では省略。
重量センサ内蔵コースターの詳細については『重量センサ内蔵コースターを作ってみた』を参照。

使用しているプロジェクターはUltimems(台湾)のMEMSレーザー走査型の小型プロジェクター。一般的なプロジェクターと比べるとかなり暗いものの、小型で省電力、そしてフォーカス合わせが不要で、コントラストが高いのが特徴。

システム構成

本システムの構成は以下の通り。

本システムの主なパーツは以下の通りで、選定の際に考慮した点は以下の通り。

  • ロボットアームはコンパクトで持ち運びや設定がし易く、PCからの制御が簡単に行えること
  • 本来グラスに直接投写したいところではあるものの、透過フィルムを貼っての運用は難しいため、グラス後方に透過スクリーンを配置する
  • グラスを置くコースターは多少飲み物がこぼれても影響が少ないよう考慮する
  • 電源オンから動作可能な待ち状態になるまで自動で行えること
分類
用途
メーカー名
製品名(型番)
販売先
価格(2025/3/9時点)
仕様・説明
プロジェクター
映像投写用
Ultimems Inc.
HD ピコ レーザー プロジェクター 自作キット for Pi [HD301D1]
KSY
27,500円 x 1

※在庫なしの状況(販売終了と思われる)
※代替品としては、Ultimems Inc.
MEMS スキャニング プロジェクション モジュール [HD309D1-C1]
解像度: 1280×720
明るさ: 20lm
コントラスト: 5,000:1
明るくは無いものの、レーザー走査型のためどこにでもフォーカスが合うのが最大の特徴
透過スクリーンシアターハウス
リア透過フィルム
クリアタイプ
シアターハウス
A4サンプル
視野角度: 150度
コントラスト: 200:1
色: 半透明
アクリル板に4隅をメンディングテープで固定
透過スクリーン
固定用

アクリル板
AC00-223
Amazon
665円 x 1
サイズ: 200 x 300 x 2mm
ロボットアーム
演出用
Elephant Robotics
myCobot 280 Pi(2023)
スイッチサイエンス
161,700円 x 1
Raspberry Pi 4B 2GB
軸数: 6軸
ペイロード: 250g
アーム長: 350mm
作業半径: 280mm
重量: 850g
ミニPC
映像生成用
GMKtec NucBox G5Amazon
20,380円 x 1
CPU: Intel N97
メモリ: 12GB
SSD: 256GB
サイズ: 72x72x44.5mm
重量: 166g
3Dプリントパーツ
myCobotへのプロジェクター取付用
1パーツPLAフィラメント
1パーツで、25g程度、50円程度
3Dプリントパーツ
透過スクリーン固定用
L字型、左右2パーツPLAフィラメント
1パーツで、25g程度、50円程度
重量センサ内蔵コースター自作
3Dプリントパーツ トップとボトムの2パーツ
PLAフィラメント
2パーツで、100g程度、200円程度
ボトムパーツにM5Stack用計量ユニットを両面テープで固定、トップパーツ上面から計量ユニットにM3ネジで固定
コースター
ドリンクや結露から重量センサを保護
山崎実業(Yamazaki) 立体 コースター 丸型 ホワイトAmazon
422円 x 1
サイズ: 直径100mm、高さ9mm
素材: シリコン
3Dプロントパーツ トップ上面に両面テープで貼り付け
重量センサ
計量用
M5Stack
M5Stack用計量ユニット 5kgレンジ(HX711)
スイッチサイエンス
1,287円 x 1
計測範囲: 5kg
ストレインゲージモジュール、ADコンバータ、マイコン
マイコン
PCへの重量データ送信
M5Stack
M5Stack NanoC6
スイッチサイエンス
1,331円 x 1
SoC: ESP32-C6FH4@RISC-V 160MHz
ディスプレイ
単体での重量確認用
M5Stack
M5Stack用 0.42インチ Mini OLEDユニット
スイッチサイエンス
748円 x 1
超小型のモノクロOLEDディスプレイ
表示サイズ: 0.42インチ
解像度: 72 x 40
各種ケーブルHDMI 1.0m x 1
USB Type A-miniB 1.0m x 1
USB Type A-C 0.2m x1
LANケーブル 0.3m x 1

開発内容

ハードウェア

開発内容は以下の通り。詳細については別途個別に紹介予定。

  • コースター用3Dプリントパーツのモデリング
    以下2つのパーツを設計
    • コースターボトム
    • コースタートップ
  • 透過スクリーンスタンド用3Dプリントパーツのモデリング
    以下2つのパーツを設計
    • T字左側
    • T字右側
  • 3Dプリントパーツのプリント
    Anycubic Kobra 2 Proと+Anycubic 高速PLAフィラメント(ホワイト)を使用

ソフトウェア

開発内容は以下の通り。開発環境はWindows 11 Pro上で以下ツールを使用。

  • 映像コンテンツ生成:Unreal Engine、Tripo AI、Reallusion ActorCore AccuRIG/Motion
  • センサデータ取得:M5Stack NanoC6

映像コンテンツ生成

まず、映像コンテンツ生成については、Unreal Engineを使用、3DモデルとアニメーションについてはWebサービス含め複数のツールを使用。使用した3Dモデルとアニメーションは『ピコプロジェクターを使った空間演出システムの紹介~パンチルト対応ダクトレール取付・壁面投写型』の内容と共通化。違いとしてはアニメーションのタイミングはグラスを置きロボットアームが投写ポジションに移動後に自動で実行するよう実装。

各デバイスのプログラム

開発対象
デバイス名
OS/使用ツール/ライブラリ開発内容
重量センサデータ取得
M5Stack NanoC6
ツール: Arduino IDE 2.3.2
言語: Arduino
重量センサデータ取得と、UARTへの出力
ロボットアーム(myCobot)制御
Raspberry Pi 4B
OS: Ubuntu Mate 20.04
言語: Python
ライブラリpymycobot 3.0.1
PCからのグラスが置かれたかどうかのトリガーをOSCで受信、グラスの状態に合わせmyCobotを初期位置・投写位置に動かすための制御
PCでのUARTでの重量センサデータをOSCに変換
ミニPC
OS: Windows 11 Pro
言語: Python
ライブラリ: pyserial 3.5, python-osc 1.9.3
Claude 3.7 Sonnetで以下プロンプトで生成
“Pythonで、シリアルポートからのデータをOSCで送信するコードを生成して。”

まとめ・今後について

今回、実際のバーカウンターでの動作については、myCobotの設置に関してクランプでの固定がバーカウンターテーブルの厚みに対応出来ず、代わりに固定するための台を探すところで時間が掛かったものの、4時間ほどの連続動作で大きなトラブルもなく無事終えたのは良かったところ。

また、映像コンテンツについてはグラスに直接投写したいところではあるものの、透過スクリーンを貼る必要があったり、ドリンクが入った状態と入っていない状態では屈折率も変わるなど課題が多い。

今回のようにグラス近くの透過スクリーンに投写する場合でも、バーテンダーがドリンクを提供する際にコースターに置いて、お客さんに提供するまでの一連の流れの中でどのような配置で、どのようなコンテンツにするのが良いかについては、まだまだアイデア含め検討が必要なため、引き続き色々と試して行きたい。

コメントを残す