toppan_sawatome が 2025年01月28日21時08分25秒 に編集
コメント無し
メイン画像の変更
ライセンスの変更
(Apache-2.0) Apache License 2.0
本文の変更
# 0.はじめに
***「十分に発達した科学技術は、魔法と見分けがつかない。」*** ということで、ファンタジー映画をSFにしてしまおうと思い立ちました。 題材としてはハリー・ポッターに出てくる「忍びの地図」を再現したシステムを作成してみました。

「われ、よからぬことをたくらむ者なり」…って、これ、忍びの地図のやつだよな!知ってるか? えーと、つまりだな、「The Marauder's Map」っていうのは、あの魔法のアイテム、忍びの地図をモチーフにしたアプリなんだ!オフィスの中で、人がどこにいるか、リアルタイムで分かっちゃうっていう、すっげーやつ! SpresenseとBLEビーコン、それに9軸センサーっていうのを使って、歩幅と角度から、どれくらい移動したかとか、どっちの方向に行ったとかを計算するんだ。だから、オフィスで迷子になる心配も、誰かを探し回るムダな時間も、全部なくなっちゃう!これで、仕事もスムーズに進むし、最高だろ? 実際の使い方が知りたいって?下の画面を見てくれ!
[動作の動画]
# 1.ライセンス 本アプリはPysideを用いているため、ライセンスはLGPL2.1です。
# 1.構成
# 2.構成
## 全体構成  ## ハードウェア設計図 ### 準備物 | 部品名 | 数量 | 金額(円) | 役割 | | ------------------------------------ | -- | -------- | ---------------- | | SPRESENSEメインボード[CXD5602PWBMAIN1] | 1 | 6,050 | 制御ボード | | BLE for Spresense【BLE1507】 | 1 | 3,850 | PCとの通信用 | | BMX055使用9軸センサーモジュール | 1 | 2,180 | 歩幅、角度などの算出用 | | リチウムポリマー電池3.7V300mAh | 1 | 900 | バッテリー | | インソール(厚さ3cm) | 1 | 999 | 筐体埋め込み用 |
### IMUユニット構成図
### ハウス作成 CADの様子
+実際に刷りあがったもの +何がどこに格納されるかの解説を書く?→組み立て手順のところでいいかも

ハウスにロゴとか刷れるとかっこいいかも?(partyrockで出力してみた図(5人の頭文字)) 
### 組み立て
・筐体に部品を入れた写真(フタは空いている、部品に注釈) ・ふたを閉めた写真 ・インソールとデバイスを入れた靴の写真
1.筐体に各部材を配置 
# 3.技術要素 ## 歩行者位置測位(PDR:Pedestrian Dead Reckoning) 工夫ポイント ・ドリフト対策とか  ## 歩行者推定 ・エッジAI使って類推できる?
2.ふたをしめてユニット化 
## UX表示 中世っぽく →電子ペーパーにする?(表示に係る実装コストが大きいかも?) 
3.インソールとIMUユニットを靴の中に挿入 
逆側は観察脚の50%周期ずらし(センサの削減)
# 3.技術要素 ## 歩行者自律航法(PDR:Pedestrian Dead Reckoning) ### IMUのドリフト対策 MEMS式のIMUはゼロ点バイアスにより、ドリフトが起こることが知られている。 この真値との誤差を補正する手法、特に環境に参照点を作らずにヒトに貼付したセンサのみで自己位置を推定する手法を歩行者自律航法(PDR)と呼び、過去に様々手法が提案されてきた。 今回は歩行が周期的な運動であることに着目し、足が接地し、静止している際に加速度の積分を止めることで位置の算出精度を高めている。 具体的にはIMUセンサによって計測した加速度と角速度に一定の閾値を設け、加速度と角速度の大きさがともに閾値以下であった際に、加速度・角速度の積分を行わないことでドリフトを抑制している。
# 4.ソースコード ## Spresense側 ```arduino:歩幅推定 #define LED_PIN 13 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); } ``` ## UI側 ```arduino:UIのコード(大きくなるかも) #define LED_PIN 13 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); } ```
# 5.改善点 ## ジャイロのドリフト誤差について 今回実際に計測を行った結果、位置よりも角度の方がドリフト誤差が大きく乗るような印象を受けた。 その結果、真の進行方向との角度差分が大きくなってしまったため、やむなく進行方向を限定することとなった。 まもなく、Spresense用のIMU add onボードが発売されるため、ぜひこちらでリベンジしたいと考えている。 https://www.switch-science.com/products/10181?srsltid=AfmBOopYV03zSuhVSbN7J9IQwqx6kJ3xyr8SIO8syQQH8-zlL6qof_yV
# 5.おわりに
# 6.おわりに IMUセンサを用いることによって限定的ではあるが忍びの地図の機能を再現することができた。 ジャイロのドリフトの補正がしきれずに、進行方向を限定する結果とはなったが、足の接地するタイミングを精度よく計測できたため、実際にヒトが歩いている臨場感のある製品にできた。 将来的にはAHRSなどの回転方向に強いIMUを用いることでより自由な移動経路の算出や異なる補正の仕方を用いてより頑健な位置推定を行っていきたいと思っている。