全ての記事
![梶研 [センシングはじめました]](/images/articles/8/22c92718-a4ae-4c32-a7fb-bd9764279478.webp)
梶研 [センシングはじめました]
3年セミナー:??% [x]Androidアプリ開発お試し [x]AndroidStdioの設定 [x]加速度センサーを見るアプリをつくる [x]csv出力&PCに移す 加速度から距離を出してみる [x]加速度センサーの値を取る(直線運動) [x]Pythonでグラフ化する [x]加速度グラフを距離グラフ 歩数推定 [x]加速度センサーの値を取る(歩行) [x]グラフ化&フィルターをかける []歩数を取得する 未定(歩行軌跡の可視化をしてみたい) バージョンに合わせたコードに修正 TextViewを行ごとに分割した スマホをx軸正の方向に30cm動かした 環境 端末 iPhone12 使用アプリ phyphox バージョン 3.10.10 使用ライブラリ pandas matplotlib numpy 加速度[m/s^2]を微分※すると速度[m/s]になる 速度[m/s]を微分※すると距離[m]になる ※間違い 速度,距離グラフの形がおかしい →微分と積分を逆に認識していた (気付くのに3時間掛かった...) 形はそれっぽくなった 値が明らかに大きすぎる →サンプリング周波数を考慮していなかった 面積分は1本1本の面積を足していくもの 面積ではなく長さ(図で言う縦)を足していた →全ての値にx0.01(100Hz)する まっすぐ5歩 (スマホのz軸正が上向き、y軸正が左向きになるように腰の位置で手に持つ) >(N0+N1+N2+N3+N4)/5 (N0が現在の値) サンプリング周波数100Hzなので、5つの平均ではあまり意味がない? >(N0+N1+N2+...+N9)/10 だいぶ滑らかになったが、1歩に対し頂点が複数ある >(N0+N1+N2+...+N19)/20 1歩に対し1頂点になった。 (平滑化フィルターだけでいいのだろうか) 過去との平均の為、波が大きく後ろにずれた。 より良いやり方があるらしい → >rolling_mean=data.rolling(window=10).mean() >normそのままのデータ >自作関数さっきまでのやり方 >pandas.rolling()良さそうなやり方 pandas.rolling()を上手く使ったほうが良い 赤丸が6つ →6歩? 正しくは5歩 5歩ののちに立ち止まる時の足を揃える動作も含まれてしまった データを取り直す なし
2023年4月18日

Chindicator
WiFi強度をチンアナゴが教えてくれます (形がモバイル通信なのは気にしない) SwiftUI https//github.com/SatooRu65536/Chindicator
2023年4月11日

BottleMails App
Flutterが分からず挫折したアプリです 海に流して知らない人にメッセージが届くボトルメール、のアプリ版です。 流した瓶はマップ上を彷徨ってどこか知らない地へ届きます。 近くに流れ着いたら拾ってみよう。 どこの誰に届くか分からないメッセージ。 だれかに言うまでもない呟きを流そう。 Flutter firebase
2023年1月9日

ncss(自作プログラミング言語)
今までの会話でこんなことがありました >A.使ったことあるプログラミング言語は? >B.うーん...HTMLとCSSかな? 経験者なら違和感を感じると思います >どっちもプログラミング言語じゃなくね? 厳密に言うとHTMLはマークアップ言語でCSSはスタイルシート言語です。 プログラミング言語だ、と言う人もいれば違うと言う人もいます。 そこで私は思いつきました。 「プログラミング言語にすればいい!」 ということで作りました 目標は >CSSをプログラミング言語にする プログラミング言語を作るには、他のプログラミング言語を使用します RubyはC言語 PythonはC言語,Java... やはりC言語で実装するのが基本的ぽい、が、めんどくさい! そこで私はJavaScriptで実装することにしました。 決め手は以下の通りです 使い慣れている ブラウザで実行できる 公開しやすい ~~パクれる~~参考になるリポジトリがあった 言語仕様はようにしました。 サンプルコードはです。 言語名は >CSS(カスケーディング・スタイル・シート)ではない ということで >NCSS(notCSS) としました。~~SCSSを意識してますね~~ 工夫点はcssらしくしたことです。(目標だから当然) さらにscssらしいあの~~うるさい~~ネストを再現できるように、 というものを追加しました。 scss /scssらしいうるささの再現/ #main{ width100vw; .container{ margin10px; .content{ fontsize1.2rem; backgroundcoloraqua; } } } 実装にはJavaScriptを使ったと書きましたが、制作はTypeScriptに切り替えました。 型が無いとあまりにも不便だったからです。型を定義すれば文字列でも選択肢を絞れるから楽でした。 公開する前にJavaScriptにコンパイルしています。 nodeが入っている場合は↓でインストールできます npmig@satooru65536/ncss ↓でncssを実行できます。 ncss./main.ncss ncssを使うためにVScodeの拡張機能も作りました。 ~~こぴぺしたので~~あまり苦労しませんでしたが、returnやberakの扱いが厄介でした。 関数の中で同じ関数をなん度も呼び出しているので、どこまで遡って中断すればいいか分からなかったからです。 何言ってるか分からない場合は↓を見て察してください。(簡単に説明する方法わからない) scss /mian.ncss/ #main{ sub""; content"main!!"; return""; } #sub{ i0; .while[i<3]{ .if[i==0]{ return"subreturn"; } transformivar(i)+1; } content"error"; } js //ブロック内の処理を順番に実行する関数 functioneval_statement_list(/.../){ for(/ブロック内の処理を一つずつ/){ eal_statement(/.../); } } //処理を実行する関数 functioneval_statement(/.../){ ... elseif(/関数を呼び出す場合/)eval_statement_list(/.../); elseif(/代入の場合/)eval_assign(/.../); elseif(/変数宣言の場合/)eval_assign(/.../); ... } js [処理手順はイメージこんな感じ] #main内のブロックを処理eval_statement_list() #sub内のブロックを処理eval_statement_list() eal_statement(i0;) eal_statement(.while) .while内のブロックを処理eval_statement_list() eal_statement(.if) .if内のブロックを処理eval_statement_list() eal_statement(return)//eval_statement_listを何回遡れば...? //ifブロック>中断 //eal_statement(transform) //whileブロック>中断 //eal_statement(.if) //eal_statement(.if) //#subブロック>中断 //eal_statement(content) //#mainブロック>続行 eal_statement(content) eal_statement(return) //#mainブロック>中断 //プログラム終了 // //中断と続行の判断基準は? //=>https//github.com/ncssproject/ncss/blob/main/src/evaluator.ts#L70 //called_global_funcフラッグがポイント //関数のブロックから直接呼び出されているかを判断(if/else/group...のブロックはfalse) //falseなら中断する //=>https//github.com/ncssproject/ncss/blob/main/src/evaluator.ts#L78 ちゃんとしたプログラミング言語は難しくても、この程度ならとても簡単でした。 ぜひを解読してみてください
2023年1月6日

架空都市の公式サイト
架空都市酒見市の公式サイトです Next.js tailwindcss
2022年12月24日

車の制御シミュレータ
課題研究で制作したシミュレータです 完全自動運転化された未来では従来の信号よりも効率的に捌けるのではないかを検証します Python3 sqlite3 concurrent.futures
2022年12月11日

部活のサイト
情報システム部へと変わり、部外に対して活動内容が分かるようにしたということで、公式サイトを制作しました。 メンテナンスがしやすいように難しいものは使わず、MarkDown形式で記事を追加できるようになっています。また、MISCらしさを出すためにヘッダーには現在のパスやコマンドなどが表示されるように魔改造しています フレームワーク テーマ CSSフレームワーク Hugo HTML/CSS/JavaScript TailwindCSS
2022年11月6日

長篠旅行
長篠城 長篠城保存館 設楽原決戦場 設楽原歴史資料館 野田城 大野田城 百名城スタンプ長篠城 御城印長篠城 御城印野田城 御城印設楽原 新城・本長篠往復きっぷ 往復・カルテットきっぷ専用新幹線変更券 交通費2720円 1680円新城・本長篠往復きっぷ 400円x2新幹線変更券 240円長篠城駅野田城駅 食費2134円 418円朝ごはん(コンビニ) 213円クレープ(コンビニ) 1000円昼ごはん(もっくる新城) 203円アイス(コンビニ) 300円アイス(新幹線) 入場料440円 440円長篠城保存館・設楽原歴史資料館共通 御城印900円 300円長篠城 300円野田城 300円設楽原 お土産770円 770円五平餅 合計6964円 名古屋駅[東海道新幹線] 豊橋駅[JR飯田線] 長篠城駅[徒歩] 長篠城/長篠城保存館[自転車] 設楽原歴史資料館[自転車] 設楽原決戦場[自転車] もっくる新城[自転車] 長篠城/長篠城保存館[徒歩] 長篠城駅[JR飯田線] 野田城駅[徒歩] 大野田城[徒歩] 野田城[徒歩] 東上駅[JR飯田線] 豊橋駅[東海道新幹線] 名古屋駅 新幹線変更券によって名古屋豊橋間を20分で移動することができて楽だった。 珍しくほぼ走らず、のんびりできた。 長篠城を守る川岸が急であれは攻めづらそうだった。 大野田城に行く途中で脱輪してる車があった。大学生っぽくて初心者マーク付けてた。 周りのじいさんばあさんと一緒に抜け出すのを助けた。めちゃおもろ 野田城の本丸の堀底から登ってみたが、足元の土が粘土質で滑って登れなかった。しかも崖も急で攻めづらそう。 長篠城の堀 長篠城を守る豊川の断崖絶壁 設楽原決戦場の馬防柵 昼ごはんの給食セット 野田城駅付近にあったゴムラ 野田城 東上駅付近の面白い看板
2022年10月22日

aiboard
7月後半より情報システム部4人で推し活をテーマにaiboと遊べるすごくを制作しました。 事前課題を経て選ばれた6校が2ヶ月で制作し、私たち名電は一般公開が決まりました svelte AWS S3 Lambda DynamoDB aiboWebAPI
2022年10月15日

cssの練習
cssで遊びました CSS/HTML
2022年8月14日

ColorCodeBOT
友)カラーコード好きなんだよね。よくネッ友とカラーコード当てゲームしてる 私)めんどくさくない?BOTにしたら...?私がつくろう!! 画像を送ってそのカラーコードを当てるゲーム ルームごとのゲームモード等を保存するのにsqliteを使用しています canvasを使いたかったが原因不明のエラーにより使えなかった →sharpでpng画像を生成するようにした (256×256×256枚の画像生成せずに済んでよかった...) サーバのglitchには容量制限があるため画像データが邪魔 →データベースに生成記録を保存しておき、一定時間で削除されるようになっている (ゲーム記録も一定時間で削除されます) Node.js17.10 discord.js12.5.3 glitch 0.training 回答したら次の問題がきます "fin"を入力すると終了します 1.oneshot 一人一つカラーコードを入力し、誤差が小さい人が勝ちです "check"を入力すると結果が表示されます 2.perfect カラーコードをピッタリ入力した人が勝ちです 3.perfectH perfectのハードモードです ヒントは表示されません コマンド !tcc[gamemode] 指定したゲームを開始します !tccrandom(num) ランダムな色を送信します (num)に1~5の数字を指定すると複数送信されます !tcchelp ヘルプを表示します #[colorcode] 入力された色を表示します ゲーム中はカラーコードを指定することができます ├─server.js └─src ├─finish.js ├─generatecc.js ├─getcc.js ├─help.js ├─oneshot.js ├─perfect.js ├─random.js ├─remove.js ├─training.js └─winner.js 以下の部分でsrcディレクトリ全てのファイルを読み込んでいます nodeserver.js [server.js10] letsrc={}; fs.readdir('./src/.',(err,files)=>{ files.forEach(file=>{ base=path.basename(file,path.extname(file)); src[base]=require('./src/'+file) }); }); 0~255(10)と0~ff(16)のランダムな数値を生成 node [generatecc.js] for(leti=0;i<3;i++){ rgb10[i]=Math.floor(Math.random()256); rgb16[i]=rgb10[i].toString(16); } カラーコード化 node [generatecc.js] letcolorcode='' for(leti=0;i<rgb16.length;i++){ colorcode+=zeroPadding(rgb16[i],2); } 画像を生成 node [generatecc.js] constpath=images/${colorcode}.png; if(!fs.existsSync(path)){ sharp({ create{ width100, height100, channels3, background{rrgb10[0],grgb10[1],brgb10[2]} } }).toFile(images/${colorcode}.png); }
2022年6月12日