15#ifndef TWOINERTIASTATEFEEDBACK
16#define TWOINERTIASTATEFEEDBACK
31 #define arcs_assert(a) (assert(a))
34 #define EventLogVar(a)
50 const double Pole1,
const double Pole2,
const double Pole3,
51 const double Bandwidth,
const double SmplTime
63 SOB(Params, Bandwidth, SmplTime)
65 CalcStateFeedbackGain(Pole1, Pole2, Pole3);
78 const double Pole1,
const std::complex<double>& Pole2,
const std::complex<double>& Pole3,
79 const double Bandwidth,
const double SmplTime
91 SOB(Params, Bandwidth, SmplTime)
93 CalcStateFeedbackGain(Pole1, Pole2, Pole3);
110 SOB(std::move(r.SOB))
147 void CalcStateFeedbackGain(
double p1,
double p2,
double p3){
148 const double fl = -(Jm*Rg*(Dl*Dl*Dl - 2.0*Dl*Jl*Ks + Dl*Dl*Jl*p1 + Dl*Dl*Jl*p2 + Dl*Dl*Jl*p3 - Jl*Jl*Ks*p1 - Jl*Jl*Ks*p2 - Jl*Jl*Ks*p3 + Dl*Jl*Jl*p1*p2 + Dl*Jl*Jl*p1*p3 + Dl*Jl*Jl*p2*p3 + Jl*Jl*Jl*p1*p2*p3))/(Jl*Jl*Ks*Kt);
149 const double fs = (Jm*Rg*(p1*p2 + p1*p3 + p2*p3 - Ks/Jl + Dl*Dl/(Jl*Jl) - Ks/(Jm*Rg*Rg) + (Dl*p1)/Jl + (Dl*p2)/Jl + (Dl*p3)/Jl))/Kt;
150 const double fm = -(Dl*Jm + Dm*Jl + Jl*Jm*p1 + Jl*Jm*p2 + Jl*Jm*p3)/(Jl*Kt);
158 void CalcStateFeedbackGain(
double p1,
const std::complex<double>& p2,
const std::complex<double>& p3){
160 const std::complex<double> fl = -(Jm*Rg*(Dl*Dl*Dl - 2.0*Dl*Jl*Ks + Dl*Dl*Jl*p1 + Dl*Dl*Jl*p2 + Dl*Dl*Jl*p3 - Jl*Jl*Ks*p1 - Jl*Jl*Ks*p2 - Jl*Jl*Ks*p3 + Dl*Jl*Jl*p1*p2 + Dl*Jl*Jl*p1*p3 + Dl*Jl*Jl*p2*p3 + Jl*Jl*Jl*p1*p2*p3))/(Jl*Jl*Ks*Kt);
161 const std::complex<double> fs = (Jm*Rg*(p1*p2 + p1*p3 + p2*p3 - Ks/Jl + Dl*Dl/(Jl*Jl) - Ks/(Jm*Rg*Rg) + (Dl*p1)/Jl + (Dl*p2)/Jl + (Dl*p3)/Jl))/Kt;
162 const std::complex<double> fm = -(Dl*Jm + Dm*Jl + Jl*Jm*p1 + Jl*Jm*p2 + Jl*Jm*p3)/(Jl*Kt);
163 f.
Set(fl.real(), fs.real(), fm.real());
#define PassedLog()
イベントログ用マクロ(ファイルと行番号のみ記録版)
Definition ARCSeventlog.hh:26
#define arcs_assert(a)
ARCS用assertマクロ a : assert条件
Definition ARCSassert.hh:17
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44
constexpr void Set(const T1 &u1, const T2 &... u2)
行列要素に値を設定する関数
Definition Matrix.hh:385
2慣性共振系のパラメータ構造体(Ds無し版)
Definition TwoInertiaParamDef.hh:18
2慣性共振系の状態フィードバックレギュレータ
Definition TwoInertiaStateFeedback.hh:41
TwoInertiaStateFeedback(const struct TwoInertiaParamDef &Params, const double Pole1, const std::complex< double > &Pole2, const std::complex< double > &Pole3, const double Bandwidth, const double SmplTime)
コンストラクタ(実数極版)
Definition TwoInertiaStateFeedback.hh:76
double GetFeedbackCurrent(const double Current, const double Velocity)
状態フィードバックレギュレータの補償電流を取得する関数
Definition TwoInertiaStateFeedback.hh:123
TwoInertiaStateFeedback(TwoInertiaStateFeedback &&r)
ムーブコンストラクタ
Definition TwoInertiaStateFeedback.hh:99
~TwoInertiaStateFeedback()
デストラクタ
Definition TwoInertiaStateFeedback.hh:116
TwoInertiaStateFeedback(const struct TwoInertiaParamDef &Params, const double Pole1, const double Pole2, const double Pole3, const double Bandwidth, const double SmplTime)
コンストラクタ(実数極版)
Definition TwoInertiaStateFeedback.hh:48
2慣性系状態オブザーバクラス
Definition TwoInertiaStateObsrv.hh:40
void GetEstimatedVect(const double Current, const double Velocity, Matrix< 1, 3 > &xhat)
推定状態ベクトルを取得する関数(普通版)
Definition TwoInertiaStateObsrv.hh:98