2018年9月27日木曜日

IVRC2018体験報告

今年もIVRCの予選作品を全部体験する事に成功したので、全作品の感想を。チームへのヒアリングをしたりもしていますが、私の主観で書いてますので、各チームの思いとは乖離している場合があります。ご了承ください。

孤独をFoot Bath

水面に波を作る事で、HMDごしに見える足湯で少女とのインタラクションを楽しめるというものです。横を歩いて行く時に、視界には入ってないものの、確かに人が通った!という感触がありました。人間は無意識に水面を良く捉えているんだなと気が付かされました。ただ、その後少女と水面を揺らしあって遊ぶのですが、その際には水面のCGと実際の波面が一致いるとも感じられず、少し残念でした。横を通り過ぎる時の存在感に絞ったほうが評価が上がったかも知れません。

ブレインツリー

頭に根っこが映えてくる感覚は、頭部マッサージ用の針金で出来たアレを押し込むだけなのですが、CGとあいまって「何かが頭皮を這い回ってきている」感がすごいあります。また水を与えると首回りをチューブで水冷するのですが、確かに湿った土に首をうずめたらこんな感じだろうなぁ。という感じがしました。そういった触覚・温覚・湿度感はよく表現できてるなと感じました。ストーリーとしては頭に生やした木を育てて最後に引っこ抜くという話なのですが・・・体験がの刺激に集中してしまうせいか、ストーリーにはイマイチピンと来なかったです。

天獄渡り

セグウェイに乗って、高い場所を運転していくVRゲームなので、ゲーム内容としては割と普通。工夫している点は膝に振動モータを取り付けて、膝が震える感覚を出していた点。震える事で実は恐いのでは?という錯覚を出したかったとの事だが、「あ、ふるえてる」に留まってしまった。私の筋肉の緊張感が足りなかったのかもしれない。また下を見ると震える設定になっているという事だったので、ゲームクリアに集中して遠くを見ると中々震えを体験できない。というのがちょっと残念だった。長時間の震えを経験したらもしかしたら恐怖を錯覚したのかもしれない。

Be Bait!

自分が釣りエサになって食べられに行くというゲーム。エサになるので当然泳ぐ必要がある。ハンモックを二分割にして人間をつるシステムは乗り降りも楽だし、下半身の振動が上半身に伝搬する事がないので自然に水中浮遊の体験ができた。ただ、泳ぎ方が体を横にゆらせば泳げるというシステムだったので、ゲーム設定である「人間がエサになって海に飛び込む」ではなくて、人間が小魚になって、エサになりに行くという感じだった。見事サメに食べられると、上の黒い板が落ちてきて食べられちゃった感を提示するのだが、全然痛くはないけど、「覆われたぞ!」感はちゃんとある絶妙な重さだったのが印象的だった。

蹴球インパクト


PKをVRで体験できるシステム。足の甲に振動がくる以外は普通にありそうなVR体験になってしまっていた。というのも私が体験したときは「スーパーキック」ができるシステムが故障中だったので、一番の売りが体験できなかった。本当ならば、一旦ゴムチューブで足の動きを引き留め、力をためてから一気に解放されてシュートを決めるというスーパーキックができる予定だったとの事。キャプテン翼の足にぐにょっと変形して貼り付くボールの表現だったとの事だった。何となく想像では楽しそう。本選ではちゃんとスーパーキックを体験したい。

出血体験

冷たいものと熱いものが同時に触ると痛みを感じるという錯覚を利用して傷口の痛みを体感するシステム。狼に腕を引っかかれて出血する体験なのだが、上の錯覚のさいに副次的感じる熱を、血がドクドクと吹き出すときの熱としての表現に上手く再利用していた。コンテンツとしてはボーガンを左手でかまえて、右手で狼をねらってると左手を狼に噛まれてしまうというものだったが、特にその導入はあまりピンとこなかった。左手を固定されているというのとボーガンの相性が余りよくなかったのかもしれない。

鼻腕

自分が象のような鼻がついていて、アゴを動かすと鼻が操作できる。鼻息でモノを掴んだりもできるという体験ができる装置。指示されたタスクを淡々とこなすコンテンツになっていた。割と苦労するのかな?とおもいきや、違和感なく鼻の操作がすぐにできるようになるというのが面白かった。鼻の先に思いものをもつとヘルメットの上のお守りで前方が重くなるようになっていたが、そちらの重みに関しては鼻で操作してるぞ感が少なく、首で頑張ってるぞ感があった。

ピノーズ

こちらも鼻の作品だが、物理的に鼻を引っ張ると共に、鼻のCGが伸びて、自分の鼻が伸びたかのように感じる作品。CGとともに提示されるので、伸びたかなという感じは確かにあった。途中で、ものに鼻があたるとコツンとなったりもする。 なぜか、鼻を左右に揺さぶってびっくりさせる機能がついていたが、これに関してはどう解釈してよいかわからなかった。

無限滑り台

ベルトコンベアの上にソリをおいて無限にすべりおりる感覚を提示しているVR装置。手すりの丸い装置も回転して、手すりをすべっている感じをだしている。また手すり自体がそれぞれ回転することで、カーブを曲がっている状態を提示する事を狙っている。 一番滑り台感をかんじたのはベルトコンベアの継ぎ目を通過するときで、継ぎ目のある滑り台あるよね!って感じだった。しかしこの継ぎ目は狙って作ったものじゃなく偶然の産物であったという事だった。また滑り台は途中で曲がるのだが、このとき手すりが回転する。物理的に考えれば無茶苦茶な挙動だが、これによって自然に体のバランスがくずれお尻がベルトコンベアのずれた位置に行ってしまう。このお尻がずれたことでカーブ感がでていた。私の体感としては手すりはお尻をずらす、きっかけにすぎなかったのだ。狙って作ったのなら凄いが、そうじゃない気もする。ちなみにCGの滑り台カーブは90度カーブだったがさすがにそんなにはカーブした感じはしなくて、お尻は30度ぐらいに感じた。

TeleSight

HMDを被ってる人の動きを仮面がコピーしていて、外にいる人はHMDかぶっている人が「どっち」方向にある「何」をみているのかが解るようになっている。コンテンツはシューティングゲームになっており、防御する際には外の人に人形の目を隠して貰うという、外と内で相互に影響を与えるゲームになっている。「中の人」と「外の人」両方体験して初めて意味がわかる作品。中の人からは外の人がHMDのせいで見えないし、外の人もプロジェクタが不鮮明である事や、所詮はロボットの目線なので追いにくいという事から、お互いの動きが「ある程度解る」というものだった。そのため結局声で指示を出すことになるのだが、目でやろうとしてた時のもどかしさの対比で、声を出してコミュニケーションする事の大事さを実感した作品だった。(本人は多分そっちは意図してない?)

とうめいなおかいもの

こちらも両方を体験しないとわからないシリーズ。足跡だけが見える店舗模型と、その中で買い物タスクをこなすHMDを被った人という作品。透明人間がお店にいますよ。という設定だったのだが、透明人間である必然性は謎だった。とにかく足跡だけみて何しているか想像を巡らせて見ましょうというもので、後でHMD被って体験すると「あ、これしてたのね」という感じだった。後でヒアリングしたところ、ハリーポッターの足跡が見える本にインスパイアされたものだという事だった。ハリーポッターでは足跡をつかってライバルを出し抜いてやろう!だとか、憧れののあの子の足跡だ〜♪的な事前情報があるので足跡だけで楽しめるモノがあったんだと思う。そう考えるとコンテンツにもう一ひねりほしかった。

目からビーム

熱をまぶたに一定時間感じるとビームが出せるようになるので、それで目からビームをだして敵を倒そうというゲーム。残念ながらシステムが上手く動かず部分的な体験になった。目からビームの前にまぶたに力がたまるのを表現するのに外部から赤外線でまぶた付近をあっためているのだが、外からの熱であって内からわき出る力感がなかったのが少し残念だった。とはいえ、顔の熱を狭い範囲感じさせようという熱意はすさまじく、もういっぽ何かできたのかな。という気がした。

めざせドラムマスター

見たまんま、ドラムの音ゲー(ただし、3DCGが空中にういている)であるが、ドラムが上手く叩けた時だけタイコの皮が張っているというものだった。タイミングがうまくあった時だけ気持ちよく叩けるというコンセプトは面白いし、実際に張っている時と張ってない時の違いを感じる事はできたが、今ひとつ太鼓の皮の張りが弱く、そもそも「気持ちよく叩ける!」が体験できなかったのがちょっと残念だった。

ハコニワールド

キューブを触るとCGの中のビルを操作できて振り回す事ができるという作品。ネタとしてはIVRC2008のふしぎデスクの亜種なのだが、CGと現物模型のサイズが合わせ込めてなかったのが少し残念だった。

金縛り布団VR

部屋の中でくつろいでいると、幽霊がやってきて、布団の上に飛び乗ってくるという作品なのだが、映像が非常に映画的に作ってあった。具体的には、ほぼモノクロの世界で幽霊はパッと現れては消え、次ぎにはもっと近い所に現れては、一瞬にしてまた消え。と繰り返して最後にベッドの上に現れる。その時、錘が同時に足の上に落ちてきてビビらせる(幽霊に押さえられた表現)。 途中にカメラブレなどをいれたりして映画的表現を頑張って3Dの中に作っているのだが、HMDで映画的な表現を見ると不思議と、テレビで見るよりも他人感がでて、逆に没入できなくなるんだな。ある意味失敗なんだけれども学びの多い作品だった。

ウォーターストライダー

水面をアメンボになって移動していく体験ができる作品。人間の重さに耐えながら手足を上下に揺動させる(+傾ける)ハードを軽く作るのに涙ぐましい努力をしていた。ただCGの波の振動周期と手足の揺動の周期が合ってなかったため、ゆれているが何故ゆれているかがわかりにくかったのが残念だった。

夢をバクバク

口をあけると空気をブシュッっと打ち込まれ、口の中に何かが入った感じを出す装置。口を閉める必要がないコンテンツ体験だったので、何故わざわざ口の開閉をセンサーで検知する必要があったのか?と疑問は色々あるが、空気の塊が口に入ってきた!という感じはちゃんとあった。また空気の塊をつっこむ時意外も弱く空気を流しておくことで違和感を無くすという事をしていたのは、面白い試みだった。画面中で自分が移動しているので、確かに全体的に違和感がなくなっている気はした。がっつり不透明度100%のオブジェクトが入ってきた!って感じには鳴らなかったので、感覚にCGを合わせるなら不透明度20%ぐらいにおさえたほうが良いのかも?とは感じた。

華麗なる回転

スケートで4回転ジャンプをするCGにあわせて、人力で台座を90度回すことで4回転まわった感じがするという技能系の作品。私が体験したときは、タイミングがずれたせいか1回転したかな?という感じだった。それでも90度にくらべれば4倍なので健闘していた。
ちなみに自力で滑る方向・速度は決められない、追体験専用であった。

ガラスクラッシャー

ガラスを割る感覚を楽しむ作品。CGは間に合わなかったようだが、割る触覚の体験はできた。ガラス・・・ではないが、昔割ったことのある素材の感覚がした。フィルム強化されたガラスあるいは、飴のように、割ったあとに何回かたたいて崩さないといけない感じのもの。ガラスとしては残念だったが思い出せないけれども、なんかある!この割りくずしていく感覚!という作品だった。

異世界(あちら)のお客様から

Vtuberにカウンターでお酒をすべらせて渡す作品。たったそれだけだが、受け取ってくれると嬉しい。ちなみに裏にほんとうにVtuberが控えている。こういったコミュニティ要素のある作品は、短時間のデモでは難しいが果敢によく挑戦したと思う。ぶっちゃけVtuberの反応で価値が大きく変わるので、今後に期待。

リトルウォークメア

超音波で手のひらに触感を発生させて、手のひらの上をコビトが歩く感じを体験させるコンテンツ。ちょっと出力が弱かったのが残念。あとわりと有名なデモも多くあるので、レッドオーシャンで戦う必要があるのが大変そうだった。

回路のお医者さん

ブレッドボードなんだけど、電線のかわりに特殊なチューブで信号をつないで、ロボットを動かすシステム。
デバイスとしては、すごく良く出来ていて、チューブば律動するし、チューブをつかんでる力を検出して、出力を調整するしくみもよくできていた。信号源や、信号を反転する素子があったりして、教育用途を目指しているのかな?という感じも見受けられた。
ただ、それで行うデモが、ロボットの手足を振るだけに見えてしまう所もあった。もっと色々使えそう!!というモヤモヤが残る作品だった。

2018年6月10日日曜日

YDLidar X4 をESP32で使ってみた

1万円LidarのYDLidar X4を使ってみた記録です。

概要

・YDLidar X4のシリアル信号デューティ比問題を改造で乗り切り、ESP32を含む様々なシリアルに繋ぎやすくした。
・ESP-IDF向けの実装でデータを取得できるようにした。
・角度計算の式を近似式で軽量化した。


ハードウェアの修正

YDLidar X4にはシリアルのデューティ比が狂うという問題があります。以下のオシロの図はLow/High/Low/Highとなっていますが、真ん中のHiとLowの幅をみると長さが違います。これを修正する必用があります。
この問題を修正する改造ポイントが以下になります。ここは赤外線で来た鈍った信号を閾値で0/1に変換するコンパレータが入っています。矢印の先が閾値を決定する12kの抵抗(
2個)です。

 上の図でP2の位置の電圧を可変にするために、既存の抵抗をとっぱらった後に、
抵抗とポテンショを以下のように繋ぎます。
P1==[R4.7k]==[POT 10k]==[R4.7k]==P3
ポテンショの中点をP2に接続すればOKです。
調整はオシロがあれば、良いのですが、なければ以下の私の実装だと、check sum errorをESP_LOGEで出力しているので、そのerrorが減るように真ん中付近からポテンショを動かしてみて下さい。

ESP-IDF用の実装

オフィシャルにはArduino用の実装があります。(https://github.com/EAIBOT/ydlidar_arduino)しかし、この実装はIO待ちをループで実装しているため、ESP-IDFにはむきません。ということで、実装してみました。
 https://bitbucket.org/akira_you/esp-ydlidarx4/

使い方はmain.c及びydlidarTask.hを見て下さい。C言語でのインターフェイスで呼び出しています。複数のYDLidarを使うにはydlidar_beginの中身を参考にYDLidarクラスを直接呼び出して下さい。

計算高速化(興味ある人向け余談)

 ESP32で使う上で残る問題が計算量です。YDLidar X4のデータは「角度」と「距離」からなりますがこの角度は、距離に依存して補正するAngCorrectという関数で補正をかける必要があります。こいつがatanを含んでいるのですが、5kHzでatanを計算するのはESP32には余裕というわけではないです。
角度補正式

このAngCorrectは十分にDistanceがあれば、1/(a*[Distance]+b)-cという式の形に近似できます。Cは無限遠時の値、約-7.99に固定できるのでa,bを以下のスクリプトで120mmから10mの範囲で最適化しました。(ちなみに120mmは最小測定距離)
  https://gist.github.com/akirayou/3fd54239e6bbd4abb416c8bea73ad1f0




YDLidarX4は罠の多い製品ですが、1万円ならないよかましですよね。
以上


 

2018年5月23日水曜日

デザイナにはデータを構造化して渡そう

イベントのスケジュール欄とかの印刷物を作っていると、後から後から修正が来て結局修正漏れになったりする事って多いですよね。ということで西院フェス(音楽フェス)のパンフ作成でやって上手く行ったワークフローの紹介です。
 イメージ的にこんなやつです。このミュージシャンが変更になった、バンド名に「.」が抜けていたとかいう連絡さ五月雨式にやってきます。

ステップ1:情報を一カ所に集める

西院フェスの場合は、Webで全てを管理してますが、いきなりハードル高いデスよね。Google docなんかでエクセルを共有するだけでも良いかと思います。
エクセルでやるならばvlookupなどを使って、スケジュール一覧にバンドIDいれれば、そこから各種データを切り出せるよ!っていうセルマクロが要るとは思います。

ただし全員がそのデータを見て「便利」と思わないと積極的に更新してくれません。各自の連絡をうけて一人で更新すると気が滅入るので、各ブッキング担当・会場担当が自分で更新してくれる空気作りに数年かかりますが、できちゃうと超楽です。
西院フェスでは以下のように一カ所のデータを多面的に使う事で、全員がソコに有るデータが原本という風に認識しています。

  1. ブッキング担当の音源選考用データベース(音源が貼り付けてあって聴ける)
  2. Webに載せる用のライブスケジュール(自動で連動)
  3. パンフ/ポスター担当がスケジュール及び、ミュージシャン/会場一覧覧をGET
  4. 出演時間の交渉のための各会場担当用の連絡先一覧
  5. PA番長が会場ごとに機材仕込むための要望機材一覧表
  6. PAマンが会場で使う出演順のセッティング図一覧
ちなみに、西院フェスでは以下のようにJSONでスケジュール一覧をGETできるサービスを持っているので、ソレをつかってパンフ担当は仕事をします。

https://saifes.net/joinA/artist_json.php?e=2017spring

ステップ2:データを流し込む

データをイラレのスクリプトを使って流し込みます。文字列がはみ出たりするけれども、どうせフォント縮小でいくのか、改行でいくのかパンフ担当が拘りたいところなので、何もせずはみ出たまま流し込みます。
この時流し込む座標はスケージュール時間と、テンプレートとなるイラレファイルから計算して座標を求めています。なので既に作ったスケジュール枠の上にレイヤーを重ねれば左上の絶対位置は正しいという風になります。


ステップ3:差分を自動生成する 

流し込みができたので完成と思いがちですが、字詰めも終わったぞ〜〜って時に変更依頼がきたりします。ここでゼロから流し込みするわけにはいきません。
ということで、差分情報を元に変更一覧を作ってあげます。この変更一覧は上の流し込みにつかったjsonを流し込みした日付を付与して保存しておくことで解決です。その流し込みからの差分をしりたいので、二つのjsonをひかくするだけでOKです。diffsche.pyという専用のプログラムで差分があったスケジュールだけを出してくれるので、そこだけ修正漏れがないかを確認すればOKです。
会場担当がバンド名やジャンルを修正して、それをパンフ担当に伝えてなかったって事がよくあるのですが、そういう伝達漏れの心配はこれでなくなります。


そして、デザイナの作業も変わります。五月雨式に対応するのではなく、デザイナが作業するタイミングで差分データの作成をデータ提供者に要求するのです。確認工数が減るとともに、工数が読みやすくなります。


参考

ソースコードはここに置きました。以上の事を発注者側が全部やるのは無理にしても、こういう管理ができるように、せめて、デザイナには一貫されたフォーマットで矛盾のないデータを作って渡してあげましょうね。
https://bitbucket.org/akira_you/saifes_nagasikomi

 

2018年3月15日木曜日

pyenv環境のpythonににOpenCV3.4.1を入れる

ubuntu/pyenv/python3.6.4の環境で、OpenCV3.4.1をインストールする時のメモです。
OpenCVのインストールについて調べるとsystemのpythonに入れる方法がたくさんでてきて
pyenvで最新のpython試したいぜ!な人向けの解説って少ないですよね。


pythonインストール

pythonのインストール時にはlibpythonを作ってもらうために、enable-sharedオプションが必要です。ということで、以下のようにpythonを再インストールする必要があります。

ONFIGURE_OPTS="--enable-shared" pyenv install 3.6.4

(注:readlineが足りねぇよ。等の警告がでたら素直に追加インストールしましょう。)

OpenCVダウンロード

以下URLからソースコードをダウンロードします。(gitで最新追い駆けたい人はgit cloneで)

https://github.com/opencv/opencv/releases
https://github.com/opencv/opencv_contrib/releases

解答すると、opencv-3.4.1とopencv_contrib-3.4.1 ディレクトリができてるはずです。

依存パッケージインストール

OpenCVのサイトを参考に以下をインストール。

sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

 

インストール

pyenvのインストールディレクトリは、以下のようになってるはずなので「pyenv which python
」等として調べてください。でとりあえずPROOT環境変数にいれています(書きやすくするため)

export PROOT=~/.pyenv/versions/3.6.4

buildディレクトリを作ってcmakeを走らせます。インストール先はPROOTします(root権限不要)。
注意事項としてはPYTHON3_LIBRARIESを設定する事と、PYTHON2やJAVAを無効にしておくこと。そうしないと、python3のみにインストールとする事で、すべてのライブラリをroot権限なしでインストールできるようになります。 

cd opencv-3.4.1/
mkdir build
cd build



 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules/ -D BUILD_opencv_python3=ON  -D CMAKE_INSTALL_PREFIX=$PROOT -D PYTHON3_LIBRARIES=$PROOT/lib/libpython3.6m.so -D BUILD_opencv_python2=OFF -D BUILD_JAVA=OFF  ..

注:cmakeをやり直す時はCMakeCache.txtを削除してからcmakeやりおします。
 ここでPython3の項目に「NO」がないことを確認します。



あとはmakeを実行してインストール。

make -j
make install


インストールされてる事の確認は、pythonを起動してimport cv2をすればおk

あと、ROSを使ってる人等は環境変数PYTHONPATHが設定されてたりします。
そっちにpython2.7用のOpenCVが入ってるのでそっちが参照されてしまいます。
unset PYTHONPATHしましょう。





2018年2月7日水曜日

VuforiaのVuMarkでのビット(Element)数について

VurMarkを使おうと思ったけど、会社ではイラレ無い。でも、サンプルのSVGみてXML編集すれば、普通にマーカ作れるじゃん!そこまではいいんだけど、マーカのビット(Element)数を計算するのにイラレがやっぱり必要という落ちで、年休の暇を見ておうちのマシンで検証してみた。
https://library.vuforia.com/articles/Training/VuMark-Design-Guide

結論としてはかなり変わっている。例えば文字列9文字入れるのと10文字入れるので大きくビット数が変わるのでデザインに気を遣うので要注意です。

Stringの場合

 エクセル風にかけば「=7*[文字数] + 7*MAX(MIN(20,INT(( [文字数] -10)/10)*2+4),4)」でエレメント数が得られます。若干9以下と100ちょうどに気持ち悪い処理が入ってる感じがするけどとりあえずmax,minで対応してます。

Binaryの場合

 Stringが7bitなのに対して8bitになっただけかと思いきや、maxの所の引数が違うので注意です。
「 =8*[byte数] +8* MAX(MIN(16,INT((F2-10)/10)*2+4),4)」

byteにしても文字列にしても、20以上では10単位余計なおまけコードが追加されるので20文字ちょうどや!ってなった時は頑張って19文字に押さえるとドット数を減らせます。逆に19文字で白黒の偏りが大きくて気持ち悪いなって時はダミーで1文字足せば白黒の偏りが減ります。

Numericの場合

 規則性が謎でした。
 2^2(=4)以下では必要ビット数+16
2^3(=8)以上では必要ビット数+25
2^19(=1048576)以上では必要ビット数+31
2^50(=1125899906842620)でいったん必要ビット数+30になるけど
2^51で必要ビット数+31に戻ったので・・・・怪しい領域です。

最大値は2^49以下で使うのが無難でしょう

ちなみに以下のように<g id="VuMark-Description">の中に書くのだけれども、IDlengthはダミーで、MaxIDはGUIでの設定値の+1の値をMaxIDに入れるようです。なので編集途中のイラレやSVGにはいってるMaxIDと登録する時のSVGのmaxIDは違いマス。
    <g id="VuMark:test_original"></g>
    <g id="IDtype:numeric"></g>
    <g id="IDlength:1"></g>
    <g id="MaxID:32"></g>
    <g id="Elements:29"></g>

参考まで、サンプルをのsvgをできるだけシンプルにしたmaxID=32のnumericマーカーの例です。
https://gist.github.com/akirayou/32d4e8ae7a666a54f18f7e5d408af475


補足

elementのIDは重要です、ちゃんと桁数まで合わせて連番である必要があります。グループ化されてると1要素としてカウントされるらしいですが・・・細かい所は自信ありません。
 中身が空っぽのグループもないとfailします。(DOMに各要素があることを前提としてアクセスしてるみたい?)
 cleaSpaceだとかボーダーからエレメントまでの隙間など最大辺比5%はあけとけとの事です。
あと、各elementの最小サイズは最大片比で3%です。

2018年1月12日金曜日

アイディアメモ: Hololens等でARマーカを安定に併用したい

従来技術と課題

hololensにVuforiaを組み合わせてARマーカとhololensの空間認識を併用する事自体は行われている。ARマーカが空間認識カメラからみて十分小さい場合、すなわち空間に置かれるような場合は問題はない。しかしモノクロ印刷されたARマーカを手持ちした場合、空間認識のにも影響を与える為にARマーカが手ぶれで移動する際に空間認識にノイズとしてのり画面が揺れる等の弊害がおきる。
ARマーカの例

 Hololensの癖(仮説)

上述の問題は液晶モニタの画面をhololensごしに眺めている場合にはおきない、これは空間認識用のモノクロカメラが赤外光を重視し、可視光による特徴点を空間情報として用いていないため(と推察される)。

対策案

この性質を利用して、スマホ画面に表示されたARマーカを見る事は容易に考えられ、実際に行われている。しかし軽量化のためには印刷されたARマーカを用いる必要がある。

対策案1

https://www.an.shimadzu.co.jp/apl/food/e8o1ci00000003pr.htmにあるように黄色・赤色の着色料は赤〜赤外領域で吸収をもたないものが多い。赤〜赤外に吸収をもたないオレンジ色の着色によってARマーカを印字すれば空間認識側に影響をあたえる特徴点量は大きく減らせると考えられる。具体的には赤102号、黄4号などの着色料を用いる。
この表現では全体に青色が抜けたマーカを用いる事ができる。

対策案2

対策案1とは逆にARマーカの上から赤〜赤外に強い吸収をもつ塗料もしくは光学フィルタをかける。この表現では全体的に青色をかけた色になる。

今後

対策案1はすぐにでも試せるので、試してみる。対策案2はスペクトル一覧みながら身近な物質を探してみる。青色色素でも近赤外に吸光ないのは多いので。


追記:会社の居室ではガタガタふるえまくるほど起きる現象なのに、家の環境だと、たまにひっぱられるぐらいだなぁ。ぐらいにしか再現しない・・・。  かなりニッチな現象らしく、家での再現に時間かかりそう・・。