MATLAB

matlabでセンサフュージョンで姿勢推定

www.youtube.com imufilter www.mathworks.com ahrsfilter www.mathworks.com

ベジェ曲線

clear; close all;clc; syms t; P = [[0 0];[1 2];[2 2];[3 0]]; Q = [[3 0];[4 -2];[5 -2];[6 0]]; plot(P(:,1),P(:,2),'x') hold on; plot(Q(:,1),Q(:,2),'x') f1 = P(1,:)*(1-t)^3+3*(1-t)^2*t*P(2,:)+3*(1-t)*t^2*P(3,:)+t^3*P(4,:); f2 = Q(1,:)*(1-t)^…

filtfiltコマンド(ゼロ位相フィルタ)

www.mathworks.com wform = ecg(500); x = wform' + 0.25*randn(500,1); d = designfilt('lowpassfir', ... 'PassbandFrequency',0.15,'StopbandFrequency',0.2, ... 'PassbandRipple',1,'StopbandAttenuation',60, ... 'DesignMethod','equiripple'); y = f…

離散形式の伝達関数

filtあるいはtfが使える www.mathworks.com clear; close all; clc; num = [0 0 1]; den = [1 1 1/2]; H1 = tf(num,den,0.1) H2 = filt(num,den,0.1) bode(H1); figure; bode(H2); H1 = 1 ------------- z^2 + z + 0.5 Sample time: 1 seconds Discrete-time…

現代制御のメモ

極配置法、最適レギュレータ(LQR)、折返し法→レギュレータを構成する制御器 セットポイントに対して外乱が生じた際に定常偏差をゼロにしたり、セットポイントの変化に追従させる制御をするためにはサーボ系を構成する必要がある。

インパルス応答とステップ応答

インパルス応答の積分がステップ応答になることの確認 clear; close all; clc; G = tf(1,[1 1 1]); im = impulse(G); stp = cumsum(im); %積分→累積和 plot(im); figure; plot(stp); 実際に積分になっている。

複数物体の追跡(GNNとJPDA)

www.youtube.com

IMMフィルタによるトラッキング

www.youtube.comjp.mathworks.comIMMで考慮するモデルは実用的には3から4、多くて10個 モデルの数が多すぎると計算時間が増大し、そもそも性能が落ちる。

非同期センサを用いた姿勢推定

jp.mathworks.com

H∞シンセシスとμシンセシス

www.youtube.comjp.mathworks.com clear; close all; clc; % Physical parameters mb = 300; % kg mw = 60; % kg bs = 1000; % N/m/s ks = 16000 ; % N/m kt = 190000; % N/m % State matrices A = [ 0 1 0 0; [-ks -bs ks bs]/mb ; ... 0 0 0 1; [ks bs -ks…

MatlabとMPU9250を用いた姿勢推定

jp.mathworks.com

センサフュージョン

www.youtube.com 姿勢を知る方法は大きく分けて2つ 1. 磁気センサと加速度センサを使う方法 (欠点1)磁場がSoft iron sourceとHard iron sourceによる影響を受ける (欠点2)重力加速度と物体の移動に伴う加速度を識別できないため、細かい振動を拾って…

LQR制御と極配置

www.youtube.com LQR制御器の構造は極配置と同じ 極配置に比べた利点:多次元(MIMO)システムでは極をどこに置いたほうがよいのかが直感的にわからない。LQRでは重み係数Q(システムの収束の速さに関する重み)とR(入力の節約に関わる重み)という2つにパ…

極配置

www.youtube.com clear; close all; A = [0 1;2 -1]; B = [1; 0]; C = [1 0]; D = 0; sys = ss(A,B,C,D); E = eig(A) P = [-2 -1]; K = place(A,B,P); Acl = A - B*K; Ecl = eig(Acl) syscl = ss(Acl,B,C,D); step(sys); Kdc = dcgain(syscl); Kr = 1/Kdc; s…

ロバスト制御

www.youtube.com

Matlabでゲインスケジューリング

jp.mathworks.com

ベジェ曲線とBスプライン

ベジェ曲線 2つの円弧の接続点P3を必ず通る 制御点P2とP4はP3を通る同一直線状にある→片方を動かすと連動して動く Bスプライン 制御点P3を必ずしも通らない P2とP4は必ずしも同一直線状に位置しない P2とP4を独立して動かせる 第一印象ではBスプラインの方が…

2自由度PIDの効果

jp.mathworks.com外乱を抑制しつつ、オーバーシュートを抑えられる clear; close all; clc; G=tf([1],[1 0.5 0.1]); C1 = pidtune(G,'pid'); %1DOF T1=feedback(G*C1,1); %TF to setpoint S1=feedback(G,C1); %TF to disturbance C2 = pidtune(G,'PID2'); C2…

ウェーブレット変換

www.youtube.comwww.youtube.comwww.youtube.comwww.youtube.comこの論文でウェーブレット解析によるフィルタリングが利用されていた jglobal.jst.go.jp

SignalAnalyzerの使い方

www.youtube.com Chirp信号の生成 t=0:0.001:2; y=chirp(t,0,1,150); % Start @ DC, cross 150Hz at t=1sec 分析結果

PDE Toolbox 音叉のチュートリアル

jp.mathworks.com

PDE Toolboxで構造解析

www.youtube.com clear; close all; clc; model = createpde('structural', 'static-solid'); importGeometry(model, 'piston.stl'); pdegplot(model); figure(); generateMesh(model, 'Hmax', 10, 'Hmin', 0.05); pdemesh(model); figure(); structuralProp…

PDE Toolboxで熱解析

www.youtube.com clear; close all; clc; pdem = createpde('thermal'); gm = multicylinder([20 25 35], 20, 'Void', [1 0 0]); pdem.Geometry = gm; generateMesh(pdem); thermalProperties(pdem, 'cell', 1, 'ThermalConductivity', 40); thermalProperti…

MatlabでPIDチューニング

opts = pidtuneOptions('CrossoverFrequency',32,'PhaseMargin',90); [C, info] = pidtune(P, 'pid', opts) ここでいうクロスオーバー周波数は位相公差角周波数のことでよいのか

D制御器の影響

clear; close all; clc; s = tf('s'); P = 1/(s^2 + 10*s + 20); t = 0:0.01:2; rs = []; sts = []; os = []; ses = []; Kps = []; maxk=1000; for Kp=1:maxk C = pid(0,0,Kp); T = feedback(C*P,1); [y,~]=step(T); info = stepinfo(T); Kps = [Kps Kp]; rs…

I制御器の影響

clear; close all; clc; s = tf('s'); P = 1/(s^2 + 10*s + 20); t = 0:0.01:2; rs = []; sts = []; os = []; ses = []; Kps = []; for Kp=1:1000 C = pid(0,Kp,0); T = feedback(C*P,1); [y,~]=step(T,t); info = stepinfo(T); Kps = [Kps Kp]; rs = [rs in…

P制御器の影響

ctms.engin.umich.edu 以下の表の検証 clear; close all; clc; Kp = 1; Ki = 1; Kd = 1; s = tf('s'); P = 1/(s^2 + 10*s + 20); t = 0:0.01:2; rs = []; sts = []; os = []; ses = []; Kps = []; for Kp=1:1000 C = pid(Kp); T = feedback(C*P,1); [y,~]=st…

2次遅れ系の極、ステップ応答、根軌跡

clear;close all; k_dc = 1; w_n = 10; zeta = 0.2 s = tf('s'); G1 = k_dc*w_n^2/(s^2 + 2*zeta*w_n*s + w_n^2); subplot(3,1,1); pzmap(G1) xlim([-40,0]); pole(G1) subplot(3,1,2); step(G1,2); ylim([0,1.5]); subplot(3,1,3); rlocus(G1); xlim([-40,0…

チコノフ(Tikhonov)の正則化

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

静電気力

clear all; close all; qA=-2; qB=1; rA=[2,1,0]'; rB=[0,1,0]'; r=[rA rB]; e0=8.85*1e-12; k = 1/4/pi/e0; F = k*qA*qB/sqrt(sum((rA-rB).^2)); Fdummy=1;%correction for view F=Fdummy;%The real F is too huge to be shown, so just leave it v=rA-rB; …