SatooRu's Profile

全ての記事梶研の進捗日常の記録制作物一覧

全ての記事

梶研 [mocopiとaction slam(SVM)]

梶研 [mocopiとaction slam(SVM)]

3年セミナー:??% []mocopiとactionslam2 [x]シーンとランドマークを決める(~2月上旬) [x]SVMで動作判別する []? []論文書く []発表 ~?月シーン検知?をする ~?月論文を書く ~?月論文発表したい 梶研でいろんな動作をする中で冷蔵庫を開け閉めする動作をランドマークとする(仮) HASC2010corpusを用いた被験者数と人間行動認識率の相関. https//nagoya.repo.nii.ac.jp/record/13543/files/dt_hiro.pdf >認識の際には,平均,エネルギー,エントロピー,相関が特徴量として使用されている >>[2.関連研究の紹介(p.2)] >>Bao,L.andIntille,S.S.ActivityRecognitionfromUserAnnotatedAccelerationData.ProcofPERVASIVE2004,pp.117,2004. >認識の際には,特徴量として,窓幅5.12秒毎の平均,標準偏差,エネルギー,相関が用いられており >>[2.関連研究の紹介(p.3)] >>Ravi,N.,Dandekar,N.,Mysore,P.andLittman,L.M.ActivityRecognitionFromAccelerometerData.ProcofIAAI,pp.15411546,2005. >ノルムを計算し,得られた波形の平均と分散を特徴量として抽出 >加速度のノルムに対して,平均,分散,周波数帯域毎のエネルギー,零点交差率の7つの特徴量を用いた行動認識に関する評価実験も行った >加速度の積分値を8つ目の特徴量とした場合の評価実験を行った >>[4.2特徴量] 行動認識の特徴量 平均 分散 相関 エネルギー ? エントロピー 情報源がどれだけ情報を出しているか https//www.mnc.tohou.ac.jp/vlab/yobology/entropy/entropy.htm 零点交差率 一定区間内で0を横切る頻度 加速度の積分値 窓幅は3秒とする py bvhp=BVHparser('./logs/refrigerator.bvh') df=bvhp.get_motion_df() defcalculate_features(window) features=[] median_time=window['time'].mean() forjointincolumns X_rotate=window[joint+'_Xrotation'].values Y_rotate=window[joint+'_Yrotation'].values Z_rotate=window[joint+'_Zrotation'].values mean_value=np.mean([X_rotate,Y_rotate,Z_rotate]) variance_value=np.var([X_rotate,Y_rotate,Z_rotate]) correlation_value=np.corrcoef([X_rotate,Y_rotate,Z_rotate])[0,1] zero_crossings=np.sum(np.diff(np.signbit([X_rotate,Y_rotate,Z_rotate]))!=0) energy_value=np.sum(np.square([X_rotate,Y_rotate,Z_rotate])) features.extend([mean_value,variance_value,correlation_value,zero_crossings,energy_value]) return[median_time]+features window_size=3 window_stride=1 columns=[jforjinbvhp.get_joints()ifnotj.startswith('_')] windows=[df.iloc[ii+window_size]foriinrange(0,len(df),window_stride)ifi+window_size<=len(df)] result_columns=['time']+[f'{joint}_{metric}'forjointincolumnsformetricin['mean','var','corr','zero_cross','energy']] result_data=[calculate_features(window)forwindowinwindows] result_df=pd.DataFrame(result_data,columns=result_columns) labels=[ {'title''冷蔵庫を開ける','num'1,'times'[[10,12],[33,35],[39,41],[55,57],[77.5,79.5],[104,106],[133,135]]}, {'title''冷蔵庫を閉める','num'2,'times'[[14,16],[36,38],[42,45],[58,60],[82,84],[106.5,108.5],[135,137]]}, ] result_df['state']=0 forlabelinlabels fortime_rangeinlabel['times'] start_time,end_time=time_range result_df.loc[(result_df['time']>=start_time)&(result_df['time']<=end_time),'state']=label['num'] result_df.to_csv('./logs/refrigerator_with_state.csv',index=False) py df=pd.read_csv('./logs/refrigerator_with_state.csv') data=df.drop(['state','time'],axis=1).fillna(0) target=df['state'] clf=svm.SVC(gamma="scale") clf.fit(data,target) py test_data=df.drop(['time','state'],axis=1).fillna(0) ans=clf.predict(test_data) print(sum(ans==df['state'])/len(df['state'])) >正答率0.9063168562098862(約90.6%) ラベル付けが雑かった? 大まかな1s単位で付けた >背景は手動でラベル付けした結果 > 青冷蔵庫を開ける > 黄冷蔵庫を閉める > >0その他 >1冷蔵庫を開ける >2冷蔵庫を閉める >正答率0.8908906654656007(約89.1%) 下がった 1.動作を始める瞬間から終える瞬間までなるべく広めに取ったのが悪い? 確実に動作している 2.ウィンドウサイズが大きい? 1回の開ける・閉めるは1~2sに対してウィンドウは3s 3.特徴量はこれだけでいいのか? 4.データが少ない? >正答率0.9225312464812521(約92.3%) 正答率が上がったのはそもそも正解部分が少ないからだと思われる 開け閉め中もその他に含まれたり、含まれなかったりするため良くない window_size=1 window_size=2 window_size=3 window_size=4 window_size=5 window_size=10 変わらない →60fpsだから大差ない window_size=30(0.5s) 細切れの部分が減った データを沢山取ってやってみる 技術力の問題でNext.jsでブログを作れなかったためHUGOで別サイトにしていた(半年前) プロフィールとブログを統合した! カスタマイズ性が上がり、esaから記事を追加できるようになった 画像を全てwebp&幅820pxに変換し、パフォーマンスが向上した

2024年1月27日

satooru.me[最新版]

satooru.me[最新版]

プロフィールサイトをアップデートしました プロフィールをNext.js,ブログをHugoと使い分けていたのを、全てNext.jsで実装しました というサービスをCMSとしてSSGで運用しています Next.js(AppRouter) mantine graymatter CSSModules(SASS) CloudflarePages GitHubAPI

2024年1月24日

梶研 [mocopi と action slam2]

梶研 [mocopi と action slam2]

3年セミナー:??% []mocopiとactionslam2 []シーンとランドマークを決める(~2月上旬) []? []論文書く []発表 ~?月シーン検知?をする ~?月論文を書く ~?月論文発表したい 一旦ラベリングを楽にする関数を作った py defplot_joint(bvhp,joint,xlim=(0,0),ylim=(0,0),figsize=(12,3),labels=None,is_position=False) df=bvhp.get_joint_motion_df(joint,mode='relative') fig=plt.figure(figsize=figsize) gs=GridSpec(1,2,width_ratios=[11,1],wspace=0.5) ax1=fig.add_subplot(gs[0]) ax2=fig.add_subplot(gs[1]) joint_name=to_joint_name(joint) ax1.set_title(f'{joint_name}の位置'ifis_positionelsef'{joint_name}の回転') ax1.set_xlabel('time[s]') ax1.set_ylabel('rotation[deg]'ifis_positionelse'position[mm]') ax1.grid(color='k',linestyle='dotted',linewidth=1,alpha=0.5) ifxlim[0]<xlim[1] ax1.set_xlim(xlim[0],xlim[1]) ifylim[0]<ylim[1] ax1.set_ylim(ylim[0],ylim[1]) r_heads=['Xrotation','Yrotation','Zrotation'] p_heads=['Xposition','Yposition','Zposition'] heads=p_headsifis_positionelser_heads forheadinheads ax1.plot(df['time'],df[head],label=head) colors=['mediumblue','orange','green','red','purple','gray','olive','cyan'] iflabels fori,linenumerate(labels) color=colors[i%len(colors)] ax2.scatter([],[],color=color,label=l) fors,einlabels[l] ax1.axvspan(s,e,color=color,alpha=0.2) ax1.legend() legend=ax2.legend() ax2.axis('off') forhandleinlegend.legend_handles handle.set_alpha(0.5) plt.show() py幸せ.py bvhp=BVHparser('./logs/1.bvh') labels1={ '本を取る'[ [20,25], [35,40], ], '本を置く'[ [29,32], ], ... } forjinbvhp.get_joints() ifj[0]=='_' continue plot_joint(bvhp,j,(0,150),(0,0),labels=labels1) 項目が多く、ランドマークの探し方がわからない 全ての項目を使うのは不可能? 主に使ったライブラリ(フレームワーク) フロント Next.js LeafLet バック Hono CloudflareD1 スクレイピング BeautifulSoup TypstTexよりも書きやすく軽く環境構築しやすい組版処理システム マークダウンxCSSみたいな感覚でかけて幸せ

2024年1月23日

Castle Datastore

Castle Datastore

このアプリケーションは,城好きに向けた城巡りの計画をサポートするためのWebアプリケーションです。 このアプリケーションはマップ上で城の位置を示すことで、簡単に城の位置を知られます フロントエンド Next.js(AppRouter) leaflet sass CloudflarePages バックエンド Hono drizzleorm wrangler CloudflareWorkers CloudflareD1

2024年1月22日

梶研 [Unity で複数人の動作を可視化(完) & mocopi と action ]

梶研 [Unity で複数人の動作を可視化(完) & mocopi と action ]

3年セミナー:??% [x]mocopiでセンシング(~12月) [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる [x]ブラウザで動作を確認できるようにする(gLTF形式の理解) [x]Unityで複数人の動作を可視化する [x]一連のやり方をesaにまとめる []mocopiとactionslam2 []シーンとランドマークを決める(~2月上旬) []? []論文書く []発表 ~?月シーン検知?をする ~?月論文を書く ~?月論文発表したい 手順をesa&Qiitaにまとめました。 タイトルを決めたい。 actionslam2で合っているか分からない mocopiの長時間使用時の位置情報の誤差をなくす 一連の動作(シーン)から特定の動作(ランドマーク)を抽出し、シーン内の位置情報を推定する 第一段階(今年)ランドマーク抽出 第二段階ランドマークから位置推定 動きがあること 全身の動作である ランドマークと同様の動作がない お料理 具材がたくさんある料理をつくる 学会発表の費用を出せるかもしれない 切る,フランパン振るなどは腕の動きだけで十分そう?(mocopiである必要性) 料理ができない お買い物 棚から商品を取る 同様の動作を繰り返していそう 買い物何回も行きたくない 城,水族館 同じところ何度も通らないから良くないかもしれない? 大学 梶研 本を取る お湯を注ぐ 図書館 棚から本をとる 同様の動作を繰り返していそう 本の貸し借り スポーツする 卓球 動く範囲が狭い サッカー,野球 やりたくない テニス 動作の位置の関係性が薄そう サーブ,レシーブの位置の制限が広い 水泳 水没する さくら+moomooドメインは色々と管理が面倒だったのでcloudflareを始めた 今まで webサイト→さくらサーバー api→Renderor梶研/シス研サーバー DB→迷子(お金こわい) 全てcloudflareでできる! を置き換えた を取得した を持て余している webプロの課題も兼ねてcloudflareD1で大量に読み取りするwebアプリを制作してます

2024年1月16日

長崎ペンギン旅行

長崎ペンギン旅行

三原城 長崎ペンギン水族館 島原城 18切符1日分2410円x2日 新幹線約5000円 特急(小倉博多)800円 特急(博多武雄温泉)1200円 北九州新幹線3070円 バス約600円x4回 島原鉄道3000円 飛行機約13000円 三原城御城印300円 ペンギン水族館520円 島原城700円 島原城御城印300円 南大高駅545(始発) 米原駅727 京都駅 新大阪駅855 岡山駅 糸崎駅1210 三原駅1256 岩国駅1515 下関駅1847 小倉駅1923 博多駅2016 武雄温泉駅2309 長崎駅2339(終電) 長崎交通広場[バス]ペンギン水族館前 日見公園前[バス]長崎交通広場 長崎駅[JR]諫早駅 諫早駅[島原鉄道]島原駅 島原駅[島原鉄道]諫早駅 諫早駅[JR]新大村駅 新大村ターミナル[バス]長崎空港 長崎空港[ANA]中部国際空港 すごい疲れた ペンギン水族館に毎日通いたい 旅行にPCは要らない ペンギン水族館 島原城 長崎空港

2024年1月10日

梶研 [Unity で複数人の動作を可視化]

梶研 [Unity で複数人の動作を可視化]

3年セミナー:??% []mocopiでセンシング(~12月) [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる [x]ブラウザで動作を確認できるようにする(gLTF形式の理解) [x]Unityで複数人の動作を可視化する []一連のやり方をesaにまとめる []mocopiとactionslam2 ? 1月研究の方針を決める&進め方を決める 前回Unityちゃんでやってみたら、ピンク(テクスチャが無し)になってしまった 対応トゥーンシェーダーデータをインストールする 再生した時、Unity上の世界座標が原点なのか、モデルの初期位置が原点なのか モデルの初期位置が原点となることがわかった →モデルの位置を調整することで位置関係を再現できる bvhの最初のデータが(0,腰の位置,0)、 数フレーム後から正しい位置になっている →モデルの初期位置とデータの正しい位置は異なり、テレポートするため調整が面倒 最初の一瞬で近づいている このテレポートを考慮して初期位置を調整している bvhからUnityで再生できるfbx形式に変換する時に処理を行う 1.開始時の(x,z)=(0,0)となっているデータを削除 1.0フレーム目の位置が(x,z)=(0,0)となるように調整 1.bvhからfbxに変換する python frommcp_persorimportBVHparser importsys importargparse parser=argparse.ArgumentParser() parser.add_argument('file',type=str,help='inputmocopirecordfile.bvh') args=parser.parse_args(sys.argv[sys.argv.index('')+1]) bvhp=BVHparser(args.file) motion_df=bvhp.get_motion_df() motion_df=motion_df[ (motion_df['root_Xposition']!=0)(motion_df['root_Zposition']!=0) ] reset_channels=['root_Xposition','root_Zposition','root_Yrotation'] forcinreset_channels motion_df[c]=motion_df[c]motion_df.iloc[0][c] bvhp.set_motion_df(motion_df) new_file=f"{args.file[4]}reset.{args.file[3]}" bvhp.to_bvh(new_file) print(new_file) 一連のやり方をesaにまとめようとプロジェクトを作るところからやったところ、 再現ができなくなってしまいました... スケールが100倍になる 動作が反映されない 研究を始めたい >「mocopiは長時間動くと狂う」 >他のセンサと組み合わせて途中でキャリブレーションできないか > >例) >歩いているとき、足が一定間隔で伸びると仮定すると >歩いているのに膝が最小でも30度曲がっている→ー30度して調整(適当) 進め方が分からない 論文の流れを考えた方が良い? とりあえずどの場面にするか決める? 高校生のやる気が引き出せた なにも出来なかった 興国城の写真しか無かった 始発 終電の西九州新幹線 お土産屋で2万円溶けました...

2024年1月9日

熱海旅行

熱海旅行

興国寺城 熱海 興国寺城御城印500円 車 富士山の見える城って凄い良い 熱海の写真はとってなかった

2024年1月5日

satooru.dev

satooru.dev

2023年最後の開発としてJavaScriptの物理演算ライブラリmatter.jsを使ってみました Next.js(AppRouter) matter.js CloudflarePages sass

2023年12月31日

梶研 [action slam2の論文読みました]

梶研 [action slam2の論文読みました]

3年セミナー:??% []mocopiでセンシング(~12月) [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる [x]ブラウザで動作を確認できるようにする(gLTF形式の理解) []Unityで複数人の動作を可視化する []mocopiとactionslam2 ? 1月研究の方針を決める mocmopiを長時間使用していると誤差が積み重なり、 関節の角度などがおかしくなってしまう ↓ 特定の動作から補正をしたい 例 冷蔵庫を開ける時は肘を一定角度曲げる 膝と足先にウェアラブルセンサを付けて、 その値からトラッキング(動線と動作?)を行う研究 ウェアラブルセンサによって認識されたユーザアクションをランドマークとしてローカライゼーションとマッピングを同時に行う ウェアラブルセンサとは身につけて歩くことができるセンサのこと。今研究では膝とつま先につけたIMUを使用している 今研究でいうローカライゼーションはどこにいるかを特定すること? ~~マッピングはセンサの情報と特定の位置を紐づけること?~~ マッピングはセンサの情報から周辺のマップを生成すること?(参考 "headingdriftcompensation"と"stancedetectionadaptation"と"ellipselandmarks"で対処する 日本語は、方位ドリフト補正,スタンス検出適応,楕円ランドマーク? 座っているような長時間の静止状態で発生した角速度センサのドリフトに対応する 地磁場を利用して補正する 鉄骨の建物内理想的な磁場ではないが、一般に磁場の向きは時間経過で変化しないため今研究では使用できる つまり、静止しているのに回転していたら磁場をもとに修正する? スライディングや早歩きの状況で欠落する スタンス検出ができないタイミングができ、誤差が大きくなるという問題がある 歩行中の一歩毎の静止状態を検出しているが滑ると一歩だとわからなくなる? 閾値を段階的に増加させて基準を緩めることで対処する 何の閾値かわからない 閾値変えるだけではないはず... 何をしているか全くわからない 翻訳私たちは、人間の行動の場所依存性をよりよく反映する楕円形のランドマークを導入する 関連研究としてWifiSLAMとともに挙げられている 足の動作から位置推定すること? 関連のありそうな研究 ZeroVelocityUpdate(ZUPT)とは、歩行者の歩行中に静止状態を検出することである。(byCopilot) ZUPT処理を使ったPDR ZUPT処理はセンサで感知される値は、ランダムドリフトによるものであると装置に認識させ補正する方法 (参考 カルマンフィルタについて調べた時と同じ匂いがする おせちを食べる (冷めた)チキンを食べる おしるこを食べる お雑煮を食べる 除夜の鐘を聞く(Youtube) ケーキを食べる 書き初めする クリスマス飾りと正月飾りの共存 クリスマスケーキとお雑煮(奥) おせち 書き初め

2023年12月26日

梶研 [mocopi センシング の環境を整える (Unity完全に理解した)]

梶研 [mocopi センシング の環境を整える (Unity完全に理解した)]

3年セミナー:??% []mocopiでセンシング(~12月) [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる [x]ブラウザで動作を確認できるようにする(gLTF形式の理解) []Unityで複数人の動作を可視化する ブルーシートばたばたの使い道を考える ライブセンシングの使い道を考える PDRやりたい ~~できませんでした...~~ ↓ ~~既存のパッケージの組み合わせで出来そう~~ ↓ 出来ない ↓ スクリプトを自作できそう(一旦置いとく) ↓ ~~既存のパッケージに合うBVHファイルを生成するスクリプトを書く~~ ↓ 分からない(パッケージが壊れてる?) ↓ fbxに変換してからUnityに取り込めば再生できた 参考https//github.com/vrmc/UniVRM/releases UniVRMというパッケージを使用してVRMをHumanoidにする Assetsに取り込んで、MigrateToVrm1を押すだけでできる それっぽい攻撃をしてポーズをとってくれるカッコいい系のanimationファイル というのを拾ってきてvrmに適用に適用 プレビュー画面 実際にモデルに反映させたいがわからない... ↓ animationcontrollerを使う Animatorタブでコントローラーを指定したら動いた BVHをanimatoinclipにしてくれるUniVRMを使う ↓ モーションが消えてしまっている 原因互換性のないBVHだった( 実線丸が必須のボーン mocopiでのボーン名UniVRM(Humanoid)のボーン名(は任意) rootHips torso_1Spine torso_4Chest torso_7UpperChest neck_1Neck headHead l_shoulderLeftShoulder l_up_armLeftUpperArm l_low_armLeftLowerArm l_handLeftHand r_shoulderRightShoulder r_up_armRightUpperArm r_low_armRightLowerArm r_handRightHand l_up_legLeftUpperLeg l_low_legLeftLowerLeg l_footLeftFoot l_toesLeftToes r_up_legRightUpperLeg r_low_legRightLowerLeg r_footRightFoot r_toesRightToes 手動で置き換えてみたが動かなかった。 テストで使われているBVHを使ってみたがダメだった。 MusclePowerが全て0(デフォルト)の状態 Blenderを経由する必要があるのは面倒だけど物は試しとしてやってみる( ダメだった 原因RigのAnimationTypeをHumanoidに変更していなかった 動いた 初期位置を変更することもできた bvhからfbxへの変換が面倒だったので、Automatorで自動化した 体全体の位置が動いていない ぺこらモデルはツイスターゲームを再生するには問題があったので、 Unityちゃんで再生した(テクスチャがバグっている) ちゃんと屈んだり移動したりできていることは確認できた。 ブラウザで動かした時のように、BVHをパースしてモデルを動かすことができそう 腕を動かしてみた 「mocopiは長時間動くと狂う」 他のセンサと組み合わせて途中でキャリブレーションできないか 例) 歩いているとき、足が一定間隔で伸びると仮定すると 歩いているのに膝が最小でも30度曲がっている→ー30度して調整(適当) mocopiアプリとVRChat等の中間で処理を挟んで補正できたら嬉しいかも なし 先週、ぺこライブに行ったとき有明アリーナに落としてきた 特徴的な文字を書いておくと伝えやすくておすすめです

2023年12月19日

梶研 [mocopi センシング の環境を整える]

梶研 [mocopi センシング の環境を整える]

3年セミナー:??% []mocopiでセンシング(~12月) [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる [x]ブラウザで動作を確認できるようにする(gLTF形式の理解) []Unityで複数人の動作を可視化できるパッケージを作る PDRやりたい(1月~) ブルーシートばたばたの使い道を考える ライブセンシングの使い道を考える mocopiで研究するときの環境を整えたい. [x]BVHをPythonで扱いやすいように [x]ブラウザで動作を確認できるようにする(gLTF形式の理解) []Unityで動作を確認できるようにする 初期位置・向きが指定できない Unityで再生するとき、Blenderでfbxに変換する必要がある 複数人のBVHを扱えない BVHは度数法,gLTFは弧度法を使っている X軸回転とZ軸回転は反対方向になる 体全体(ROOT)のX回転は+180度する 複数再生はできるが、場合によっては時間がずれる カメラ移動が扱いずらい ブラウザで動かすことが目標ではなく、 BVHからgLTF形式のモデルを動かすことはできたため、Unityでの可視化を進める ※温かかったです OP らららラビット 最強女神ウーサペコラ サインはB トーク(Twitterの話題まで) ED アンコール いいわけバニー 君の知らない物語 お手紙 兎座ストーリー

2023年12月12日

梶研 [mocopi センシング の環境を整える]

梶研 [mocopi センシング の環境を整える]

3年セミナー:??% []mocopiでセンシング [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる []複数人の動作を可視化できるアプリを作る []Unityで複数人の動作を可視化できるパッケージを作る []研究をしたい []テーマを考える []研究する []論文を書く []発表する 1月~研究 12月WiNF2024 mocopiとgLTFの関節と回転の対応が分からない →一部分だけ動かす 1.右足を前にあげる 1.右足を左にあげる 1.右膝を曲げて上にあげる 1.足をつけたまま回転する タイムスタンプ取れば良かった r_up_leg足の付け根の回転 r_low_leg膝の回転 真上から見て 前へXrotation(負) 右へZrotation(負) 右回転Yrotation(負) r_foot足の付け根の回転 不明 r_toes足の付け根の回転 不明 いい写真は撮れませんでした. 楽しめなかったので、良いセンシングできませんでした. (ずっと手叩いてただけ) 明日もライブに行くので、今度こそセンシングしたい. 梶研でライブを見るために、DVDプレイヤーを買った.

2023年12月5日

サークルwebサイト

サークルwebサイト

シス研のサイトを制作しました! フロント Next14.0(AppRouter) PandaCSS ホスティングサービス GitHubPages CI/CDサービス GitHubActions CMS esa.io あるとき言われました。 mkn先輩「welcome.sysken.netを作り直してくれない?HUGOとかで簡単にでいいからさ」 僕「いいですよ」 このサイトを制作し始めたきっかけは多分これでした。 今まではGoogleサイトとか言うものを使っていたらしいです。入学前にこれを見た僕は味気の無さを感じました。なんというかこのサイト息してる?一度作って放置したみたいな... こうして僕は制作を開始しました。 実はこの計画2度目でその時はデザイナーが居たりしました。しかし僕は作りたいサイトを作る人。デザインから自分で考えることにしました。 といいつつもデザインでこだわったポイントはありません。 強いて言うならWebAPIを使いたいばかりに付けたMacのメニューバー風ヘッダー。細くねと何度も言われたが貫き通しました。 このサイトでは最近(2023年11月時点)で最新のNext14(AppRouter)を使用し、SSGとして運用しています。SSGとしたのは頻繁に更新されるわけでもなく、Vercel等だけでなくとも簡単にデプロイできるためです。 このサイトのポイントはコンテンツのほとんどをesaから管理できる点です。投稿や制作物の追加はもちろん、各ページの内容、ナビゲーションバーの並び順、そしてページの追加・削除まで行えます。 逆にできないことはトップページの画像とフッターのシスキャットくらいです。これによりwebフロントが出来ない人でも管理することができます。 そしてこのサイトを制作する上で欠かせない信念があります。 「個人の管理下に置くのは許されない」 esaをCMSとしていますが、Markdownファイルはもちろん、esaにアップロードされた画像も全てダウンロードしGitHubで管理するようにしています。これによりシス研の歴史が失われることなく、リポジトリがある限り残り続けるようになります。シス研にオンプレサーバがあるのにGitHubPagesを使用したのはこの意図によるものです。 ここでひとつ問題がありました。 esaに画像をアップロードした場合、esa上で保存されておりGitHubに追加されたマークダウンにはesaのURLが貼られているだけです。更には自分のサイト用に書いた記事をコピペする輩もいました。 これではその人の気分次第でドメインを変えたり削除した場合には画像が見つからなくなってしまいます。 そこで私はビルド前にマークダウンを走査し、画像を見つけた場合には全てリポジトリに追加するようにしました。これにより画像等を個人の管理の下から解放することに成功しました。 こうしてこのサイトはLighthouseというwebサイトの質を測定するツールを使用したところ、とても高い評価を得られました。パフォーマンスが低い原因は投稿に画像を投げる部員のせいが9割なので諦めます。ユーザー補助はaタグのコントラストのせい。面倒。 ついにはGoogleで「シス研」と検索すると2番目、「システム工学研究会」では1番目に表示されるようになりました!! このサイトを制作する前にも同じレイアウトのものをPagesRouterで作っていたりしました。しかしアーキテクチャやコンポーネントの分け方、ブランチの運用方法などが気に入らず1から作り直しました。 SSGはAppRouterの特長であるSSRを殺してしまうため相性が悪いと思っていました。しかし実際に全く同じサイトを両方で作ってみたところ圧倒的にAppRouterの方が良かったです。 やはり物は試してみると良いと実感でき、自分の満足いく開発ができて嬉しいです。 気が向いたら技術的なことも書きたいと思います。では🐧ノ

2023年12月1日

梶研 [mocopi センシング の環境を整える]

梶研 [mocopi センシング の環境を整える]

3年セミナー:??% []mocopiでセンシング [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる []複数人の動作を可視化できるアプリを作る []研究をしたい []テーマを考える []研究する []論文を書く []発表する 1月~研究 12月WiNF2024 Unity bvhを再生するにはblenderでfbx形式に処理する必要がある UDPでデータを送信すれば再生できる BVHsender(SONY公式) BVHを再生できる 複数同時に再生することができない そもそも再生目的でない BVHファイルから直接アニメーションを再生できるようにする ただし複数ファイルを同時に再生できるようにすること 体全体と上半身(体,頭,手など)の動きは再現できた。 下半身の動きがそのままでは荒ぶってしまう →bvhとvrm(モデル)のボーンの違い? 回転量の単位が違う bvh形式度数法(deg) gLTF形式弧度法(rad) 回転量が一部異なる ex)root(腰)のy軸の回転量はbvh+180度  上腕のz軸の回転量はbvh 下半身の動作も再現できるようにする 複数ファイルあるときの進行時間を揃える bvhのフレーム数が異なる場合、2週目からずれてしまう 初期位置・回転量を変更できるようにする 他のやり方も探す UnrealEngineではbvh形式を再生できるかも? なし mocopiを持って行ったが、さすがに付けれる環境ではなかった。 スマホでセンシングしたが、保存に失敗した。 研究のテーマ決めの参考にしたかった... 今週もライブに行くので再戦する

2023年11月27日

梶研 [mocopi センシング]

梶研 [mocopi センシング]

3年セミナー:??% []mocopiでセンシング [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る [x]csvに書き出せるアプリを作る [x]複数人の絡みを取ってみる []動作判別 []研究をしたい []テーマを考える []研究する []論文を書く []発表する 1月~研究 12月WiNF2024 なれた! 第一回戦 第二回戦 お互いスタート地点に立って開始した 後半に揺れが大きくなっているのがわかる それぞれのターンで姿勢が変わっているのがわかる どれだけ動いているかとれそう グラフからは状況がわからない 二人の絡みなど (編集で横並びにしています) 簡単に動作を確認したい 複数人を同時に表示したい リアルタイムで表示と保存をしたい 今後のために動作を確認できるものを制作する 目標がないため、mocopiで目指すところを考えたい なし 「スマホアプリも触れる」から「web一筋」に路線変更 デザインは旧バージョンと同じ pandacss(CSSinJS)を触れた Next14(AppRouter)とStaticExport(静的レンダリング)を使った コンポーネントの分け方を意識した 汎用性が高くなるようにした テストが書きやすい構造にした AppRouterに合わせたアーキテクチャにした ESLintとPrettierで統一的な書き方になるようにした issuesを活用してブランチを使い分けるようにした etc. さまざまなcssライブラリを使う アーキテクチャを知る 良いコンポーネントの書き方を学ぶ 良いcssの書き方を学ぶ テストコードを書く バックエンドをもっと勉強する クラウド(AWS・GCP)に慣れる これを踏まえた上で、何か大きめのプロダクトを制作し継続的な開発をしたい

2023年11月21日

梶研 [mocopi センシング]

梶研 [mocopi センシング]

[x]"地図は意外とウソつき"を読む []情報処理学会ジュニア会員になる []mocopiでセンシング [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 [x]bvhをパースするパッケージを作る []動作判別 [x]csvに書き出せるアプリを作る []複数人の絡みを取ってみる []研究をしたい []テーマを考える []研究する []論文を書く []発表する 1月~研究 12月WiNF2024 ~~Twitter~~Xで気になっていたものが梶研にあったから読んだ。 前に情報処理学会で"学生会員"で申し込んで、放置してたら金曜日に請求がきた。 ジュニア会員に変更したいが分からない これから簡単にmocopiの動作をとれるようにする 骨格情報をbvhファイルから取得するように変更した 骨格情報を変更できるようにした bvhファイルをパースしてDataframeとして扱えるようにした 初期位置/回転量を変更できるようにした モーションデータを変更できるようにした csvに書き出せるようにした Dataframeからbvhファイルに書き出せるようにした shell $pipinstallmcp_persor shell frommcp_persorimportBVHparser python bvhp=BVHparser('bvh/mocopimove.bvh') motion_df=bvhp.get_motion_df() 関節名やファイル構造を知っている前提で、パースしていたが、 全ての情報をBVHファイルから取得するようにした python offset=bvhp.get_joint_offset('r_hand') offset[0]+=10 bvhp.set_joint_offset('r_hand',offset) 人の体に合わせて変更でき、より正確な動作になる python relative_motion_df=bvhp.get_joint_motion_df(joint_name,mode='relative') python relative_motion_df=bvhp.get_joint_motion_df(joint_name,mode='absolute') python init_pos=bvhp.get_initial_position() init_rot=bvhp.get_initial_rotation() bvhp.set_initial_position([0,0,0]) bvhp.set_initial_rotation([0,0,0]) 動いてからデータの取得を開始しても補正できる。 複数人での絡みをとった場合に補正できる。 python relative_motion_df=bvhp.get_joint_motion_df(joint_name,mode='relative') relative_motion_df['Xposition']+=10 bvhp.set_joint_motion_df(joint_name,relative_motion_df,mode='relative') python bvhp.to_csv('mocopimove.csv') dataframeを扱っているから要らないけど、csvに書き出せるようにした python bvhp.to_bvh('mocopimove.bvh') 調整等をしたあとに、bvhで書き出して確認をしたりできる キーバインドが気に入ってVScodeのキーバインドをEmacs風にした 最終的に更にVScodeに依存することになった 思ったより面白くなかった ! ハッカソンに出る友達にAPIの作り方を教えてたら作りたくなった。 コントリビューションが前日以上であれば進化し、前日未満であれば退化する 供養のつもりでポストしたら、思いの外好評だった。 ~~ハッカソンのネタ潰してごめんなさい~~

2023年11月14日

梶研 [mocopi センシング]

梶研 [mocopi センシング]

[]mocopiでセンシング [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 []bvhをパースするパッケージを作る []動作判別 []csvに書き出せるアプリを作る []研究をしたい []テーマを考える []研究する []論文を書く []発表する 1月~研究 12月WiNF2024 4号館別館の3階から2階へ下りて、上る 階段を上ったのに気圧にあまり変化がない →ポケットに入れていたから? 撮り直す 3回+1回+1回 rootの位置(y)は、地面を基準としている 階段を上り下りすると、基準が変わり補正が掛かる 手足がついた瞬間に基準が変わり、補正されるため、 ジャンプ中や、一歩を踏み出している時は基準が変わらない 平面空間であれば取れるが、上下する階段やエレベーター等の判別は難しそう 何やればいいか迷走してます 現状、bvhをパースするパッケージはないため、自作する 各関節は相対的な位置・角度で表されているため扱いづらい →簡単に絶対的な位置・角度を取得できるようにする 2行で取得できるようになった python bvhp=BVHparser('sample/jump.bvh') absolute_motion_df=bvhp.getAbsoluteMotionDataframe('r_toes') 関節の位置関係をベタ書きではなく、ファイルから取得できるようにする モーションのチャンネルをファイルから取得できるようにする 初期の位置を変更できるようにする 初期の骨格同士のオフセットをファイルから取得できるようにする 初期の骨格のオフセットを変更できるようにする 太もも用拡張バンドが無償提供されるらしい https//www.sony.jp/mocopi/info/20231106.html 夢が詰まってる togawaさんから滞在ウォッチについて聞いた。 やりたいところがほぼ終わってた 物理ビーコンのセキュリティ(uuidが変わらない)というところは面白そう これは3年生の研究? 使い道が思いつかない ドラゴンナイト中の動き 撮影禁止の代わりにその時の自分の様子を残す mocopiで全身をとる 詳細に残せる 手軽さがない スマホで何種類か推定 大まかにしか推定できない 手軽 その場の盛り上がりをみんなで共有 その場のひとたちで何か マップ上でぴょんぴょんしてる様子をみる 主催者が盛り上がりを見る? ペンライトを制御する感じで何か esaをCMSとして投稿・編集できるようにした パフォーマンスを100にしたい パソコンが最近うめきをあげるようになって、軽めのエディターに乗り換えたい 起動がはやい 多分Rust(Tauri)製のエディター デフォルトではvimバインド 拡張機能は無い 起動がとてもはやい 完全にRust製のエディター デフォルトではvimバインド 拡張機能がある(Rust製)

2023年11月6日

梶研 [mocopi センシング]

梶研 [mocopi センシング]

[]端末姿勢推定 [x]データを収集 [x]グラフを作成 [x]静止状態の判別 [x]端末の姿勢を推定 [x]加速度を世界座標に変換 [x]Unityで可視化 []mocopiでセンシング [x]mocopixUnity [x]色んな動作をとる [x]誤差を計測(簡易) [x]動作をグラフ化 []動作判別 []csvに書き出せるアプリを作る []Androidアプリ開発 1月~研究 12月WiNF2024 端末の姿勢を可視化 各軸の回転とy軸を変動させた csvに書き出せるアプリを作っていたが、時間がかかりそうなので、 bvhで保存したファイルからの動作推定を先にした モードをモーションの保存に切り替えて、bvhファイルとして保存する. >mocopiアプリで記録したモーションデータ(BVH形式)を、ローカルネットワーク上にUDP送信することができるアプリケーションです。 WireSharkで見てみると、UDPで送信されていることがわかる あまり使い道はなさそう HIERARCHYは、モデルの構造を定義している MOTIONは、実際の動作が書かれている bvh HIERARCHY ROOTroot { OFFSET093.29290 CHANNELS6XpositionYpositionZpositionZrotationXrotationYrotation JOINTtorso_1 { OFFSET05.078671.15138 CHANNELS6XpositionYpositionZpositionZrotationXrotationYrotation JOINTtorso_2 { OFFSET05.616611.07143 CHANNELS6XpositionYpositionZpositionZrotationXrotationYrotation JOINTtorso_3 { ... } } MOTION Frames3062 FrameTime0.016667 093.2929000005.078671.1513800005.616611.071430001.02604e175.989780.115010001.10457e176.505830.4435230001.97295e177.605481.505930002.53307e179.497370.9144920002.90401e1710.55131.576910001.29193e174.786440.7153390001.8116e174.821090.4217910002.00958e174.830410.7650620001.232997.607317.5337400012.95473.24953.2687200029.20810.05980810.13703900024.2340.04962190.1137010001.232997.607297.5336500012.95473.24953.2687200029.20810.05980810.13703900024.2340.04962180.1137020009.236734.205562.03270000.85235338.77210.6551870002.3262240.40176.048750000.7790969.884412.49590009.236734.205562.03270000.85235338.77210.6551870002.3262240.40176.048750000.7790969.884412.4959000 44.719293.5259214.1910.1243291.31566169.8405.078671.151380.1588492.68890.51708505.616611.071430.34230.928090.3943351.02604e175.989780.115010.4075631.162440.2684271.10457e176.505830.4435230.4795234.328260.253581.97295e177.605481.505930.4758585.673730.3563512.53307e179.497370.9144920.4575176.574550.4872122.90401e1710.55131.576910.01675790.08547280.004180961.29193e174.786440.7153390.4917593.818840.7332531.8116e174.821090.4217910.2109342.3270.4819412.00958e174.830410.7650620.5719760.1459130.01297281.232997.607317.533741.418720.9764430.14433512.95473.24953.2687260.276441.946519.474129.20810.05980810.13703911.859613.968100.00524.2340.04962190.1137015.6247955.68758.463861.232997.607297.533652.742672.255951.0646112.95473.24953.2687270.656817.73277.3217529.20810.05980810.13703911.394415.7467108.97924.2340.04962180.1137022.2410527.17455.174829.236734.205562.03271.2541.5443218.59890.85235338.77210.6551870.2649130.9890120.01497662.3262240.40176.048750.6631330.25618415.34920.7790969.884412.49592.87313e168.0567e162.29556e179.236734.205562.03272.611285.9666924.08230.85235338.77210.6551871.12374.196040.03210322.3262240.40176.048752.694460.018351815.61090.7790969.884412.49596.56914e165.57189e161.27433e14 44.68393.5057214.2210.1284641.26792169.84805.078671.151380.168032.954830.51287805.616611.071430.3521751.10310.3875461.02604e175.989780.115010.4160091.132460.2613181.10457e176.505830.4435230.4856224.522490.2451641.97295e177.605481.505930.4836516.009810.3508092.53307e179.497370.9144920.4681496.980040.4886322.90401e1710.55131.576910.01715450.07891890.004283911.29193e174.786440.7153390.4911694.333620.6899981.8116e174.821090.4217910.2452642.34070.4649872.00958e174.830410.7650620.6129970.008983310.0532461.232997.607317.533741.587251.305280.32329612.95473.24953.2687260.044941.803120.082829.20810.05980810.13703911.852314.0092100.20924.2340.04962190.1137015.4146755.82288.198811.232997.607297.533652.938652.57930.89450512.95473.24953.2687270.624117.69227.8201229.20810.05980810.13703911.379515.7888109.19724.2340.04962180.1137022.1411427.09354.988649.236734.205562.03271.235761.5014918.67310.85235338.77210.6551870.2650780.989630.01498462.3262240.40176.048750.5987860.32772415.34520.7790969.884412.49591.08639e177.97031e161.43165e179.236734.205562.03272.615095.9372924.08240.85235338.77210.6551871.130514.221420.03204672.3262240.40176.048752.658520.037434715.6050.7790969.884412.49595.96354e165.59082e161.27471e14 ... 各部位はROOT(root)を基準に、JOINTで定義されている MOTIONは、1行に1フレームのデータが書かれている >rootの位置(x,y,z)rootの回転(x,y,z)torso_1の位置(x,y,z)torso_1の回転(x,y,z)torso_2の位置(x,y,z)... ROOT(HIPS)の位置と回転 ほぼ一次関数になっていて明らかにおかしい y軸の目盛り間隔が指定通りにならない y軸の範囲が指定通りにならない csvに書き出してスプレッドシートでグラフ化 データは問題なさそう 型変換が正しくなく、数字ではなくオブジェクトになっていた root(腰)の位置と回転 r_up_leg(右足付け根)の位置と回転 l_shoulder(左肩)の位置と回転 ふらついているのが気になるが、あらかた正しそう →二乗平均誤差(RMSE)を出したい 半年ぶりに外山さんと林先輩とシス研の先輩で寿司大食い対決をした 23皿+デザート食べた。 外山さんに1皿負けた 4人で10,995円 焼きパインがめちゃくちゃ美味しかった 食べすぎて引かれた

2023年10月31日

梶研 [mocopi センシング]

梶研 [mocopi センシング]

3年セミナー:??% []mocopiでセンシング [x]mocopixUnity [x]色んな動作をとる []誤差を計測 []csvに書き出せるデスクトップアプリを作る []動作判別 [](mocopiから直接データを取りたい) []Androidアプリ開発 23年 12月研究テーマを決める 24年 1月~研究 12月WiNF 参考 1.mocopi(本体)[Bluetooth]→mocopi(アプリ) 2.mocopi(アプリ)[UDP]→Python(mcpreciever) 3.Python(mcpreciever)[VMC]→Unity 実際に30m歩く 歩きつつmocopi(アプリ)内のグリッドを数える 30m歩いたところ、バーチャルでは29m歩いたことになった 外で100mくらい歩いて誤差を計測したい 既存のアプリ等の問題点 扱いづらい PC側が受信(Python)と表示(Unity)で分かれている csv書き出し未対応 Pythonに追加すれば良いが、扱いづらい 移動距離等が分かりづらい グリッドを数える必要がある Tauri Rust(受信側) Next.js(表示側) ブラウザ上で動くようにした 三角関数で円形に動くアニメーションを作った →UDPで受信したデータを元に動かすようにする 破壊的変更により今までの情報がほとんど使えず、 公式ドキュメントを読みながら制作した NextRustでUDPを取得する 激しい動きをすると狂う 精度が完璧ではない 手先の位置 肘・膝の曲げ具合 座った時の体の傾き 足を上に上げたとき不安定 長距離歩いた時の誤差 もっとしっかり取りたい100mとか グラウンドぐるぐる歩いた時の誤差をとりたい 走たときはどうなるか 素振り,着席時の動作判別 2人以上の絡みをとりたい 馬跳 組体操 HIPを基準としたセンサとして使える? 土日にシス研で集まってみた

2023年10月23日

梶研 [Unity で可視化]

梶研 [Unity で可視化]

3年セミナー:??% []端末姿勢推定 [x]データを収集 [x]グラフを作成 [x]静止状態の判別 [x]端末の姿勢を推定 [x]加速度を世界座標に変換 [x]Unityで可視化 []カルマンフィルタを用いた推定 ~12月Androidアプリ開発 Unityでスマホの動きを可視化した Androidアプリ mocopi スマホと組み合わせてより詳細な動きをとりたい mocopi同士の位置 座っている状態の精度 気圧 技育CAMPvol.7 技育展予選 技育CAMPvol.9 HackU 技育CAMPアドバンス 技育展決勝 工科展 新たな誘惑から逃げ切れた 11月中ばでコメダ辞めます 最近の疲れを癒されてきた

2023年10月17日

mcp-persor

mcp-persor

研究室でmocopiから取得したBVHファイルを扱う必要がありました。 そこでmocopiのBVHファイルを簡単にDataframeとして扱えるパッケージを作りました Python Pandas Numpy

2023年10月13日

梶研 [工科展]

梶研 [工科展]

3年セミナー:??% []端末姿勢推定 [x]データを収集 [x]グラフを作成 [x]静止状態の判別 [x]端末の姿勢を推定 [x]加速度を世界座標に変換 []Unityで可視化 []カルマンフィルタを用いた推定 9月中旬まで端末姿勢推定(加速度,角速度) 10月中端末姿勢推定(カルマンフィルタ) 11月中Kotlin(とRust)の勉強「いつでもセンシングアプリ」 大学内の施設や教室の混雑を知れるアプリ フロント Next.js バック Go Gin Gorm ipv4 smtp 優秀賞をいただいた ネットワークつよつよな方が来たりしたが、 全ての質問に対して回答とスライドを用意しており、 完璧に対応できたのが良かった. チームが崩壊しており、牧野先輩・林先輩に助けを求めてなんとか完成させており、 自分たちでできなかったという点ではPMとして良くなかった。 牧野先輩に買わせた韓国のサイダーがめっちゃ売れた 売れ残りのたこ焼きを食べながらタコパした

2023年10月10日

kusa evolution

kusa evolution

コントリビューション数に応じて猿人が進化します。 前日よりも多ければ進化、少なければ退化します。 ただし、コントリビューションが0の場合は問答無用で猿人に戻ってしまいます。 express render.com

2023年10月10日

1
1234
4