Nitendo SwitchのモーションIRカメラの3次元測定の仕組みに「枯れた技術の水平思考」を感じた

f:id:karaage:20190609230454j:plain:w640

Nitendo SwitchのIRカメラで3次元測定ができる

 娘とNintendo LABOを遊んでいて気づいたのですが、Nintendo SwitchについているモーションIRカメラで、3次元測定の機能があります。

f:id:karaage:20190609230454j:plain:w640
 物体の3次元形状が測定できている

f:id:karaage:20190609230525j:plain:w640
 使っているのは単純なIRライト付きのIRカメラ

 モーションIRカメラって、加速度センサとジャイロセンサが付いている以外は要は普通の単眼の赤外線カメラです。これで、一体どんな方法で3次元測定を!?とビックリしました。

 なお、赤外線の仕組みや赤外線カメラに関しては、以前に赤外線デジカメを自作しているので以下記事を参照下さい。

karaage.hatenadiary.jp

 2つカメラがあれば、ステレオカメラになるので特徴点のマッチングと三角測量を用いて距離を推定することができるのですが、単眼(1つの目)のカメラでは普通距離を推定するのは通常困難です。

 手法自体はもちろん色々あって、Kinect v1のように特殊なパターンを照射し、その歪みを計測するストラクチャードライト方式(iPhone Xも同じ仕組みです)や、Kinect v2(Holo Lens)のように、照射した光線のパルスの反射波の速度から距離を測定する方法(コウモリが超音波の反射で距離を測るようなイメージです)、ディープラーニングを用いて距離を推定する方法(人間が片目でもなんとなく距離が分かるのと似た理屈)等がありますが、いずれも特殊なハードウェアが必要だったり、マシンパワーやコストが必要だったりと、とうていNitendo Switchで実用になる気がしません。

 ネットを調べても、意外にここらへんのメカニズムが書いてあるサイトが出て来ませんでした。

 うーんうーんと悩んでいたところ、娘が遊んでいたリモコン戦車の画面でふと気付きました。

 リモコン戦車のIRカメラの画像をコントローラから見ることができます。 f:id:karaage:20190609230414j:plain:w640

 試して、手を近づけたり離したりしてみました。

f:id:karaage:20190609230437j:plain:w640  近づける

f:id:karaage:20190609230425j:plain:w640
 離す

 明らかに近いほど、赤外画像が明るいです。考えてみれば当たり前の話で、赤外ライトがついているので、赤外カメラで見ると近いほど明るくて、遠いほど暗く見えるのですよね。

 赤外線と言われてピンと来ない人は、真っ暗な部屋で懐中電灯を点けたときを想像してもらえば良いと思います。当然近くにあるものは明るく見えて、遠いものは暗く見えますよね。あとは、明るさを距離としてマッピングすれば、立派な3次元情報が得られるというわけです。

 もちろん、赤外光が大量に含まれる日光下だと無力なのですが、屋内で遊ぶゲーム用の3次元測定の仕組みとしては、これ以上ない安価で手軽なソリューションですね。

まとめ

 Nintendo SwitchのモーションIRカメラの3次元測定の仕組みに、感動というと大げさですが、個人的に凄く感心したという話でした。こういう安価なものを思ってもみない使い方で、新たな価値を生む方法は、任天堂に根付く「枯れた技術の水平思考」を感じさせますね。というより、Nintendo LABO自体が「枯れた技術の水平思考」の塊のような製品ですね。最近発売されたVR Kitも本当に面白い発想だなと感じます。

 自分自身も、こういった発想を仕事でも趣味でも心がけたいなと思っています。

 ちなみに、ここに書いてあることはあくまで私の想像で、任天堂の公式見解ではありません。間違っている可能性あることはご了承下さい(個人的には9割以上合っている自信はありますが)。

関連記事