見出し画像

日本科学未来館「きみとロボット展」でD.E.A.D. の投票システムを作った

Tatsuya Kida

こんにちわ。Whatever という会社でプログラマをしてる貴田です。

日本科学未来館で開催中のきみとロボット展で D.E.A.D. の投票システムを展示しています。会期は2022年3月18日(金)〜8月31日(水)。

この記事では、おもに展示を作った時の簡単な Tips を書きます。

D.E.A.D. とは?

人類史上初、死後デジタル労働人口が急増中!?


近年、AI・CG技術を利用して、故人に関する特徴データ(顔画像、音声、会話テキスト…など)を学習することで、擬似的に故人があたかも復活したような表現の制作を簡単に行えるようになりました。一例として、DeepFakeはともすれば肖像権を侵害するような表現も可能になり、倫理観の面から多くの議論を巻き起こしています。

Whatever社は、この状況を「D.E.A.D. (Digital Emloyee After Death = 死後デジタル労働)」と名付けました。まだ法制度・社会制度が整ってない人類初のこの状況に対し、「D.E.A.D.」を自社プロジェクトとして、

  • 事例を集める

  • 世論を整理する

  • 自分の意志表明を簡単に行える場を作る

などの活動をしています。詳しくは D.E.A.D. のサイトをご覧ください。

「きみとロボット展」での D.E.A.D. 展示について

特別展「きみとロボット展」では多彩なロボットが展示されています。Zone2-3「いのちって、なんだ?」というコーナーで D.E.A.D. を展示しています。

展示風景

D.E.A.D. のプロジェクト紹介のポスターを見たあとに、

あなたは死後、あなたの個人データとAIやCGなどを利用して
「復活」させられることを許可しますか?

プロジェクターで大きく投影されてる問い

という問いに YES or NO で自分の意思を投票し。

NOの意思を投票する小野さん


お財布に入るサイズの意思表明カードを持ち帰れる展示です。

NOの意思表明カードを持ち帰る小野さん

YES or NO の投票システムについて

無人で連続投票のテストをしていた風景の動画はこちらです。

YES・NOボタンの物理ボタンが押されたら、
Unity で作ってる映像演出を流して、
什器についてる LED RingLED Matrix を制御して、
お客さんの視線を意思表明カードに誘導しつつ、
裏でサーバーに結果を同期する、
という展示の基礎みたいなシステム構成です。

whimsical.com で描いたシステム構成図

得られたテクニカルな知見 - Findings

何においてもやってみたら、はじめて得られる知見はあるものです。
このような展示システムを作る上での Tips をつらつら書きます。

物理ボタンの市販品は最大直径 10 cm 

10cm より大きい物理ボタンは今回探した範囲だと特注品になってしまう、ということがわかりました。
大きいは正義だが、プロジェクトの期間・予算によって要検討です。
今回は OBSA-100UMQ という物理ボタンを購入しました。

物理ボタンのデフォルト LED 粒の明るさに満足して頂けない

市販の物理ボタンを数種類、購入して試しました。ほとんどの物理ボタンには、LEDが1粒最初から入っていて、押したら光るようになっています。

しかし、1粒の明るさでは、光が弱く、クリエイティブ陣に満足して頂けなくて、ボタンに穴を空けて、LED Ring を追加し、光を増量することにしました。

before 1粒、after 13粒

LED Controller BC-204 が便利

TDA(Tech Director's Associtation) の Slack チャンネルで教えて頂いたのですが。BC-204 という Artnet-SPI の LED Controller (680粒 x 4ch) が NeoPixel のような LED 粒を複数制御するのに便利でした。

BC-204 でLEDを制御してる様子

注:

  • 25fps まで

  • 制御可能な LED IC は指定がある

Unity のタイムライン機能が便利

はじめていじりました。タイムラインに同期して、映像内に登場する GameObject のアニメーションの発火タイミングを現場でポチポチ調整できるので便利でした。今後も使っていきたい。

Whateverに所属されてるmurasaqiくんが developer 会で話してるのを聞いて興味を持ちました

アルファ付き乗算 Shader 

ググったけど、出てこなくて、いじってたら、できました。
地味だけど、みんなどうしてるの?ってなりました。
UnlitAlphaMultiplyTextuer.shader

Slack Reporter 便利

展示系 Unity 案件でいつも使ってる Utility スクリプトが幾つかあって、SlackReporter が特に便利なのでご紹介させてください。BestHTTPていう有料アセットに依存してしまってますが、展示で毎回使ってます。
SlackReporter.cs

平時は未来館での投稿数が毎晩集計されて送られてきます。

プログラムでエラーが起こったときは、エラー文言が送られてきます。今回の展示では何も起こってないので今の所、ホッとしてます。

展示のテストスクリプトってどうするべき?

今回は Unity が Keyboard イベントを受け取ったら、以下のような挙動をするように設定しておき。

  • 「y」「n」キーで、YES・NOを投稿できる

  • 「esc」キーでアプリ終了

pythonで Keyboard をエミュレートして、YES・NO連続投稿やアプリ起動・終了を何度も繰り返すスクリプトを書きました。

import os
import time
from tkinter import Y
from pyautogui import keyDown, keyUp

count = 0

while True:
    os.system("..\\Bat\\01-start.bat")

    if count % 2 == 0:
        keyDown('y')
        time.sleep(1)
        keyUp('y')
        time.sleep(15)
        keyDown('n')
        time.sleep(1)
        keyUp('n')
        time.sleep(15)

    else:
        keyDown('n')
        time.sleep(1)
        keyUp('n')
        time.sleep(15)
        keyDown('y')
        time.sleep(1)
        keyUp('y')
        time.sleep(15)

    os.system("..\\Bat\\02-end.bat")    
    time.sleep(15)
    
    count += 1

いつも展示系のシステムは数日経って、使い込んでたら思わぬレアトラブルが起きたりするので、そういうのを事前になるべく耐久テストできるようにしたいものです。

Arduino の展示パッケージングの正解とは?

Arduino を展示用にパッケージングするノウハウ、ググったけど出てこず。さすがにむき出しはいかん、と思い。

ケースを買って、秋葉原の千石で端子台を買ってみたんですが。

動作はするが、導線の長さが揃ってなくて、ねじれたりもしやすい


端子台 - 導線の長さが揃っておらず、コレジャナイ感が出ました。
会社の developer 会で、「みんなどうしてるんですか?」と相談して、いっぱいアドバイスを頂きまして。

- ターミナルブロック or XHコネクタをユニバーサル基盤に使えば、ケーブルの長さが揃う
- プラケースの横に穴開けて線を通す
- 基板にスペーサーとアクリル天板つけてケースぽくする (画像↓)

Whateverのdeveloper陣のみなさまよりのアドバイス引用

ツッコミ・感想も頂きまして。

- Arduino はシリアル通信じゃなくて、 Keyboard化した方が使い勝手がよさそう
- そもそもブレッドボードじゃなくて、ユニバーサル基盤に固定したほうがいいのでは?
- そもそも Aruduino じゃなくて、High/Low をシリアル化・LAN化するパッケージングされたデバイス売ってるよ? DIO-0808LY-USB とか LANIO とか

Whateverのdeveloper陣のみなさまよりのツッコミ引用

とりあえず自分としては、「ターミナルブロック 」+「プラケースに穴開ける」てやり方が、素早く固定できそうだったので、これで挑みました。

プラケースの穴が汚いけど、ターミナルブロックで導線はしっかり固定されてる

これがArduinoパッケージングの完全正解とは言えないと思いますが。動作してるので、一つの解ではありそうです。

以上、展示ノウハウ紹介の記事でした。


追記メモ:
この記事を公開したあとに、キヨくんから 「ルートアール 多機能 自作入力装置用USBスイッチケーブル 3スイッチ用 RI-SWCB3」ていうのを以下のコメント付きで教えて頂いた。

arduinoとかのマイコン使わず、こう言うモーメンタリスイッチをPCのキーインプットに変換してくれるやつ使った方が、綺麗 + 量産とメンテ楽なので、運用系の場合はこちらの方が楽だったりするかもです!

これが正解だったかもしれない。いつか機会があれば試したい。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!