編集履歴一覧に戻る
toppan_sawatomeのアイコン画像

toppan_sawatome が 2025年01月29日18時47分39秒 に編集

コメント無し

本文の変更

-

# 0.はじめに

+

# はじめに

![キャプションを入力できます](https://camo.elchika.com/3c36aa4f9170b8d0473a785d29e23a96f6bb0fa7/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62633661343935642d353438612d343132662d396266312d6336396332353161323832612f30623365666133322d383365662d343433322d616265322d643536343334333930316333/)

-

「われ、よからぬことをたくらむ者なり」…って、これ、忍びの地図のやつだよな!知ってるか?

+

「われ、よからぬことをたくらむ者なり」

-

えーと、つまり、「The Marauder's Map」ってうのは、あの魔法のアイテム、忍びの地図をモチーフにしたアプリなんだ!オフィス中で、人どこ、リアルタイムで分かっちゃうっていう、すっげーやつ!

+

この紙はたの紙じゃ忍びの地図というものなんだ。 魔法をかけた相手場所文字通り手ようにわる魔法の道具さ。

-

SpresenseとBLEビーコン、それに9軸センサーっていうのを使って、歩幅と角度から、どれくらい移動したかとか、どっちの方向に行ったとかを計算するんだ。だから、オフィスで迷子になる心配も、誰かを探し回るムダな時間も、全部なくなっちゃう!これで、仕事もスムーズに進むし、最高だろ?

実際の使い方が知りたいって?下の画面を見てくれ! [動作の動画]

-

# 1.ライセン 本アプリはPyside用いていためライセンスはLGPL2.1

+

# 1.構成 ## 全体構成 IMUセンサにより取得した計測開始位置からの移動量をPCに送信します。 UI上で初期位置指定すことで初期位置からの移動量を1歩ずつ表示ることを可能にしています

-

# 2.構成 ## 全体構成

![キャプションを入力できます](https://camo.elchika.com/4f2cc8f56bd4ed617e0cdd56bf23c66c2e237b99/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62633661343935642d353438612d343132662d396266312d6336396332353161323832612f35363363343338352d303435392d343832382d396238362d356465366332626361363136/) ## ハードウェア設計図 ### 準備物 | 部品名 | 数量 | 金額(円) | 役割 | | ------------------------------------ | -- | -------- | ---------------- | | 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 | 筐体埋め込み用 |

+

|SPRESENSE用Qwiic接続基板 | 1 | 770 | IMUセンサへの電力供給用|

### IMUユニット構成図

-

Spresenseメインボードにリチウムポリマー電池で給電

+

### ハウス作成 CADの様子 ![キャプションを入力できます](https://camo.elchika.com/2ab91a96a0f768e2f7f7baa5a93038585b147347/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62633661343935642d353438612d343132662d396266312d6336396332353161323832612f34643861636536332d333138372d343232342d383035352d346432633165663362393136/) ### 組み立て 1.筐体に各部材を配置 ![キャプションを入力できます](https://camo.elchika.com/0554dfd90149dddc8684d7963886cc2672bd8539/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62633661343935642d353438612d343132662d396266312d6336396332353161323832612f64356232313139372d383131392d346532312d396439612d643231363165393331666138/) 2.ふたをしめてユニット化 ![キャプションを入力できます](https://camo.elchika.com/3e36a5172c787d3b473fe2505900108fd6dc1075/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62633661343935642d353438612d343132662d396266312d6336396332353161323832612f33376532613336302d323636642d346133612d386236312d626236383135386639343634/) 3.インソールとIMUユニットを靴の中に挿入 ![キャプションを入力できます](https://camo.elchika.com/10b6a2a529e7f2527cdb3467c2f9550178dd53b3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62633661343935642d353438612d343132662d396266312d6336396332353161323832612f38373764396537662d646535352d346133612d613434622d313436366336356566633035/)

-

# 3.技術要素

+

# 2.技術要素

## 歩行者自律航法(PDR:Pedestrian Dead Reckoning) ### IMUのドリフト対策 MEMS式のIMUはゼロ点バイアスにより、ドリフトが起こることが知られている。 真値との誤差を補正する手法、特に環境に参照点を作らずにヒトに貼付したセンサのみで自己位置を推定する手法を歩行者自律航法(PDR)と呼び、過去に様々手法が提案されてきた。 今回は歩行が周期的な運動であることに着目し、足が接地し、静止している際に加速度の積分を止めることで位置の算出精度を高めている。 具体的にはIMUセンサによって計測した加速度と角速度に一定の閾値を設け、加速度と角速度の大きさがともに閾値以下であった際に加速度・角速度の積分を行わないことでドリフトを抑制している。 また、IMUセンサによって計測した加速度の微分値(躍度)を用いることで、足が接地した瞬間を検出し、移動距離を送信している。

-

# 4.ソースコード

+

# 3.ソースコード

## 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); } ```

+

# 4.ライセンス 本アプリはPysideを用いているため、ライセンスはLGPL2.1です。

# 5.改善点 ## ジャイロのドリフト誤差について

-

今回実際に計測を行った結果、位置よりも角度の方がドリフト誤差が大きく乗るような印象を受けた。 結果、真の進行方向との角度差分が大きくなってしまったため、やむなく進行方向を限定することとなっ まもなくSpresense用のIMU add onボードが発売されるため、ぜひこちらでリベンジしたいと考えている。

+

今回実際に計測を行った結果、位置よりも角度の方がドリフト誤差が大きく乗るような印象を受けました。 今回は実際進行方向との角度差分が大きくなってしまったため、やむなく進行方向を限定することとなってしまっが、 まもなく発売されるSpresense用のIMU add onボードでリベンジしたいと考えている。

https://www.switch-science.com/products/10181?srsltid=AfmBOopYV03zSuhVSbN7J9IQwqx6kJ3xyr8SIO8syQQH8-zlL6qof_yV

-

# 6.おわりに

IMUセンサを用いることによって限定的ではあるが忍びの地図の機能を再現することができた。 ジャイロのドリフトの補正がしきれずに、進行方向を限定する結果とはなったが、足の接地するタイミングを精度よく計測できたため、実際にヒトが歩いている臨場感のある製品にできた。 将来的にはAHRSなどの回転方向に強いIMUを用いることでより自由な移動経路の算出や異なる補正の仕方を用いてより頑健な位置推定を行っていきたいと思っている。

+

# おわりに ![キャプションを入力できます](https://camo.elchika.com/3c36aa4f9170b8d0473a785d29e23a96f6bb0fa7/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62633661343935642d353438612d343132662d396266312d6336396332353161323832612f30623365666133322d383365662d343433322d616265322d643536343334333930316333/)

+

どうだった?

+

これがあれば、オフィスで迷子になる心配も、誰かを探し回るムダな時間も、全部なくなっちゃう!これで、仕事もスムーズに進むし、最高だろ? おっと、使ってることはばれないほうがいいからな他言は無用だぜ、使い終わりの呪文はこうだ 「いたずら完了!」