2020-05-01から1ヶ月間の記事一覧

M5Stackのディスプレイとフォント

M5Stackのディスプレイサイズは320x240 フォントサイズ=2だと、16x16の文字サイズになる。 lang-ship.com #include <M5Stack.h> void setup() { M5.begin(); M5.Lcd.setTextSize(2); for (int y=0;y<240;y=y+16){ for (int x=0;x<320;x=x+16){ M5.Lcd.setCursor(x,y);</m5stack.h>…

M5StackからUARTでJSONを送信する

#define M5STACK_MPU6886 #include <M5Stack.h> #include <ArduinoJson.h> float accX = 0.0F; float accY = 0.0F; float accZ = 0.0F; float gyroX = 0.0F; float gyroY = 0.0F; float gyroZ = 0.0F; StaticJsonDocument<200> doc; void setup() { M5.begin(); M5.IMU.Init(); } void </arduinojson.h></m5stack.h>…

電子コンパスと加速度センサを用いた姿勢推定(6軸)

以下の記事を参考に。 watako-lab.comM5StackのBMM150からは以下のコードを利用してデータを取得する。 github.com あらかじめBMM150のサンプルコードを用いてキャリブレーションしておき、pref(ESP32のNon Volatile Storage:NVS)に保存しておく。Arduino…

M5stackのIMUのキャリブレーション

M5stackのIMUが出力したRawデータをグラフにしてみる。 M5StackはZ軸を鉛直上向きで静止状態にする。上図より以下がわかる。 1) 加速度センサはaz=1.05くらいを示している。g=9.8(m/s2)のときaz=1ということ?→データシートによれば、単位はgなのでこの理解…

M5Stackのジャイロセンサの角速度からの姿勢推定

以下の記事を参考に。 watako-lab.com hamachannel.hatenablog.com上の2つのページには同じ式が異なる表記で載っている。 この式の意味は、 (X-Y-Zオイラー角(=ロール・ピッチ・ヨー)の時間微分) = (姿勢オイラー角から計算される変換行列) x (ジャ…

行列のノルム

スペクトルノルム フロベニウスノルム >> A=[1 2; 3 4] A = 1 2 3 4 >> det(A) ans = -2 >> norm(A) ans = 5.4650 >> A'*A ans = 10 14 14 20 >> trace(A'*A) ans = 30 >> sqrt(trace(A'*A)) ans = 5.4772 >> svd(A) ans = 5.4650 0.3660 >> max(svd(A)) ans…

微小回転と角速度

マルチボディダイナミクス〈1〉基礎理論 を参考に。 Amazon CAPTCHA を示す。 上式はすなわち を意味するので、 を示したい。 まず、以下の設定を考える。 上図で、以下が成り立つ。(は単位ベクトル。) ...(1) ...(2) (2)式の両辺に左からuを外積でかけると…

オイラー角といくつかの派生

www.amazon.co.jp マルチボディダイナミクス〈1〉基礎理論 (コンピュータダイナミクスシリーズ) 4.4 回転の基本表現 4.4.2 回転変換 (1)オイラー角 (2) タイト・ブライヤン角 (3) ブライヤント角 を参照座標の定義 オイラー角(Z-X-Zオイラー角) φ→θ→ψと回…

ホロノミック拘束の分類

マルチボディダイナミクス〈1〉基礎理論 (コンピュータダイナミクスシリーズ) より https://www.amazon.co.jp/dp/4339044938

マスクをしている状態を判定する

ここの記事を参考に www.pyimagesearch.comwww.youtube.com

EpoccamでiPadをWebcam代わりにする

Epoccam by Kimoni www.kinoni.comAndroid版のアプリは動かなかった普通にUSB Webcamとして見えるので、例えばPythonからも使える

オイラーの運動方程式

運動座標系における剛体の回転の運動方程式をオイラーの運動方程式という 参考: オイラー方程式 [物理のかぎしっぽ] 加速度座標系と慣性力 [物理のかぎしっぽ]

M5stackの3軸加速度センサからの姿勢推定

ここを参考に watako-lab.comMQTTでのMacとM5stackとのやりとりはここの設定と同じ seinzumtode.hatenadiary.jpロール角rとピッチ角pを推定する。 メインルーチン clear; close all; global h; global dir; myMQTT=mqtt('tcp://127.0.0.1'); mySub = subscri…

Matlabでリアルタイムデータをプロットする(グラフをオートスクロール)

コード clear; close all; xs = []; ts = []; t=0; dt = 0.1; maxn = 50; while(1) ts = horzcat(ts,t); x = sin(t); xs = horzcat(xs,x); if(length(xs)>maxn) ts = ts(2:end); xs = xs(2:end); end t = t+dt; plot(ts,xs); xlim([ts(1),ts(1)+dt*maxn]); y…

正規直交基底の計算

以下のa1,a2,a3の基底で貼られるベクトル空間Vの正規直交基底を計算する。 >> a1 a1 = 1 -1 0 >> a2 a2 = 1 0 -1 >> a3 a3 = 1 2 3まずは手計算で計算する。 グラム=シュミットの正規直交化公式を用いる。 計算すると、 Matlatでも計算できる。orth()関数を…

クォータニオンと回転行列 その2

クォータニオンから回転行列を計算することもできる。 clear; close all; % 回転行列 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% p = [1,2,3]'; o = [0,0,0]'; a_ = [2 -2 3]'; a = a_/norm(a_); a1=a(1); a2=a(2); a3=a(3); theta = pi/4; C = cos(theta); S = sin(th…

クォータニオンと回転行列

ベクトルpをの周りに回転する回転行列は、 ただし、で、とする。クォータニオンを用いてpをθ回転することを考える。 クオータニオンqを以下で定義すると、 でθ回転後のベクトルが求まる。以下では回転行列による回転とクォータニオンによる回転が一致するこ…

チコノフ(Tikhonov)の正則化

以下の本に載っていた事例 プログラミングのための線形代数 https://www.amazon.co.jp/dp/4274065782/ある画像をぼかし行列で変換したを、でもとに復元することを考える clear; close all; %N=225; %Nは奇数 X = im2double(rgb2gray(imread('lena.jpg'))); N…

M5 StackとMatlabの間でMQTT通信する

MosquittoをブローカーサーバーとしてM5 StackとMatlab間で通信する 受け渡すデータはJSON形式にする(Matlabのjsondecode()関数を使うと便利)Mac上でMosquittoを使ってMQTTのブローカーサーバをたてる $ mosquitto M5stackからは3軸の加速度データをJSON…

M5Stick-CとMacでMQTTを用いて通信する

Ui Flow 注意点として、初期化時にWifiのセットアップをしないとm5stickのプログラムが起動しない あとMQTTを使うときは通常の再生ボタンではなくてダウンロードというメニューをクリックする MQTTの送受信にはMosquittoを使う インストール $ brew install …

LU分解、修正コレスキー分解(LDL')、コレスキー分解(LL')

LU分解 →Aが正則行列のとき 修正コレスキー分解 →Aがエルミート行列のとき コレスキー分解 →Aがエルミート行列かつ正定値行列のとき ここで、行列[M_k]は以下で定義する。 →ピボットで割る計算例 clear; A = [10 6 2; 6 5 2; 2 2 1]; b = [1 2 3]'; M1 = [1 …

転置行列の記法

コレスキー分解に関する教科書の記述を読んでいて混乱したのでメモ をみて、 M1行列 • Aの転置行列 • M1 と錯覚したが、正しくは M1行列 • A • M1の転置行列 だった。(小文字のときは前)、(大文字のときは後ろ)という違いに注意する。

Box muller法による正規分布乱数の生成

close all; clear; n=500; r1s=[]; r2s=[]; xs=[]; ts=1:n; for t=1:n r1=rand(); r2=rand(); x = sqrt(-2*log(r1))*sin(2*pi*r2); r1s(end+1)=r1; r2s(end+1)=r2; xs(end+1)=x; end subplot(211) plot(ts,r1s); hold on; plot(ts,r2s); plot(ts,xs); legend…

K indicatorを計算してみる

この論文のK値を計算してみる www.medrxiv.org K値の定義 陽性者数は以下のデータを用いた GitHub - kaz-ogiwara/covid19: 新型コロナウイルス感染症(COVID-19)の国内における状況を厚生労働省の報道発表資料からビジュアルにまとめた。 CSV Total PCR Pos…

非線形自由振動

非線形自由振動 初期条件 とする解析解 clear; close; t=0:0.1:10 omega=1 e=0.1 for a=[1,5,10,11,12] x = a*cos(omega*t)+... e*a^3/(32*omega^2)*(cos(3*omega*t)-cos(omega*t))+... e^2*a^5./(1024*omega^4)*(cos(5*omega*t)-cos(omega*t))+... e^3*a^7/…