実世界に置かれたバーチャルオブジェクトに触れる

 

はじめに

EXOSは現在Vive Trackerを取り付けてVR環境で使用することを前提となっています。しかしながら、これらの環境はセッティングにはそれなりの手間とスペースが必要です。

 

一方で昨今のスマートフォンのAR技術の発展は目覚ましいものがあります。高精度な平面認識とポジショントラッキングによって、実世界に簡単にARオブジェクトを配置することができるようになりました。しかしながら、それらのアプリケーションは画面上でのインタラクションにとどまっており、十分な活用がなされていません。

 

そこで今回は、「より簡便なセッティングでEXOSのデモンストレーションをできるようにすること」と、「ARと触覚の組み合わせの可能性の検証」の2つを目的として、スマホとEXOS Gripper(以下Gripper)をつなげてARオブジェクトに触れられるようにしてみました。

 

VuforiaによるGripperの位置トラッキング

Gripperをスマートフォンでトラッキングするために、今回はVuforiaを利用しました。

 

 

Vuforiaとは

Vuforiaは任意の画像を登録するだけで認識してくれる便利なクロスプラットフォームなライブラリです。UnityではVuforiaは統合された形になっているため手軽に導入することが出来ます。本記事でも開発環境にUnityを利用しています。Vuforia7からは平面認識・ポジショントラッキングも可能になっています。iOSではARKit、AndroidではARCoreにそれぞれ対応しているようです。
(Vuforia6とARKitは共存できなかったようなのでこれは大変喜ばしいことです。)
[参考:PTC、ARプラットフォームVuforiaの新バージョン「Vuforia 7」を発表]

 

 

キューブ型マーカーの利用

Vuforiaでは2次元画像だけでなく、直方体や円柱の面に画像を貼って認識することや、3D Objectをそのままターゲットとすることも可能となっています。Gripperの形状は手で覆われたり動いたりするので3D Objectでのトラッキングは向いていないと判断し、Gripperにキューブ状のマーカーを取り付ける方法を採用しました。

[参考: 3D Objectのトラッキングの例]

登録できるマーカーの種類

 

マーカー画像の検討

マーカーに使う画像は任意に選べますが、なんでも良いわけではありません。画像から抽出できる特徴点が少ないと、認識しづらいマーカーになってしまいます。VuforiaのTarget Managerで登録した画像がどれだけ認識しやすいかが以下の画像のように確認することが出来ます。線がはっきりとしていて複雑な画像ほど特徴点が多く取れるようです。
(今回は私が以前(5年前!)に登録していたタイルの画像があり、それがそのまま使えたのでここでも利用しました。)

マーカー画像の認識のしやすさが星の数で表現される。右では抽出された特徴点が黄色く表示されている。

 

画像が決定したらキューブに画像を貼ってマーカーデータを作成します。unitypackage形式で出力することが出来ます。実際のマーカーは普通紙にインクジェットプリンタで印刷したもので問題なく認識できました。紙はなるべく環境光の影響を受けないものを選んだほうが良いでしょう。
[参考: Optimizing Target Detection and Tracking Stability]

キューブ型マーカーの設定画面。キューブのサイズもここで設定する。

 

 

マーカー固定位置とサイズの検討

マーカートラッキングにおける最大の問題は、マーカーがカメラに映るっているときしか追従できないことです。動いたり回転したりする「手」に取り付けても、なるべくマーカーがカメラに映り続けられる位置とサイズを検討する必要がありました。
マーカーのキューブとGripperに固定する治具はCADでデータを作り3Dプリンタで出力しました。

 

要件

  • 手が回転したりしてもマーカーが手や腕で隠れないこと
  • 掴みたいオブジェクトや指先がマーカーで隠れないこと
  • 手を伸ばしてカメラからの距離が長くなってもマーカーを認識し続けられること

 

位置の検討

アプリケーションにより手の動きやカメラに映りやすい面は変わることが予想されます。様々な動作において手の親指側が下を向くことは少ないため手や腕で隠れにくいと考えました。しかし、手の真横に取り付けてしまうと、今度は親指側から手を見た際にマーカーで手や掴もうとしているオブジェクトが隠れてしまいます。そこで、キューブを少し斜めに伸ばすことでマーカーも手も隠れにくい位置を導き出しました。

採用したキューブの取り付け位置。カメラの画角に手とマーカーが収まり、かつそれぞれが被りにくい位置になっている。

 

サイズの検討

マーカーは大きすぎると手が隠れて邪魔になりますが、小さすぎると認識精度が下がるというジレンマがあります。また、画像認識なのでカメラの性能に大きく影響されてしまいます。例えばMacbookの内蔵カメラではマーカーをかなり近づけないと認識されませんが、iPhoneでは吸い付くように認識してくれます。
今回はiPhone6Sで30mm, 40mm, 50mmのキューブを検証し、40mmがサイズと認識精度のバランスが良いという結論になりました。

検証した各サイズのキューブ。

 

 

手とデバイスの表示方法の検討

VR環境用のEXOSのデモでは手だけのモデルを表示しています。VR空間では実際の手が見えないため問題ありませんでしたが、ARでは実際の手とGripperが見えてしまいます。今までのモデルをそのまま利用したところ、実際の手とAR上の手の不一致による違和感が感じられてしまいました。

当初利用していた手のモデルを重ね合わせた例。

 

 

Gripperとキューブは3Dモデルのデータがあるため、Unity上でもGripperとキューブを同じ位置・角度で配置することで、実物とCGを正確に重ね合わせることができるはずです。Gripperの開く角度に連動して動くGripperと手のモデルを重ね合わせ、その部分をマスクすることで実際の手がオブジェクトに触れているように見せることができるようになりました。

 

 

平面認識によるオブジェクトと机の干渉検出

Vuforia7ではARKitやARCoreで利用できる平面認識のAPI(Vuforia Ground Plane)が実装されています。ほとんどのiOSデバイス・Androidデバイスに対応していますが、一部制限があるものもあるようです。
[参考: Vuforia Fusion Supported Devices]

 

オブジェクトの配置はAPIで一発

Ground PlaneについてはVuforia公式のサンプルがあります。平面上にオブジェクトを配置するだけでなく、空中に配置したりオブジェクトの向きやサイズを変えたりすることも出来ます。今回はこのサンプルを拝借し、画面をタップするとフォーカスしている平面上にUIのオブジェクトを配置する機能を実装しました。

 

面を矩形として取得できない

Vuforiaではある時点で認識している面の座標は取得できるのですが、認識した面を閉じた矩形として取得できるAPIは現状無いようです。ARKitではそのようなAPIがあるのですが、VuforiaではARCoreなどの互換性のためにそのあたりはアクセスできなくなっているのかもしれません。

認識した面のフォーカスしているところにUIのオブジェクトを配置する。

 

 

まとめ

今回の記事ではスマホとVuforiaを用いてAR上のオブジェクトをGripperで触れる例を紹介しました。

 

 

Vuforiaはかなり便利

所感として、まずVuforiaはかなり便利です。マーカーの作成など手間がかかる部分はありますが、Unity上で行う作業はマーカーとそれに合わせて表示するオブジェクトの配置をするくらいでほぼコーディング無しで実装できてしまいます。

 

 

スマホARの手軽さ

今回制作したものはスマホとGripperさえあればどこでもデモをすることが可能です。Viveを用いたデモと比べるとBaseStation等のセッティングが不要で空間も必要としないため、かなり手軽に使えるものとなりました。

 

 

距離感の問題

今回のスマホARでは両眼視差が得られない分VRに比べ空間の知覚は困難になりました。触覚インタラクションには手とオブジェクトの位置関係が重要であるため、この影響は大きいです。ただ、オクルージョン(=遮蔽)を含めることで単眼性の奥行き手がかりとなるため使用感はある程度改善されました。また、オブジェクトに対して手を伸ばして触れることでも距離感を認知できるため、簡易デモ等の用途には使えそうです。

 

 

触覚で実世界とバーチャルの境界がなくなる

今回制作したデモを体験して感じたことは、触覚があることでARで表示したバーチャルなオブジェクトも実際に「そこ」に存在するものとして扱えるということです。実世界の平面上に転がるバーチャルなオブジェクトを掴み、さらにそれに対して硬さがフィードバックされる体験は、実世界とバーチャルの境が一気になくなる感じがしました。逆に触覚がなければ、オブジェクトを触わる・掴むということは視覚的にしか判断することが出来ない為、非常に困難な操作になるでしょう。

今後LeapMotionのProject North Starのように両眼視差を含んだARデバイスが普及することでAR環境での空間知覚が改善されていくはずです。そこに触覚が加わることでARはさらに身近でリアルなものになっていくだろうと感じました。