00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __ErrorPoseAbility_H_
00031 #define __ErrorPoseAbility_H_
00032
00033
00034 #ifdef HAVE_CONFIG_H
00035 #include <config.h>
00036 #endif
00037
00038 #include <tnt.h>
00039 #include <memory>
00040
00041
00042 #include <DWARF/ViewerControl.h>
00043 #include <ubitrack/PoseSender.h>
00044 #include "CovarianceEllipsoid.h"
00045
00046 namespace DWARF {
00047
00048
00049
00050
00051
00052
00053
00054
00055 class ErrorPoseAbility
00056 {
00057 protected:
00058 std::auto_ptr<PoseSender> m_pSender;
00059 std::string m_sAbilityTarget;
00060 std::string m_sTarget;
00061 ViewerControl_var m_pViewer;
00062
00063 CovarianceEllipsoid m_PosEllipsoid;
00064 CovarianceEllipsoid m_OriEllipsoidX;
00065 CovarianceEllipsoid m_OriEllipsoidY;
00066 CovarianceEllipsoid m_OriEllipsoidZ;
00067
00068 TNT::Array2D<double> CreateCovRot( const double* pVec,
00069 const TNT::Array2D<double>& RotCov );
00070
00071 void UpdateViewerRot( CovarianceEllipsoid& E, const char* pszObjName );
00072
00073 public:
00074 ErrorPoseAbility( const char* pszSource, const char* pszTarget,
00075 DWARF::ActiveServiceDescription_ptr pServiceDescription );
00076
00077 void SetViewer( ViewerControl_ptr pViewer );
00078
00079 void TransformAndSendEvent( const PoseData& Pose );
00080 };
00081
00082 }
00083 #endif //__ErrorPoseAbility_H_