Closed32

自力でImmersal REST APIによる位置合わせをする in Unity

にー兄さんにー兄さん

Immersalを使うのに毎回Immersal公式サンプルを使っているので、思い切って自力でSDKを使わずに位置合わせをしたい
ただ別に自力でアルゴリズム構築するとかではなく、用意されているREST APIを使うだけだけど......

にー兄さんにー兄さん

あとImmersalSDKがunitypackage形式の配布だし、developer portalから取得する形だし、OSSじゃないのでちょっと使いづらいなぁとか思っていた
この思考が成功して余力があったらgitからPackage Manager経由でインポートできるライブラリにしたいかなぁって思う

にー兄さんにー兄さん

たぶん前にWebARでやった時ほどの修羅の道じゃないと思う
Unityを使うのでARFoundationやtransform系のAPIの恩恵を得られる
最悪SDKを参考にすることもできるし

にー兄さんにー兄さん

とりあえずUnity 2020.3.11を使ってサクッとURP+ARFoundasion+ARCoreのシーンをセットアップ
実機でも動作確認done

にー兄さんにー兄さん

準備はできたので、ARFoundasionの情報を使ってImmersalにリクエストを送ってみるまでやって見よう

にー兄さんにー兄さん

Unityから試しにImmersalにlocalizeのリクを飛ばしてみたが、なぜか

{
  error: "map count"
}

から無限に脱出できない

にー兄さんにー兄さん

上記の問題がC#やUnityによるものなのかわからないので、いったんWebクライアントからもやってみる
Webからは前に成功しているので、たぶんやり方は分かるはず

にー兄さんにー兄さん

ん-なんとなくUnityのせいではない気がしてきた
というのも、なぜかWeb側でやっても400 Bad Reqが飛んでくるので
自分の理解不足なのだろうか......
いやでも前はできたんだけどな

にー兄さんにー兄さん

公式のPythonのサンプル試したらやっぱりmap countでエラーになった
これ自分が悪くないやつだな?

にー兄さんにー兄さん

あれからいろいろあって、ARFoundationの恩恵を十分に受けながら位置合わせのリクエストを送り、
なんとか成功した。
ん-でも精度が悪い気がする
img

にー兄さんにー兄さん

作業ログを取るのをすっかり忘れてたんだけど、
昨日はImmersalのレスポンスをシリアライズして、そのデータからマップの姿勢を計算したりしたが
ちょっと変な結果になってしまった

にー兄さんにー兄さん

Immersalの位置合わせは成功していて、結構同じような結果が返ってきているので
あとは自分の計算の聖な気がする

にー兄さんにー兄さん

quaternionの生成の仕方が間違ってるのかな
ちょっとこのgistに載ってる方法でも試してみたい

もしくはアフィン変換行列を生成してMapを変形させるとか
WebARのときはその実装だった気がする

にー兄さんにー兄さん

ちょっと不安定だけど、何回かImmersalによる位置合わせができた!ということでひと段落......

にー兄さんにー兄さん

本当はライブラリ化もしたかったけど、不安定な部分があったり
環境の制約(C#8の使用&UniTask)があるため、いったん保留

これにてスクラップはクローズです

にー兄さんにー兄さん

本当はライブラリ化もしたかったけど、不安定な部分があったり

このバグを修正してリファクタをした
結構キレイにできたしよく動作してくれているので
ライブラリ化してみたいなぁと思うなど

このリポジトリをimportによって別のライブラリ用のリポジトリにして、
そこでgit経由で配布したいな

このスクラップは2021/08/22にクローズされました