6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

加速度センサの鉛直方向の値を使って1歩判定してみた

Last updated at Posted at 2022-09-24

はじめに

屋内位置測位のPDR(歩行者自律航法)を使ったコードを書く上で1歩判定のコードを書いたので解説します.

PDRとは

PDRはPedestrian Dead Reckoningの略で
Pedestrianが歩行者、Dead Reckoningが自律航法という意味です.

Dead Reckoningとはフルノ製品情報サイトより以下のような説明があります。

ジャイロセンサーや加速度センサーなど、各種センサーからの情報と合わせて演算処理することにより、GPS(GNSS)単独では測位を続けることが難しい環境下でも、高い精度で測位できる技術がデッドレコニング(Dead Reckoning /自律航法)です。カーナビゲーションシステムでも多く活用されております。

センサ情報をもとに演算処理をすることで位置を求めるので、センサ情報の正確さが大事になります.

1歩判定

加速度センサの鉛直方向の値から1歩判定します.

概要

鉛直方向の出力は波のようになります.
加速度センサ_鉛直方向.png
この波の1周期で1歩という感じなので、この1周期の中の極大値か極小値を使えば、よさそうです.
仮に極大値にしきい値を設定すると
しきい値.png
このようになります.
このしきい値を超えた時に1歩判定します.

解説

sikiti = 10.7
count = 0
not_first_pass = False

はじめに1歩判定用のしきい値を入れるsikiti、
何歩歩いたか数えるためのcount、
しきい値を超えたのが最初ではないと判定する用のnot_first_passを用意します.

if i < sikiti:
    print("歩いていない")
else:
    if not_first_pass == True:
        print("歩いていない")
    elif not_first_pass == False:
        count += 1
        not_first_pass = True
        print(f"{count}歩目")
if not_first_pass == True and i < sikiti:
    not_first_pass = False

ここで1歩判定を行います.

if i < sikiti:
    print("歩いていない")

最初のif文でしきい値を超えたか超えていないか判定します.

else:
    if not_first_pass == True:
        print("歩いていない")
    elif not_first_pass == False:
        count += 1
        not_first_pass = True
        print(f"{count}歩目")

しきい値を超えていた場合、さらにif文で分岐します.

前回の値がしきい値以下で、今回の値がしきい値を超えた時に1歩とカウントするためです.
そのため、しきい値を超えた値が連続すると最初の値以外では1歩とカウントされないようになっています.

if not_first_pass == True and i < sikiti:
    not_first_pass = False

そして、最後のif文で前回の値がしきい値以上で、今回の値がしきい値を下回ったにnot_first_passをFalseにします.

試しに

これですべての解説ができたので、

num  = [10.6, 10.7, 10.8, 10.5, 10.4, 12.2]

試しにこのようなリストの値を用意して1歩判定させてみます.

sikiti = 10.7

しきい値は10.7に設定したので、リストの3つ目の10.8と12.2で1歩判定するので、

歩いていない
1歩目
歩いていない
歩いていない
歩いていない
2歩目

このように2歩と出力されます.

おわりに

今回は1歩判定のコードについて解説しました.
鉛直方向の値だけを使った実装をしましたが、3軸センサであればもっと精度の高いコードがかけると思うので、機会があれば作ってみたいと思います.

ここまで読んでいただき、ありがとうございました.

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?