Chapter 29無料公開

┣ センサーとの向き合いかた

Yoshio Kakehashi
Yoshio Kakehashi
2021.12.22に更新

あるあるセンサー問題を知っておく

  • 遅延がある
  • 精度のよしあしがある
  • 速い動きは取得できないことが多い(分解能)
  • 姿勢推定は腕組みすると死亡する (最近は学習が極まってきて取得できるやつもある: BlazePose、MoveNet)
  • 慣性系のセンサーは使い続けていくうちに、値がずれたりする (ドリフト)
  • 光学系 + 慣性系の組み合わせで動くものもある(Steam VRのLighthouseシステム: 赤外線+加速度+ジャイロ)
  • 例えばモーションキャプチャーツールのWikipediaを見ると、各種センシングでメリット・デメリットがあることがわかる

などなど、JavaScriptやUnityと違って、生身を扱うぶん、クセがだいぶある。

なので正しい使用方法を知ることから始めなくてはならない。説明書を読まずに進めると、確実にハマる。

正しい使用方法を知るとは

  1. 使い方を正しく知る
  2. 動作環境を知る
  3. 精度の限界を知る
  4. 遅延を知る

1. 使い方を正しく知る

  • 公式の使い方を本当によく読む
    • 「推奨する使い方。推奨しない使い方」が書いてある
  • データシートを読む
    • 俺もよく知らんけど、ふいんき(なぜかへんかん略)で読んでる

2. 動作環境を知る

  • 動作する温度は重要
    • 温度が高い場所や排熱ができない空間で使うと、ふつうに落ちる (回路保護等)
    • 温度が低いと起動しない場合もある(気温が低いとバッテリーが弱くなる等)
  • 屋外
    • 「屋外で20mまで測定可能!」と書いていても、実際は3-5mしか使えない、ということは多数ある (Kinect/RealSense等)
  • 光学系
    • 光学系だと反射するものや、日光のような強い照明があると機能しなくなることがある (Kinect/RealSense/HTC VIVE等)

3. 精度の限界を知る

限界性能を知っておく。ついついなんでも取得できると思っちゃうけど、絶対にそんなことはない。真っ暗闇で写真を撮ろうとしても無理なのと同じで、各種センサーにも限界がある。

  • ログを取ってビジュアライズして、限界を検証する
  • 録画してビジュアライズしたものと突き合わせて検証する
    • → 野球のバットにセンサーをつけて、バットの軌道を取得するものなら
      • センサーで取った値をプロットしてみたものとと、カメラで録画したものを並べて比較してみる
      • バットのスイング開始時はセンサーの値が正常だが、スイングスピードが最速になったタイミングではズレる。といったことを確認して、どのような対応が可能かを考える。
  • 値がガクガクすることも多数
    • 安定せずに値が大きくズレたり、穴があくこともある
    • 外れ値をフィルターしたりなめらかに補間したりする必要あり
      • TouchDesignerならFilterノードがあって便利

4. 遅延を知る

センサー内で処理 → 送信 → 受信 → 解析 → 表示

表示までにかかる工程はけっこうある。必ず遅延する。どれくらいズレているのか、それが体感で許容できるズレなのかを確認しておく。

例: OptiTrackでバットをトラッキング→Unityで表示するまでの遅延を計測してみた

https://youtu.be/xCDupeSOCM4
  • 画面にフレームカウントやタイムコードを書く
  • ハイフレームレートカメラで録画
    • →どの動きのときに、何フレーム遅延しているかを確認する

まとめ

どうあがいても100%の精度にはならない。あるあるネタをストックしておき、体験として成立できるのかどうかを見極めていく。