技育CAMPキャラバンハッカソン vol.2

概要 私たちは今回、福岡で開催された 技育CAMPキャラバン ハッカソン に参加してきました! ハッカソンとは短期間で集中して開発を行うイベントで、今回はオフラインで開催され、はるばる博多まで行きました(とても大変だった…) 制作したアプリは当日非常によい反応を頂いて最優秀賞をいただくことができました!! まさか初めてのハッカソンで、B1だけで、最優秀賞を取れるなんて…とてもいい経験になりました。 そんなハッカソンでの制作物について説明したいと思います 紙を破る風神 制作物について 今回制作したものは かみあぷり というものです。 このアプリでは 紙を破く という動作を認知し、スライドを移動する・プレゼンを開始/終了する、そしてソースコードを全て消す といった操作ができます。 以下の画像は実際のアプリの画面です。 紙を破いたと判断されると 付箋 に書かれている内容が実行され、ログが追加されます。また右側の2本の棒で認識状況がわかるようになっています。 実行内容は 付箋 をクリックすることで変更できます。 技術スタックについて フロントエンドは HTML/CSS と Vanilla JSを、音の認識には TensorFlow.js を使用しています。 Vanilla JS は高速で軽量な素晴らしいクロスプラットフォームのフレームワークです 本当は React.js を使用する予定でしたが、TensorFlow.js との兼ね合いがうまくいかず、諦めました。 他にもアニメーションをつけるために jQuery を使っているらしいです。(私は知らない) GUIフレームワークとして Tauri を使用しています。 とりあえず新しいものを使っとけの精神で選びました。 他にも AppleScript や Python を活用しています。 紙を丸める雷神 努力ポイント 続いて製作中に苦労したポイントなどです Tnsorflow.js ライブラリの読み込み TensorFlow.js は npm からインストールすることができます。 インポートして開発環境でテスト…無事できた!! しかしビルドするとERROR… とても頑張りました、しかし私には分かりません。 どうしようか… そこで思いついた解決方法はデモ用の speech-commands.min.js をダウンロードする! tf.min.js もダウンロードする!ついでに jquery-3....

2023-6-17 · 2 min · 300 words · SatooRu

梶研 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