00001 /* 00002 * StandardInertiaMatrixEstimator.hpp 00003 * 00004 * Created on: Jul 28, 2012 00005 * Author: rspica 00006 */ 00007 00008 #ifndef STANDARDINERTIAMATRIXESTIMATION_HPP_ 00009 #define STANDARDINERTIAMATRIXESTIMATION_HPP_ 00010 00011 #include <telekyb_defines/telekyb_defines.hpp> 00012 #include <telekyb_base/Options.hpp> 00013 #include <telekyb_base/Filter/IIRFilter.hpp> 00014 00015 // Import Interface 00016 #include <tk_param_estimator/InertiaMatrixEstimator.hpp> 00017 00018 namespace TELEKYB_NAMESPACE { 00019 00020 class StandardInertiaMatrixEstimOptions : public OptionContainer { 00021 public: 00022 00023 Option<Eigen::Vector3d>* tInitialInertiaMatrix; 00024 00025 Option<Eigen::Vector3d>* tAFiltCoeff;/*a*/ 00026 Option<Eigen::Vector3d>* tKappaZeroGain; 00027 Option<Eigen::Vector3d>* tLambdaZeroGain; 00028 Option<double>* tSampleTime; 00029 00030 Option<Eigen::Vector3d>* tMaxInertia; 00031 Option<Eigen::Vector3d>* tMinInertia; 00032 00033 Option<bool>* tPublishInertia; 00034 Option<std::string>* tInertiaTopic; 00035 00036 StandardInertiaMatrixEstimOptions(); 00037 }; 00038 00039 class StandardInertiaMatrixEstimator : public InertiaMatrixEstimator { 00040 private: 00041 StandardInertiaMatrixEstimOptions options; 00042 00043 Eigen::Vector3d estInvInertia; 00044 Eigen::Vector3d estGain; 00045 00046 Eigen::Vector3d integInitialInvInertia; 00047 Eigen::Vector3d integInitialGain; 00048 00049 // Filters 00050 IIRFilter* torqueFilter[3]; 00051 IIRFilter* angVelFilter[3]; 00052 00053 // Integrators 00054 IIRFilter* estInvInertiaIntegrator[3]; 00055 IIRFilter* estGainIntegrator[3]; 00056 00057 ros::NodeHandle nodeHandle; 00058 ros::Publisher inertiaPub; 00059 00060 public: 00061 StandardInertiaMatrixEstimator(); 00062 virtual ~StandardInertiaMatrixEstimator(); 00063 00064 00065 void initialize(); 00066 void destroy(); 00067 std::string getName() const; 00068 00069 void run(const InertiaMatrixEstimInput& input,InertiaMatrixEstimOutput& output); 00070 00071 Eigen::Matrix3d getInitialInertiaMatrix() const; 00072 }; 00073 00074 } 00075 00076 #endif /* STANDARDINERTIAMATRIXESTIMATION_HPP_ */