lib/DistObsrv2.hh
00001 // 外乱オブザーバクラス
00002 // 2011/02/09 Yuki YOKOKURA
00003 //
00004 // 2次形 外乱オブザーバ
00005 //
00006 // 詳細は以下の論文を参照のこと。
00007 // K. Ohnishi, M. Shibata, and T. Murakami : "Motion Control for Advanced Mechatronics"
00008 // IEEE/ASME Trans. on Mechatronics, Vol. 1, No. 1, Mar. 1996.
00009 //
00010 // Copyright (C) 2011 Yuki YOKOKURA
00011 // This program is free software;
00012 // you can redistribute it and/or modify it under the terms of the GNU General Public License
00013 // as published by the Free Software Foundation; either version 3 of the License, or any later version.
00014 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
00015 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00016 // See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
00017 // Besides, you can negotiate about other options of licenses instead of GPL.
00018 // If you would like to get other licenses, please contact us<yuki@katsura.sd.keio.ac.jp>.
00019 
00020 #ifndef DISTOBSRV2
00021 #define DISTOBSRV2
00022 
00023 namespace ARCS {        // ARCS名前空間
00024         class DistObsrv2 {
00025                 private:
00026                         double k1;              // 帯域を決める係数 k1
00027                         double k2;              // 帯域を決める係数 k2
00028                         double Mn;              // [kg] or [kgm^2]      慣性
00029                         double Kfn;             // [N/A] or [Nm/A]      推力 or トルク定数
00030                         double Ts;              // [s]                          制御周期
00031                         double z1Z1;    //                                      状態変数1
00032                         double z2Z1;    //                                      状態変数2
00033                         double IrefZ1;  // [A]                          状態変数 電流参照値
00034                         double XresZ1;  // [m] or [rad]         状態変数 位置応答値
00035                 
00036                 public:
00037                         DistObsrv2(double gdis, double Mass, double TrqConst, double SmplTime);
00038                         // コンストラクタ
00039                         // gdis;[rad/s] 帯域,Mass;[kg] or [kgm^2] 慣性
00040                         // TrqConst;[N/A] or [Nm/A] トルク定数,SmplTime;[s] 制御周期
00041                         ~DistObsrv2();                                                          // デストラクタ
00042                         double GetForce(double Iref, double Xres);      // 推定外乱の取得 Iref;[A] 電流参照値,Xres;[m] or [rad] 位置応答値
00043                         void SetBandwidth(double gdis);                         // 帯域の再設定 gdis;[rad/s] 帯域
00044                         void SetInertia(double Mass);                           // 慣性の再設定 Mass;[kg] or [kgm^2] 慣性
00045                         void SetTrqConst(double TrqConst);                      // 推力 or トルク定数の再設定 TrqConst;[N/A] or [Nm/A] 推力 or トルク定数
00046                         void SetSmplTime(double SmplTime);                      // 制御周期の再設定 SmplTime;[s] 制御周期
00047                         void ClearStateVars(void);                                      // すべての状態変数のリセット
00048         };
00049 }
00050 
00051 #endif
00052 
00053 
00054 
 All Classes Files