はじめに
今回紹介するのは、バーなどでグラスを置くと、ピコプロジェクターを搭載したロボットアームが動き、グラスやグラス後方の透過スクリーンにキャラクターが投写され様々なアニメーションでお客さんをおもてなしするようなシステム。
最近制作し、実際にバーカウンターで動かしてみた際の様子は以下の通り。コンテンツとしては、グラスを重量センサ内蔵のコースターに置くとロボットアームが動き、グラス後方の透過スクリーンにピエロキャラクターが現れダンスを踊り、お礼のためのお辞儀をし、グラスを取るとロボットアームが元の位置に戻るというもの。
コンテンツの開発内容については『ピコプロジェクターを使った空間演出システムの紹介~パンチルト対応ダクトレール取付・壁面投写型』 と共通化しているため、詳細についてはこちらの記事では省略。
重量センサ内蔵コースターの詳細については『重量センサ内蔵コースターを作ってみた』を参照。
使用しているプロジェクターは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 G5 | Amazon 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時間ほどの連続動作で大きなトラブルもなく無事終えたのは良かったところ。
また、映像コンテンツについてはグラスに直接投写したいところではあるものの、透過スクリーンを貼る必要があったり、ドリンクが入った状態と入っていない状態では屈折率も変わるなど課題が多い。
今回のようにグラス近くの透過スクリーンに投写する場合でも、バーテンダーがドリンクを提供する際にコースターに置いて、お客さんに提供するまでの一連の流れの中でどのような配置で、どのようなコンテンツにするのが良いかについては、まだまだアイデア含め検討が必要なため、引き続き色々と試して行きたい。


