ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
ResoLoopCutDistObsrvs.hh
1
9//
10// Copyright (C) 2011-2022 Yokokura, Yuki
11// This program is free software;
12// you can redistribute it and/or modify it under the terms of the FreeBSD License.
13// For details, see the License.txt file.
14
15#ifndef RESOLOOPCUTDISTOBSRVS
16#define RESOLOOPCUTDISTOBSRVS
17
18#include <cassert>
19#include <array>
21
22// ARCS組込み用マクロ
23#ifdef ARCS_IN
24 // ARCSに組み込まれる場合
25 #include "ARCSassert.hh"
26 #include "ARCSeventlog.hh"
27#else
28 // ARCSに組み込まれない場合
29 #define arcs_assert(a) (assert(a))
30 #define PassedLog()
31 #define EventLog(a)
32 #define EventLogVar(a)
33#endif
34
35namespace ARCS { // ARCS名前空間
38template <size_t N>
40 public:
45 ResoLoopCutDistObsrvs(const std::array<struct TwoInertiaParams, N>& Params, const double Bandwidth, const double SmplTime)
46 : RLCDObs()
47 {
48 for(size_t i = 0; i < N; ++i) RLCDObs.at(i).SetParameters(Params.at(i), Bandwidth, SmplTime);
49 PassedLog();
50 }
51
55 : RLCDObs(r.RLCDObs)
56 {
57
58 }
59
64
67 void SetBandwidth(const double Bandwidth){
68 for(size_t i = 0; i < N; ++i) RLCDObs.at(i).SetBandwidth(Bandwidth);
69 }
70
75 void GetCompTorque(const Matrix<1,N>& TorqueRef, const Matrix<1,N>& TorsionTorque, Matrix<1,N>& CompTorque){
76 for(size_t i = 1; i <= N; ++i) CompTorque[i] = RLCDObs.at(i - 1).GetCompTorque(TorqueRef[i], TorsionTorque[i]);
77 }
78
83 Matrix<1,N> GetCompTorque(const Matrix<1,N>& TorqueRef, const Matrix<1,N>& TorsionTorque){
84 Matrix<1,N> ret;
85 GetCompTorque(TorqueRef, TorsionTorque, ret);
86 return ret;
87 }
88
94 void GetPDgainForRLCTTC(const double wt, const double zt, Matrix<1,N>& Kpt, Matrix<1,N>& Kdt){
95 for(size_t i = 1; i <= N; ++i) RLCDObs.at(i - 1).GetPDgainForRLCTTC(wt, zt, Kpt[i], Kdt[i]);
96 }
97
98 private:
100 const ResoLoopCutDistObsrvs& operator=(const ResoLoopCutDistObsrvs&) = delete;
101 std::array<ResoLoopCutDistObsrv, N> RLCDObs;
102};
103}
104
105#endif
106
ARCS イベントログクラス
#define PassedLog()
イベントログ用マクロ(ファイルと行番号のみ記録版)
Definition ARCSeventlog.hh:26
ARCS用ASSERTクラス
共振ループ切断外乱オブザーバ
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44
共振ループ切断外乱オブザーバ(ベクトル版)
Definition ResoLoopCutDistObsrvs.hh:39
ResoLoopCutDistObsrvs(const std::array< struct TwoInertiaParams, N > &Params, const double Bandwidth, const double SmplTime)
コンストラクタ
Definition ResoLoopCutDistObsrvs.hh:45
void GetPDgainForRLCTTC(const double wt, const double zt, Matrix< 1, N > &Kpt, Matrix< 1, N > &Kdt)
RLC-TTC用のP-D制御ゲインを計算する関数(仮設)
Definition ResoLoopCutDistObsrvs.hh:94
Matrix< 1, N > GetCompTorque(const Matrix< 1, N > &TorqueRef, const Matrix< 1, N > &TorsionTorque)
モータ側トルク補償値を取得する関数(戻り値で返す版)
Definition ResoLoopCutDistObsrvs.hh:83
~ResoLoopCutDistObsrvs()
デストラクタ
Definition ResoLoopCutDistObsrvs.hh:61
void SetBandwidth(const double Bandwidth)
推定帯域を設定する関数
Definition ResoLoopCutDistObsrvs.hh:67
ResoLoopCutDistObsrvs(ResoLoopCutDistObsrvs &&r)
ムーブコンストラクタ
Definition ResoLoopCutDistObsrvs.hh:54
void GetCompTorque(const Matrix< 1, N > &TorqueRef, const Matrix< 1, N > &TorsionTorque, Matrix< 1, N > &CompTorque)
モータ側トルク補償値を取得する関数(引数で返す版)
Definition ResoLoopCutDistObsrvs.hh:75