1
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.

加速度センサから得られた値を移動距離に変換

Last updated at Posted at 2023-01-12

今回使用した実験機器

  • ESP32:Wi-Fi と Bluetooth を内蔵しており,低コストで低消費電力なマイクロコントローラである.

  • BMX055:9 軸 (加速度 3 軸,ジャイロ 3 軸,磁気コンパス3 軸) センサを扱いやすいパッケージでまとめられたセンサモジュールである.

加速度センサから移動距離に変換する

加速度センサから取得した値は,時間と加速度のx, y, zである.それらの値が入ったcsvファイルを読み込んで,移動距離に変換している.今回は,加速度センサz軸のみ使用して計算を行っている.

accl_distance.py
from csv import reader
import math

#csv読み込み
def csv_file(file):
    with open(file, 'r') as csv_file:
        csv_reader = reader(csv_file)
        data_header = next(csv_reader) #一行目を出力
        data = list(csv_reader)
    return data
  
#計測時間処理
def time(data):
    elapsed_time = 0
    time_list = []
    elapsed_time_list = []
    
    for i in range(len(data)-1):
        time_list.append(float(data[i+1][0]) - float(data[i][0]))
        elapsed_time += time_list[i]
        elapsed_time_list.append(elapsed_time)
        #print(elapsed_time[i])
    return time_list, elapsed_time_list

#z軸データ処理
def accl_z(data):
    z_list = []
    abs_z_list = []
    for i in range(len(data)-1):
        z_list.append(float(data[i+1][3]) - float(data[0][3]))
        abs_z_list.append(math.fabs(z_list[i]))
        #print(z[i])
        #print(absolutely_z[i])
    return z_list, abs_z_list

#速度計算
def speed(data, abs_z, time):
    speed_list = []
    for i in range(len(data)-2):
        speed_list.append(((abs_z[i] + abs_z[i+1]) * time[i]) / 2)
        #print(speed[i])
    return speed_list

#移動距離計算
def distance(data, speed, time):
    distance_sum = 0
    distance_list = []
    distance_sum_list = []
    for i in range(len(data)-3):
        distance_list.append(((speed[i] + speed[i+1]) * time[i]) / 2)
        distance_sum += distance_list[i]
        distance_sum_list.append(distance_sum)
    return distance_sum_list

file = "accl.csv"
data = csv_file(file)
time, elapsed_time = time(data)
z, abs_z = accl_z(data)
speed = speed(data, abs_z, time)
distance_sum = distance(data, speed, time)

[実験結果] 移動距離の推移

これは,実際の距離が15mの状態を歩行した実験である.はじめに5秒間停止し,15m歩行して,再び5秒間停止している.

output.png

結果:12.6[m]

加速度センサから取る値の注意点

身体に加速度センサを取り付ける方法によって加速度の値の変動が大きいので,注意が必要です.(上記の実験は,腰にテープで取り付けた際の結果)

1
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
1
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?