interactive_roi_selection.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019 Roboception GmbH
3  *
4  * Author: Carlos Xavier Garcia Briones
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright notice,
10  * this list of conditions and the following disclaimer.
11  *
12  * 2. Redistributions in binary form must reproduce the above copyright notice,
13  * this list of conditions and the following disclaimer in the documentation
14  * and/or other materials provided with the distribution.
15  *
16  * 3. Neither the name of the copyright holder nor the names of its contributors
17  * may be used to endorse or promote products derived from this software without
18  * specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef INTERACTIVE_ROI_SELECTION_H
34 #define INTERACTIVE_ROI_SELECTION_H
35 
36 #include <ros/ros.h>
37 #include <tf/tf.h>
38 
40 #include <rc_pick_client/RegionOfInterest.h>
41 
42 namespace rc_roi_manager_gui
43 {
45 {
46 public:
51 
52  virtual ~InteractiveRoiSelection();
53 
59  bool setInteractiveRoi(const rc_pick_client::RegionOfInterest& roi);
60 
66  bool getInteractiveRoi(rc_pick_client::RegionOfInterest& roi);
67 
68 private:
70  tf::Vector3 center_position_;
72  tf::Vector3 dimensions_;
73  rc_pick_client::RegionOfInterest interactive_roi_;
74  std::shared_ptr<ros::NodeHandle> nh_;
75 
82  void computeVectorRotation(const tf::Vector3& v, const tf::Quaternion& q, tf::Vector3& rot_v);
83 
88  void processRoiPoseFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr& feedback);
89 
94  void processRoiSizeFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr& feedback);
95 
100  void processSphereSizeFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr& feedback);
101 
105  void updateCenterMarker();
106 
113  visualization_msgs::Marker makeMarker(tf::Vector3 box_dimensions, bool is_center);
114 
120  void makeBoxControls(visualization_msgs::InteractiveMarker& interactive_marker, bool is_center);
121 
127  void makeSphereControls(visualization_msgs::InteractiveMarker& interactive_marker, bool is_center);
128 
138  void makeInteractiveMarker(std::string int_marker_name, std::string int_marker_description,
139  const tf::Vector3& position, bool is_center, tf::Vector3 box_dimensions,
140  tf::Quaternion box_orientation);
141 };
142 } // namespace rc_roi_manager_gui
143 #endif // INTERACTIVE_ROI_SELECTION_H
rc_roi_manager_gui::InteractiveRoiSelection::setInteractiveRoi
bool setInteractiveRoi(const rc_pick_client::RegionOfInterest &roi)
Sets a new region of interest in the server.
Definition: interactive_roi_selection.cc:345
rc_roi_manager_gui::InteractiveRoiSelection::interactive_roi_
rc_pick_client::RegionOfInterest interactive_roi_
Definition: interactive_roi_selection.h:73
rc_roi_manager_gui::InteractiveRoiSelection::~InteractiveRoiSelection
virtual ~InteractiveRoiSelection()
Definition: interactive_roi_selection.cc:46
boost::shared_ptr< interactive_markers::InteractiveMarkerServer >
rc_roi_manager_gui::InteractiveRoiSelection::InteractiveRoiSelection
InteractiveRoiSelection()
Constructor.
Definition: interactive_roi_selection.cc:39
ros.h
rc_roi_manager_gui::InteractiveRoiSelection::center_orientation_
tf::Quaternion center_orientation_
Definition: interactive_roi_selection.h:71
rc_roi_manager_gui::InteractiveRoiSelection::updateCenterMarker
void updateCenterMarker()
Update the center interactive marker in rviz.
Definition: interactive_roi_selection.cc:138
rc_roi_manager_gui::InteractiveRoiSelection::getInteractiveRoi
bool getInteractiveRoi(rc_pick_client::RegionOfInterest &roi)
Provides the region of interest from the server.
Definition: interactive_roi_selection.cc:384
rc_roi_manager_gui::InteractiveRoiSelection::processSphereSizeFeedback
void processSphereSizeFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Process changes on the region of interest's size.
Definition: interactive_roi_selection.cc:128
rc_roi_manager_gui::InteractiveRoiSelection::processRoiPoseFeedback
void processRoiPoseFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Process changes on the position and rotation of the region of interest.
Definition: interactive_roi_selection.cc:59
rc_roi_manager_gui::InteractiveRoiSelection::nh_
std::shared_ptr< ros::NodeHandle > nh_
Definition: interactive_roi_selection.h:74
rc_roi_manager_gui::InteractiveRoiSelection::makeSphereControls
void makeSphereControls(visualization_msgs::InteractiveMarker &interactive_marker, bool is_center)
Generate controls of a sphere interactive marker.
Definition: interactive_roi_selection.cc:193
rc_roi_manager_gui::InteractiveRoiSelection::dimensions_
tf::Vector3 dimensions_
Definition: interactive_roi_selection.h:72
rc_roi_manager_gui::InteractiveRoiSelection::server_
boost::shared_ptr< interactive_markers::InteractiveMarkerServer > server_
Definition: interactive_roi_selection.h:69
rc_roi_manager_gui::InteractiveRoiSelection::makeInteractiveMarker
void makeInteractiveMarker(std::string int_marker_name, std::string int_marker_description, const tf::Vector3 &position, bool is_center, tf::Vector3 box_dimensions, tf::Quaternion box_orientation)
Generate an interactive marker.
Definition: interactive_roi_selection.cc:292
rc_roi_manager_gui::InteractiveRoiSelection::processRoiSizeFeedback
void processRoiSizeFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Process changes on the region of interest's size.
Definition: interactive_roi_selection.cc:145
tf.h
rc_roi_manager_gui
Definition: interactive_roi_selection.cc:37
interactive_marker_server.h
rc_roi_manager_gui::InteractiveRoiSelection::center_position_
tf::Vector3 center_position_
Definition: interactive_roi_selection.h:70
rc_roi_manager_gui::InteractiveRoiSelection
Definition: interactive_roi_selection.h:44
rc_roi_manager_gui::InteractiveRoiSelection::makeBoxControls
void makeBoxControls(visualization_msgs::InteractiveMarker &interactive_marker, bool is_center)
Generate controls of a box interactive marker.
Definition: interactive_roi_selection.cc:241
rc_roi_manager_gui::InteractiveRoiSelection::makeMarker
visualization_msgs::Marker makeMarker(tf::Vector3 box_dimensions, bool is_center)
Generate a marker.
Definition: interactive_roi_selection.cc:162
tf::Quaternion
rc_roi_manager_gui::InteractiveRoiSelection::computeVectorRotation
void computeVectorRotation(const tf::Vector3 &v, const tf::Quaternion &q, tf::Vector3 &rot_v)
Compute the rotation of a vector by a quaternion.
Definition: interactive_roi_selection.cc:52


rc_roi_manager_gui
Author(s): Carlos Xavier Garcia Briones
autogenerated on Thu Feb 3 2022 03:29:05