佐藤さとる

佐藤さとる

梶研 [端末姿勢推定]

2023年09月19日

端末姿勢推定

出席率

スケジュール

短期的な予定

長期的な予定

進捗

やりたいこと

端末の姿勢推定

加速度を端末座標から世界座標にする

考え方

前回) 相補フィルターを使って端末姿勢推定をした

結構理想通りにはなったが正解が分からない

前回) 加速度を世界座標系に変換した

zennkai-2.png (136.6 kB)

明らかにおかしい

データをとる

正解がわかりやすいデータで試してみる

机に置く(z軸正が上)縦向きに立てる(y軸正が上)横向きに立てる(x軸正が上)机に置く(z軸正が上)

betudata-acc.png (38.2 kB)
betudata-gyro.png (42.9 kB)

問題点1 単位の違い

前回、単位が raddeg で違うという問題があった

deg に統一

ただし、過去に作ったベクトルを回転させる関数は rad だった

修正後のグラフ

hidoi_bure_none.png (53.5 kB)

問題点2 関数が良くない

以前に使った加速度から傾きを出す関数を利用した

関数の仕様

以前のプログラムでは以下の処理をして返していた

def calc_tilt(df_acc):
  ...
    roll = math.acos(x / gravity)
    yaw = math.acos(y / gravity)
    pitch = math.acos(z / gravity)
  ...

# 加速度から傾きを計算
df_tilt = calc_tilt(df_acc)

# 基準に合わせて回転
df_tilt["roll"] = df_tilt["roll"] - math.pi / 2
df_tilt["yaw"] = df_tilt["yaw"] - math.pi / 2

今回コピペする上で、基準に合わせて回転 という処理をしていなかった

関数の役割的に基準に合わせて回転させる処理は端末の傾きを計算する前に行うべき

問題点3 謎の処理

角速度から傾きを出すタイミングの処理で、

1フレーム前との角速度の差分を、1フレーム前の傾きに足していた(?)

自分でもよくわからないが、足してサンプリング周波数で割るように変更

修正後のグラフ

bimyoikedo-tabun-ok.png (54.0 kB)

世界座標系にはなったが、勢いよく回転させたときに傾きがおかしいが、

妥協点?

歩いた時のデータを使う

スマホをポケットに入れてU字に歩く

10歩前進 - 右向いて4歩前進 - 右向いて10歩前進

元の加速度

output_1.png (98.3 kB)

世界座標系に変換した加速度

output_2.png (91.5 kB)

z軸が負の方向に (-9.8m/s^2) になってしまったが、

画面が上を向いている状態(z軸正が上) を基準とした加速度になった.

余談

プロフィールサイト作った

<iframe src="https://satooru.me" width="100%" height="600"></iframe>

<iframe src="https://blog.satooru.me" width="100%" height="600"></iframe>

<iframe src="https://satooru.me/404" width="100%" height="600"></iframe>

新しい AppRouter を使ってみた.

とても扱いやすかったが、静的サイトにしたせいで

あまりメリットを活かしてない.

Rust 使ってみた

勤怠を記録するメニューバーアプリを作った

Tauri を使っているがフロント側は0で、全てRustで書いた

Tauri の良さを潰している

<iframe width="439" height="780" src="https://www.youtube.com/embed/JgSETnRwGBc" title="" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

Jetpack Compose(Kotlin) 触ってみた

jetpack-compose.png (1.7 MB)

パッケージの扱い方わかんない.

大人しく最初から勉強します

カーブでセンシングしてみた

右カーブでセンシングしてみた

curve-acc-x.png (48.9 kB)
curve-acc-y.png (47.2 kB)
curve-acc-z.png (41.5 kB)
curve-gyro.png (47.9 kB)
curve-rotate.png (51.7 kB)

右カーブが大きく現れていて何かに使えそう.

今週山道走る時にもっととってみる

旅行いっていた

東大寺に行ってきた

todaiji.jpg (644.1 kB)
todaiji2.jpg (547.7 kB)

大仏もみた

daibutu.jpg (406.0 kB)

記念撮影

kinen.jpg (417.0 kB)

鹿さんとのふれあい

shika.jpg (504.2 kB)

餌やりした

esa.jpg (501.7 kB)
shika-and-shika.jpg (472.7 kB)

寿司たべた

sushi.jpg (336.9 kB)

<iframe width="560" height="315" src="https://www.youtube.com/embed/HYxn68bXb-o?si=PEHBcjSPyNIzVbrR" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>