論文紹介「Corona: Positioning Adjacent Device with Asymmetric Bluetooth Low Energy RSSI Distributions」

まとめ

はじめに

このエントリは「ヒューマンコンピュータインタラクション論文紹介 Advent Calendar 2015」の25日目のものです。
http://qiita.com/advent-calendar/2015/hci

紹介する論文

今回もUIST2015から、Corona: Positioning Adjacent Device with Asymmetric Bluetooth Low Energy RSSI Distributionsという論文を紹介します。
これはBluetoothのRSSIだけを利用し、デバイスの相対的な位置を検出する手法についての論文です。

動画はこちらになります。

手法について

Bluetoothのチップの位置はデバイスの中心からずれたところに置かれているため、 各辺からチップまでの距離はそれぞれ異なり、結果としてRSSIが異なってきます。この距離の違いから来るRSSIの違いを学習しておくことで、 現在のRSSIからどの位置に置かれているかが識別できるというのがこの論文で提案している手法です。

わかりにくいと思うので図にしました。灰色の長方形内にあり、中心線上にない任意の青色の点から、 オレンジで表された各辺までの距離が全て異なるということがわかると思います。

実際、私の手元のタブレットでは左上にチップがあるため、右辺や下辺は遠く、上辺や左辺は近くなっており、RSSIも-40~-20までかなりの差が出ます。 値は常に若干上下しますが直近数秒でまとめるとだいたい安定しているので、確かに識別に使えそうです。

やってみた

RSSIだけで位置が測定できる!と聞いても半信半疑だったので、実際にやってみました。
(15秒あたりから開始)
https://github.com/ota42y/corona-clone

実際に動いている様子は以下の通りです。

オリジナルの手法をそのまま実装するのが大変だったので、学習量を少なめに、かつ適当なベイズ識別期に投げるだけとかなり簡素化しています。
動画の通り、かなり簡素化した状態でもわりといい精度でどの位置にあるかを識別できていますので、 ちゃんとオリジナルのを実装すれば相当な精度になることが予想できます。

その他

Bluetoothチップが中心からずれていることに依存しているので、今後中心や中心線上に乗ったデバイスに対しては識別できるのか心配です。 たとえば横方向の中心線上(上辺と下辺から等距離)の場合、左右では距離が違いますが上下では距離が同じになります。 もちろん片方のデバイスが等距離でももう片方が等距離でないなら、上に置いたときと下に置いたときで距離が変わるため識別可能ですが、どちらも同じ距離になるようにおいた場合は判別ができなさそうです…

とはいえ、動画のサムネイルや論文の図にあるRSSIの等高線が円ではなく多角形の形をしていることから、 内部の基板やデバイスの材質によって大きく変動するため、完全にRSSIが同じ2点が存在するというのはほぼあり得ないと考えて良さそうです。