parent_and_child_interactive_marker_server.h
Go to the documentation of this file.
1 #ifndef JSK_INTERACTIVE_MARKER_PARENT_AND_CHILD_INTERACTIVE_MARKER_SERVER_H_
2 #define JSK_INTERACTIVE_MARKER_PARENT_AND_CHILD_INTERACTIVE_MARKER_SERVER_H_
3 
5 #include <std_srvs/Empty.h>
6 #include <jsk_interactive_marker/GetTransformableMarkerPose.h>
7 #include <jsk_interactive_marker/SetParentMarker.h>
8 #include <jsk_interactive_marker/RemoveParentMarker.h>
11 #include <boost/shared_ptr.hpp>
12 
13 namespace jsk_interactive_marker
14 {
16  public:
17  ParentMarkerInformation(std::string p_t_n, std::string p_m_n, Eigen::Affine3d r_p)
18  {
19  parent_topic_name = p_t_n;
20  parent_marker_name = p_m_n;
21  relative_pose = r_p;
22  }
24  {
25  }
26  std::string parent_topic_name;
27  std::string parent_marker_name;
28  Eigen::Affine3d relative_pose;
29  };
30 
32  {
33  public:
35  public:
38  void call_func(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback) {if(cb1) cb1(feedback); if(cb2) cb2(feedback);}
39  };
40 
41  ParentAndChildInteractiveMarkerServer(const std::string &topic_ns, const std::string &server_id="", bool spin_thread = false);
42  bool setParentService(jsk_interactive_marker::SetParentMarker::Request &req, jsk_interactive_marker::SetParentMarker::Response &res);
43  void renewPoseWithParent(std::map <std::string, ParentMarkerInformation>::iterator assoc_it_, geometry_msgs::Pose parent_pose, std_msgs::Header parent_header);
44  bool removeParentService(jsk_interactive_marker::RemoveParentMarker::Request &req, jsk_interactive_marker::RemoveParentMarker::Response &res);
45  bool removeParent(std::string child_marker_name);
46  bool registerAssociationItself(std::string parent_marker_name, std::string parent_topic_name, std::string child_marker_name, geometry_msgs::PoseStamped child_pose_stamped);
47  bool registerAssociationWithOtherNode(std::string parent_marker_name, std::string parent_topic_name, std::string child_marker_name, geometry_msgs::PoseStamped child_pose_stamped);
48  bool registerAssociation(std::string parent_marker_name, std::string parent_topic_name, std::string child_marker_name, geometry_msgs::PoseStamped child_pose_stamped, geometry_msgs::PoseStamped parent_pose_stamped);
49  bool getMarkerPose(std::string target_name, geometry_msgs::PoseStamped &pose_stamped);
50  bool getMarkerPoseService(jsk_interactive_marker::GetTransformableMarkerPose::Request &req,jsk_interactive_marker::GetTransformableMarkerPose::Response &res);
51  geometry_msgs::Pose getRelativePose(geometry_msgs::PoseStamped parent_pose_stamped, geometry_msgs::PoseStamped child_pose_stamped);
52  void selfFeedbackCb(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback);
53  void parentUpdateCb(const visualization_msgs::InteractiveMarkerUpdateConstPtr &update, std::string parent_topic_name);
54  void parentFeedbackCb(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback, std::string parent_topic_name);
55  // overwrite public functions
56  void applyChanges(); // selfUpdateDb
57  bool setCallback(const std::string &name, FeedbackCallback feedback_cb, uint8_t feedback_type=DEFAULT_FEEDBACK_CB);
58  void insert(const visualization_msgs::InteractiveMarker &int_marker);
59  void insert(const visualization_msgs::InteractiveMarker &int_marker, FeedbackCallback feedback_cb, uint8_t feedback_type=DEFAULT_FEEDBACK_CB);
60  bool erase(const std::string &name);
62 
67  std::string topic_server_name_;
68  // map of association including self association
69  std::map <std::string, ParentMarkerInformation> association_list_;
70  // map of subscriber
71  // access: parent server -> subscriber
72  std::map <std::string, ros::Subscriber> parent_update_subscribers_; // self association is not included
73  std::map <std::string, ros::Subscriber> parent_feedback_subscribers_; // self association is not included
74  std::map <std::string, std::shared_ptr <FeedbackSynthesizer> > callback_map_;
75  std::map <std::string, int> parent_subscriber_nums_;
76  };
77 }
78 
79 #endif
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::removeParentService
bool removeParentService(jsk_interactive_marker::RemoveParentMarker::Request &req, jsk_interactive_marker::RemoveParentMarker::Response &res)
Definition: parent_and_child_interactive_marker_server.cpp:94
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::FeedbackSynthesizer::cb1
FeedbackCallback cb1
Definition: parent_and_child_interactive_marker_server.h:37
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::remove_parent_srv_
ros::ServiceServer remove_parent_srv_
Definition: parent_and_child_interactive_marker_server.h:64
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::erase
bool erase(const std::string &name)
Definition: parent_and_child_interactive_marker_server.cpp:268
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::insert
void insert(const visualization_msgs::InteractiveMarker &int_marker)
Definition: parent_and_child_interactive_marker_server.cpp:256
jsk_interactive_marker::ParentMarkerInformation::parent_marker_name
std::string parent_marker_name
Definition: parent_and_child_interactive_marker_server.h:27
jsk_interactive_marker::ParentMarkerInformation
Definition: parent_and_child_interactive_marker_server.h:15
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::setCallback
bool setCallback(const std::string &name, FeedbackCallback feedback_cb, uint8_t feedback_type=DEFAULT_FEEDBACK_CB)
Definition: parent_and_child_interactive_marker_server.cpp:250
jsk_interactive_marker::ParentMarkerInformation::ParentMarkerInformation
ParentMarkerInformation()
Definition: parent_and_child_interactive_marker_server.h:23
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::parent_subscriber_nums_
std::map< std::string, int > parent_subscriber_nums_
Definition: parent_and_child_interactive_marker_server.h:75
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::topic_server_name_
std::string topic_server_name_
Definition: parent_and_child_interactive_marker_server.h:67
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::parentFeedbackCb
void parentFeedbackCb(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback, std::string parent_topic_name)
Definition: parent_and_child_interactive_marker_server.cpp:151
jsk_interactive_marker
Definition: camera_info_publisher.h:48
jsk_interactive_marker::ParentMarkerInformation::parent_topic_name
std::string parent_topic_name
Definition: parent_and_child_interactive_marker_server.h:26
jsk_interactive_marker::ParentMarkerInformation::relative_pose
Eigen::Affine3d relative_pose
Definition: parent_and_child_interactive_marker_server.h:28
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::n_
ros::NodeHandle n_
Definition: parent_and_child_interactive_marker_server.h:61
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::parentUpdateCb
void parentUpdateCb(const visualization_msgs::InteractiveMarkerUpdateConstPtr &update, std::string parent_topic_name)
Definition: parent_and_child_interactive_marker_server.cpp:133
ros::ServiceServer
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::getMarkerPose
bool getMarkerPose(std::string target_name, geometry_msgs::PoseStamped &pose_stamped)
Definition: parent_and_child_interactive_marker_server.cpp:122
interactive_markers::InteractiveMarkerServer::DEFAULT_FEEDBACK_CB
static const uint8_t DEFAULT_FEEDBACK_CB
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::applyChanges
void applyChanges()
Definition: parent_and_child_interactive_marker_server.cpp:220
interactive_markers::InteractiveMarkerServer::FeedbackCallback
boost::function< void(const FeedbackConstPtr &) > FeedbackCallback
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::FeedbackSynthesizer
Definition: parent_and_child_interactive_marker_server.h:34
eigen_msg.h
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer
Definition: parent_and_child_interactive_marker_server.h:31
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::callback_map_
std::map< std::string, std::shared_ptr< FeedbackSynthesizer > > callback_map_
Definition: parent_and_child_interactive_marker_server.h:74
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::tf_listener_
tf::TransformListener tf_listener_
Definition: parent_and_child_interactive_marker_server.h:66
jsk_interactive_marker::ParentMarkerInformation::ParentMarkerInformation
ParentMarkerInformation(std::string p_t_n, std::string p_m_n, Eigen::Affine3d r_p)
Definition: parent_and_child_interactive_marker_server.h:17
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::selfFeedbackCb
void selfFeedbackCb(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Definition: parent_and_child_interactive_marker_server.cpp:177
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::registerAssociation
bool registerAssociation(std::string parent_marker_name, std::string parent_topic_name, std::string child_marker_name, geometry_msgs::PoseStamped child_pose_stamped, geometry_msgs::PoseStamped parent_pose_stamped)
Definition: parent_and_child_interactive_marker_server.cpp:75
interactive_markers::InteractiveMarkerServer
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::FeedbackSynthesizer::FeedbackSynthesizer
FeedbackSynthesizer(FeedbackCallback c1, FeedbackCallback c2)
Definition: parent_and_child_interactive_marker_server.h:36
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::removeParent
bool removeParent(std::string child_marker_name)
Definition: parent_and_child_interactive_marker_server.cpp:98
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::get_marker_pose_srv_
ros::ServiceServer get_marker_pose_srv_
Definition: parent_and_child_interactive_marker_server.h:65
transform_listener.h
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::set_parent_srv_
ros::ServiceServer set_parent_srv_
Definition: parent_and_child_interactive_marker_server.h:63
interactive_marker_server.h
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::renewPoseWithParent
void renewPoseWithParent(std::map< std::string, ParentMarkerInformation >::iterator assoc_it_, geometry_msgs::Pose parent_pose, std_msgs::Header parent_header)
Definition: parent_and_child_interactive_marker_server.cpp:168
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::FeedbackSynthesizer::call_func
void call_func(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Definition: parent_and_child_interactive_marker_server.h:38
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::ParentAndChildInteractiveMarkerServer
ParentAndChildInteractiveMarkerServer(const std::string &topic_ns, const std::string &server_id="", bool spin_thread=false)
Definition: parent_and_child_interactive_marker_server.cpp:5
tf::TransformListener
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::getMarkerPoseService
bool getMarkerPoseService(jsk_interactive_marker::GetTransformableMarkerPose::Request &req, jsk_interactive_marker::GetTransformableMarkerPose::Response &res)
Definition: parent_and_child_interactive_marker_server.cpp:112
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::parent_feedback_subscribers_
std::map< std::string, ros::Subscriber > parent_feedback_subscribers_
Definition: parent_and_child_interactive_marker_server.h:73
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::association_list_
std::map< std::string, ParentMarkerInformation > association_list_
Definition: parent_and_child_interactive_marker_server.h:69
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::getRelativePose
geometry_msgs::Pose getRelativePose(geometry_msgs::PoseStamped parent_pose_stamped, geometry_msgs::PoseStamped child_pose_stamped)
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::registerAssociationWithOtherNode
bool registerAssociationWithOtherNode(std::string parent_marker_name, std::string parent_topic_name, std::string child_marker_name, geometry_msgs::PoseStamped child_pose_stamped)
Definition: parent_and_child_interactive_marker_server.cpp:62
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::parent_update_subscribers_
std::map< std::string, ros::Subscriber > parent_update_subscribers_
Definition: parent_and_child_interactive_marker_server.h:72
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::registerAssociationItself
bool registerAssociationItself(std::string parent_marker_name, std::string parent_topic_name, std::string child_marker_name, geometry_msgs::PoseStamped child_pose_stamped)
Definition: parent_and_child_interactive_marker_server.cpp:56
ros::NodeHandle
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::setParentService
bool setParentService(jsk_interactive_marker::SetParentMarker::Request &req, jsk_interactive_marker::SetParentMarker::Response &res)
Definition: parent_and_child_interactive_marker_server.cpp:15
jsk_interactive_marker::ParentAndChildInteractiveMarkerServer::FeedbackSynthesizer::cb2
FeedbackCallback cb2
Definition: parent_and_child_interactive_marker_server.h:37


jsk_interactive_marker
Author(s): furuta
autogenerated on Sat Jun 1 2024 02:47:23