梶研 06/07 - 06/13

スケジュール 短期的なスケジュール 端末座標系を世界座標系に データをとる 重力に対する各軸の傾きを出す 2次元ベクトルを回転させる 3次元ベクトルを回転させる 技育CAMP ハッカソン テーマ決め 開発練習 7/9 キックオフ 7/16 発表 端末座標系を世界座標系に 方法 各軸の加速度データから3次元ベクトルにする 回転行列を掛けて回転させる 3次元ベクトルから各軸の加速度にする データをとる pixel5 (android) phyphox 加速度センサー 角速度センサー z軸正が上(約4秒) y軸正が上(約4秒) x軸正が上(約4秒) グラフ 加速度 移動平均フィルター(前後40サンプル)をかけている 角速度 移動平均フィルター(前後40サンプル)をかけている 角度 移動平均フィルターをかけたものを積分したもの 重力に対する各軸の傾きを出す gravity = math.sqrt(x ** 2 + y ** 2 + z ** 2) tilt_angle_x = math.degrees(math.acos(x / gravity)) tilt_angle_y = math.degrees(math.acos(y / gravity)) tilt_angle_z = math.degrees(math.acos(z / gravity)) 重力に対するそれぞれの軸の傾き ベクトルを回転させる方法 回転行列 外積の性質を利用 クォータニオン 回転行列 回転行列はベクトルに対し始点を基準に回転させる...

2023-6-13 · 2 min · 287 words · SatooRu

梶研 05/31 - 06/06

スケジュール 短期的なスケジュール エレベーターと歩きを判別する データをとる 歩いているかを判別する 上り下りしているかを判別する エレベーターと歩きを判別する 正解データと比較 追加でデータとる 技育CAMP ハッカソン テーマ決め 開発練習 7/9 キックオフ 7/16 本番 エレベーターと歩きを判別する(続き) 変更点 上り下りしているかの判別方法 1秒ごとに区切り, 回帰直線を求める. 参考: スマートフォンを用いた階段利用判定 傾きの絶対値が 0.012以上 の場合は上り下りしているとみなす(青色) 0.012未満 の場合は止まっているとみなす(黄色) 傾きの絶対値のグラフ 平滑化フィルター 移動平均フィルター ではなく メディアンフィルター を使用した. 実際とのズレが縮まった 気圧と判別結果 灰: 元データ 青: 移動平均フィルター(前後120サンプル) 黒: メディアンフィルター(前後120 + 1サンプル) 結果 青: 歩いている || 上り下りしている 黄: 止まっている 赤: 階段 青: エレベーター 黄: 歩行 緑: 待機 気圧と正解データを見比べると, エレベータを降りた後も 上り下りしている判定になっている => 傾いているから, プログラムではなくデータが悪い(?) => エレベータを降りた時など, 一度止まるとよい より多くのデータ データ2 青: 歩いている || 上り下りしている 黄: 止まっている 赤: 階段 青: エレベーター 黄: 歩行 緑: 待機 データ3 青: 歩いている || 上り下りしている 黄: 止まっている 赤: 階段 青: エレベーター 黄: 歩行 緑: 待機 データ3 青: 歩いている || 上り下りしている 黄: 止まっている 赤: 階段 青: エレベーター 黄: 歩行 緑: 待機 メモ 気圧センサーとステップ 気圧値と回帰直線 梶克彦,河口信夫,安定センシング区間検出に基づく3次元歩行軌跡推定手法, 情報処理学会論文誌,Vol....

2023-6-6 · 1 min · 126 words · SatooRu

梶研 05/24 - 05/30

スケジュール 短期的なスケジュール エレベーターと歩きを判別する データをとる 歩いているかを判別する 上り下りしているかを判別する エレベーターと歩きを判別する 正解データと比較 改善 技育CAMP ハッカソン 7/9 キックオフ 7/16 本番 エレベーターと歩きを判別する データをとる 場所 1号館 5階-7階 取り方 腰にポーチをつける Pixel5 (Android) Pyphox 気圧センサー 加速度センサー 角速度センサー 歩いているかを判別する 加速度(ノルム)のグラフ 重力加速度を除いている df[“x”] = df[“x”] - df[“x”].mean() df[“y”] = df[“y”] - df[“y”].mean() df[“z”] = df[“z”] - df[“z”].mean() 方法 1秒ごとに区切り、それぞれの分散を計算する 判別基準 分散が 0.1以上 の場合は歩いているとみなす(青色) 0.1未満 の場合は止まっているとみなす(黄色) 色分けしたグラフ 上り下りしているかを判別する 気圧のグラフ 青 : 元のデータ 黒 : 移動平均フィルター(前後20サンプル) 方法 1秒ごとに区切り、それぞれの平均を出して、一秒後との差を出す 判別基準 分散が 0.015以上 の場合は歩いているとみなす(青色) 0.015未満 の場合は止まっているとみなす(黄色)...

2023-5-30 · 1 min · 156 words · SatooRu

梶研 05/17 - 05/23

スケジュール 短期的なスケジュール 速度を変えてUnityでアニメーション データをとる アニメーションをつける エレベーターと歩きを判別する データをとる グラフ化 フーリエ変換 判別する 進捗 速度を変えてUnityでアニメーション 前回 速度差を再現したけど分からづらかった データをとる 場所 1号館 5階-7階 取り方 腰にポーチをつける Pixel5 (Android) Pyphox 気圧センサー 加速度センサー 角速度センサー 5-6階: 歩く(1段ずつ) 6-7階: 走る(2段ずつ) 速度差をつけた動作のアニメーション (実際の4倍速になっている) 速度に応じて歩幅も変わっている => 加速度を元に歩幅を計算する “二乗平均誤差(RMSE)を出す” で使用した式 step = 0.1 * norm - 0.5 加速度を元に歩幅を変えたアニメーション いい感じ 進行方向を計算から求める 進行方向の求め方 UnityEngine.Vector3 current = positions[currentIndex]; // 現在の座標 UnityEngine.Vector3 next = positions[currentIndex + 1]; // 次の座標 UnityEngine.Vector3 vector = next - current; // 進行方向 float angleY = MathF....

2023-5-23 · 1 min · 148 words · SatooRu

梶研 05/10 - 05/16

スケジュール Unityでアニメーション 進捗 Unityでアニメーション c#スクリプトの注意点 ファイル名とクラス名を一致させなければならない (2時間無駄にした…) オブジェクトの移動(キーボード) this.transform.position = new Vector3(x, y,z); 単純な移動はこれだけ 軌跡に沿ったオブジェクトの移動 void Start() { ... while (!reader.EndOfStream) { string[] line = reader.ReadLine().Split(','); float x = float.Parse(line[1]); float y = float.Parse(line[2]); float z = float.Parse(line[3]); positions.Add(new Vector3(x, z, y)); } ... } void Update() { // アニメーションを実行する timer += Time.deltaTime * 4; if (timer >= 1f) { Debug.Log(timer); currentIndex++; if (currentIndex >= positions.Count) currentIndex = 0; transform.position = positions[currentIndex]; timer = 0; } } GIFアニメみたい...

2023-5-16 · 2 min · 235 words · SatooRu