00001 /* 00002 * VRPNTrackerServer.hpp 00003 * 00004 * Created on: Jan 9, 2012 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef VRPNTRACKERSERVER_HPP_ 00009 #define VRPNTRACKERSERVER_HPP_ 00010 00011 #include <telekyb_defines/telekyb_defines.hpp> 00012 #include <telekyb_vrpn/VRPNTrackerServerOptions.hpp> 00013 #include <geometry_msgs/TransformStamped.h> 00014 00015 00016 #include <vrpn_Connection.h> 00017 #include <vrpn_Tracker.h> 00018 00019 #include <telekyb_base/Spaces/R3.hpp> 00020 00021 namespace TELEKYB_NAMESPACE { 00022 00023 class VRPNTrackerServer { 00024 protected: 00025 vrpn_Connection* c; 00026 vrpn_Tracker_Server* vts; 00027 00028 vrpn_float64 position[3]; 00029 vrpn_float64 rotation[4]; 00030 timeval packageTime; 00031 00032 ros::NodeHandle nodeHandle; 00033 ros::Subscriber sub; 00034 VRPNTrackerServerOptions& options; 00035 00036 void transformStampedCallback(const geometry_msgs::TransformStamped::ConstPtr& msg); 00037 void setPose(const Position3D& rosPosition, const Quaternion& rosRotation); 00038 void sendPose(); 00039 00040 public: 00041 VRPNTrackerServer(const std::string& topicName_, vrpn_Connection* c_); 00042 virtual ~VRPNTrackerServer(); 00043 00044 void spin(); 00045 00046 00047 }; 00048 00049 } 00050 00051 #endif /* VRPNTRACKERSERVER_HPP_ */