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; // 蟶ッ蝓溘r豎コ繧√k菫よ焚 k1 00027 double k2; // 蟶ッ蝓溘r豎コ繧√k菫よ焚 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] 蟶ッ蝓滂シ勲ass�シ媼kg] or [kgm^2] 諷」諤ァ 00040 // TrqConst�シ媼N/A] or [Nm/A] 繝医Ν繧ッ螳壽焚�シ郡mplTime�シ媼s] 蛻カ蠕。蜻ィ譛� 00041 ~DistObsrv2(); // 繝�繧ケ繝医Λ繧ッ繧ソ 00042 double GetForce(double Iref, double Xres); // 謗ィ螳壼、紋ケア縺ョ蜿門セ� Iref�シ媼A] 髮サ豬∝盾辣ァ蛟、�シ傾res�シ媼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