富士通研究所 CPSプロジェクトのhatadaです。
一昨年私たちの部署では富士通研究所のオフィス内に岡田記念ライブラリという、研究員の憩いと自由な議論ができる場を目指したスペースを作りました。 現在では社内のミーティングをはじめ、他社様との会議、研究員の自主的な活動など沢山の利用がされています。 岡田記念ライブラリは主には茶室とサロンがあり、どちらにも私たちが研究開発しているIzuminaを導入しています。
Izuminaとは、情報共有のためのシステムで、壁やテーブルをペンで操作できるようにして、その上で写真や資料を広げたり、アイディアやコメントを書くデジタル付箋を作ったりできるようにするサービスです。 サロンのテーブルと壁、茶室の畳と壁は、Izuminaがプロジェクターで投影されて協働作業ができるスペースになっています。
今回、岡田記念ライブラリの茶室では、空間演出用のシステムを新規に開発してIzuminaと連携することで、茶室の演出ができるようにしました。Izuminaは、開発者がJavascriptやHTMLで開発したIzuminaアプリを、後から追加して動作させられるプラットフォームとして設計しています。 今回開発したシステムは、演出用に開発したIzuminaアプリをIzuminaのAPIを通じて制御することで茶事の演出を実現しています。
作ったもの
茶室内での人の振る舞いを検知するためのセンサーと、検知に基づいて演出シナリオを実行するためのシステムを開発しました。 まず、富士通デザインに協力してもらい、茶事の演出のコンセプトを固めました。 そして、亭主と客人の茶室内での動きに合わせて畳や床の間、壁にどのような演出をするかを、デザインと実現性の観点からシナリオに落とし込んでいきました。 その上で、「着座検知センサー」、「茶器検知センサー」、「ドア開閉センサー」および「シナリオエンジン」を開発しました。
着座検知センサー
人が茶室に入った後の着座イベントを検知します。
茶室の天井には、以下の図のように3次元センサXtion2を設置しており、Xtion2から取得した3次元点群を着座検知モジュールに送ります。検知モジュールでは、まず背景差分を行い、人を含む前景だけの点群を抽出します。次に、抽出した前景を床の座標平面に投影し、点群をクラスタリングします。クラスタリング結果に基づいて人領域を検出し動線を抽出します。この動線の3次元座標変化から着座イベントを検知します。
着座イベントを認識するためには、隠れマルコフモデル(HMM)を利用しています。HMMに入力する観測量として人の頭部の高さになります。着座する時に頭部の高さが徐々に低くなるので、HMM内部では状態遷移が起きて着座の尤度が出力されます。この尤度がある閾値を超えると、着座と認識されます。
着座イベントを検知した後、HTTPで後述の「シナリオエンジン」に送り、シナリオを駆動します。今回開発した着座の検知は、複数人が同時に着座することにも対応しており、即応性やロバスト性に注意して開発しました。
茶器検知センサー
亭主が立てたお茶をお客様に差し出すことを、部屋が検知し、茶碗の周りに季節を感じさせる映像をプロジェクションすることで茶事を演出します。このために、茶碗が置かれたイベントの検知モジュールを作りました。
茶碗の検知では、3次元点群ではなく、Xtion2が取得したRGB画像だけを利用しています。茶碗の特徴を事前に学習しておき、認識処理の際に画像からその特徴を抽出して茶碗かどうかをリアルタイムに識別します。
畳の上に茶碗が無い状態から在る状態に遷移するとHTTPでイベントをシナリオエンジンに送信します。
ドア開閉センサー
亭主や半東が出入りする躙り口にはドア開閉センサーを設置し、亭主の入退出という茶事における大事な場面をプロジェクションマッピングで彩ります。このためにドアに磁気式のあけしめセンサを設置しました。このセンサーは扉に取り付けている磁石の接近や離脱を検出します。
シナリオエンジン
シナリオをFinite State Machine (FSM)で記述し、IzuminaをAPIを通じて制御するためのシナリオエンジンを開発しました。 FSMのステートがシナリオ内のシーンに相当し、シーンの開始と終了時に、Izuminaアプリの開始や終了等の制御をします。 ステートの遷移は着座検知や茶器検知、ドア開閉センサーやシナリオ制御用アプリからHTTPで受信するイベントを条件に行います。
シナリオはセンサーが検知ミスした場合でも、人の操作等で流れるようにする必要があり、遷移が複雑になりました。 そこで、シーンの遷移の仕方を簡単に確認できるようなシナリオ可視化UIを、dagre-d3というグラフ描画ライブラリを用いて作成し、シナリオの作成に役立てました。
全体の動き
今回開発したセンサーやシナリオエンジンを用いて次のような演出を作成しました。
- 客人が着座する位置にマークを表示し、着座するとマークが消える
- 茶器が客人の前に置かれたときに、茶器を回して飲むようなガイダンス映像を表示
- 亭主の退室に伴い客人に退出を促す映像を床に表示
実際の動きは映像をご覧ください。
演出は客人の入室から退室まで行われます。 開発したセンサーのイベントをトリガーにシーンを遷移させ、映像や画像を表示するIzuminaアプリをシーンに応じて制御することで演出が実行されます。 いくつかの箇所では、その場で柔軟に演出を進めるため、亭主による操作でシナリオが進むようにしました。
まとめ
一般的なオフィスから環境を変えることで新たな研究の仕方を目指す場として、社内にIzuminaを導入した茶室とサロンからなるスペースを作りました。 茶室ではセンサーとIzuminaを組み合わせて茶事の演出をすることで、Izuminaの技術と日本文化をお客様に体験してもらえる場にしています。
今回の開発にあたっては、Izuminaが様々なIzunumaアプリを実行できるプラットフォームであるという特徴を活かすことで、Izumina内部に改変を加えることなく、演出用Izuminaアプリを追加することでシナリオを実現できました。 これを通じて、サービスを様々な形で展開するために、システムをプラットフォームという観点から設計していくことの重要性を改めて認識しました。
謝辞
本稿の各種センサーに関する記述は、富士通研究所 CPSプロジェクトのchenさんに協力いただきました。