この記事は、筑波NSミライラボ Advent Calendar 2023、20日目の記事です。
はじめに
S高等学校 通学プログラミングコースに所属している@mono0218です。
コンテストなどに応募するプロジェクトとして開発をしている屋内GPSについての記事です。
目的
・東京駅や大阪駅のような迷路施設でも正確な位置情報を入手できマップ機能が使えるようにするアプリケーションを開発すること
やりたいこと
・Wifi-APやBluetoothからの距離をアプリ側で測定し、3点測量方式を用いて場所を推定する。
・推定した位置情報を端末のOSレベルで上書きする。(GoogleMapなどのすべてのマップアプリで推定した位置を使用できるようにするため)
使ったもの
Kotlin
今回はAndroidでのリリースを考えているのでKotlinを選択しました。UIコンポーネントはJetpackComposeでmatelial3使用しています。
M5StampS3
Wifi-APやBluetoothの発信源としてM5StampS3を使用しています。
Processing
実際にどのぐらいの精度・誤差なのか視覚的に分かりやすくするために使っています。
スマホ側から送られてきたM5Stampの距離をProcessingに送信しています。
できたもの
Processingに描画してみたもの
PC初期化時にProcessingプロジェクトをバックアップしなかった人の末路
(作り直し途中につき動くものなし)
頑張ったこと
Wifiの電波はチャンネルが一緒だと干渉しあい誤差を生みやすくなるため、espnowという規格を使いWIFI-AP同士でp2p通信をさせチャンネルを被らせない仕組みを作成することを頑張りました。
大変だったこと
M5Stampを使って開発をする前は、学校に設置されているAPを使って位置情報を取ろうとしていました。APの情報を得るために、ニョゴニョしなきゃいけなくなりAPを実際に外してみたりと、物理的な作業が結構大変でした。
NS高生の方々へ
N/S高等学校の設備は、角川ドワンゴ学園のものだけはありません。今回のAPも企業様のネットワーク機器です。APを触ったり間取り図をいただけたのは、メンターの方を含めた様々な方に許可をとっていただいた結果です。
同じような面白いことをしたければ、メンターや通学運営部の方々に許可をとりましょう。せっかくN/S高という日本で一番自由であろう高校にいるので、確認を取れば少なくとも話を聞いてくれますし、もしかしたら今回のように実現するかもしれませんよ。
絶対に、許可を取らず他の人が管理しているものに触る・接続してはなりません。
おわりに
現在のこのシステムは屋内位置測定の基盤を開発しているだけに過ぎず、この基盤を使ってもっと楽しいことができるのではと考えています。今後はこの基盤を使用して、屋内版ポケモンGOや、デジタルスタンプラリーなどの制作を進めていく予定です。
この屋内GPSを作るために多くの学園関係者の方にご協力いただきました。本当にありがとうございました。