00001 /* 00002 * VRPNTrackerClient.hpp 00003 * 00004 * Created on: Dec 11, 2011 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef VRPNTRACKERCLIENT_HPP_ 00009 #define VRPNTRACKERCLIENT_HPP_ 00010 00011 #include <ros/ros.h> 00012 #include <tf/transform_broadcaster.h> 00013 #include <vrpn_Tracker.h> 00014 00015 #include <telekyb_defines/telekyb_defines.hpp> 00016 00017 #include <geometry_msgs/TransformStamped.h> 00018 #include <geometry_msgs/PoseStamped.h> 00019 00020 #include <telekyb_vrpn/VRPNTrackerClientOptions.hpp> 00021 00022 namespace TELEKYB_NAMESPACE { 00023 00024 // Forward declaration 00025 void VRPN_CALLBACK viconTracker_handleTracker(void* userData, const vrpn_TRACKERCB t ); 00026 00027 class VRPNTrackerClient { 00028 protected: 00029 ros::NodeHandle nodeHandle; 00030 ros::Publisher pub; 00031 geometry_msgs::PoseStamped poseStamped; // message 00032 std::string childFrameID; 00033 00034 VRPNTrackerClientOptions& options; // Singleton. Initialized before! 00035 00036 tf::TransformBroadcaster transBroadcaster; 00037 00038 vrpn_Tracker_Remote* vrpnTracker; 00039 00040 friend void VRPN_CALLBACK viconTracker_handleTracker(void* userData, const vrpn_TRACKERCB t ); 00041 public: 00042 VRPNTrackerClient(const std::string& objectName_); 00043 virtual ~VRPNTrackerClient(); 00044 00045 void spin(); 00046 00047 void handleVRPNTrackerCB(const vrpn_TRACKERCB t); 00048 }; 00049 00050 } /* namespace telekyb */ 00051 #endif /* VRPNTRACKERCLIENT_HPP_ */