vrpn_client_ros.h
Go to the documentation of this file.
1 
32 #ifndef VRPN_CLIENT_ROS_VRPN_CLIENT_ROS_H
33 #define VRPN_CLIENT_ROS_VRPN_CLIENT_ROS_H
34 
36 
37 #include "ros/ros.h"
38 #include "geometry_msgs/PoseStamped.h"
39 #include "geometry_msgs/TwistStamped.h"
40 #include "geometry_msgs/AccelStamped.h"
41 #include "geometry_msgs/TransformStamped.h"
42 
43 #include <vrpn_Tracker.h>
44 #include <vrpn_Connection.h>
45 #include <map>
46 #include <string>
47 #include <unordered_map>
48 
49 namespace vrpn_client_ros
50 {
51 
52  typedef std::shared_ptr<vrpn_Connection> ConnectionPtr;
53  typedef std::shared_ptr<vrpn_Tracker_Remote> TrackerRemotePtr;
54 
56  {
57  public:
58 
59  typedef std::shared_ptr<VrpnTrackerRos> Ptr;
64  VrpnTrackerRos(std::string tracker_name, ConnectionPtr connection, ros::NodeHandle nh);
65 
70  VrpnTrackerRos(std::string tracker_name, std::string host, ros::NodeHandle nh);
71 
73 
77  void mainloop();
78 
79  private:
80  TrackerRemotePtr tracker_remote_;
81  std::vector<ros::Publisher> pose_pubs_, twist_pubs_, accel_pubs_;
84  std::string tracker_name;
85 
87 
88  geometry_msgs::PoseStamped pose_msg_;
89  geometry_msgs::TwistStamped twist_msg_;
90  geometry_msgs::AccelStamped accel_msg_;
91  geometry_msgs::TransformStamped transform_stamped_;
92 
93  void init(std::string tracker_name, ros::NodeHandle nh, bool create_mainloop_timer);
94 
95  static void VRPN_CALLBACK handle_pose(void *userData, const vrpn_TRACKERCB tracker_pose);
96 
97  static void VRPN_CALLBACK handle_twist(void *userData, const vrpn_TRACKERVELCB tracker_twist);
98 
99  static void VRPN_CALLBACK handle_accel(void *userData, const vrpn_TRACKERACCCB tracker_accel);
100  };
101 
103  {
104  public:
105 
106  typedef std::shared_ptr<VrpnClientRos> Ptr;
107  typedef std::unordered_map<std::string, VrpnTrackerRos::Ptr> TrackerMap;
108 
113 
114  static std::string getHostStringFromParams(ros::NodeHandle host_nh);
115 
119  void mainloop();
120 
124  void updateTrackers();
125 
126  private:
127  std::string host_;
129 
133  ConnectionPtr connection_;
134 
138  TrackerMap trackers_;
139 
141  };
142 } // namespace vrpn_client_ros
143 
144 #endif // VRPN_CLIENT_ROS_VRPN_CLIENT_ROS_H
geometry_msgs::AccelStamped accel_msg_
geometry_msgs::PoseStamped pose_msg_
std::vector< ros::Publisher > twist_pubs_
std::shared_ptr< VrpnClientRos > Ptr
VrpnTrackerRos(std::string tracker_name, ConnectionPtr connection, ros::NodeHandle nh)
static void VRPN_CALLBACK handle_twist(void *userData, const vrpn_TRACKERVELCB tracker_twist)
std::vector< ros::Publisher > pose_pubs_
void init(std::string tracker_name, ros::NodeHandle nh, bool create_mainloop_timer)
std::shared_ptr< VrpnTrackerRos > Ptr
std::unordered_map< std::string, VrpnTrackerRos::Ptr > TrackerMap
std::shared_ptr< vrpn_Tracker_Remote > TrackerRemotePtr
geometry_msgs::TwistStamped twist_msg_
std::shared_ptr< vrpn_Connection > ConnectionPtr
std::vector< ros::Publisher > accel_pubs_
geometry_msgs::TransformStamped transform_stamped_
static void VRPN_CALLBACK handle_accel(void *userData, const vrpn_TRACKERACCCB tracker_accel)
static void VRPN_CALLBACK handle_pose(void *userData, const vrpn_TRACKERCB tracker_pose)


vrpn_client_ros
Author(s): Paul Bovbel
autogenerated on Sat Jun 8 2019 04:44:59