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:
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
bool getInteractiveRoi(rc_pick_client::RegionOfInterest &roi)
Provides the region of interest from the server.
void makeSphereControls(visualization_msgs::InteractiveMarker &interactive_marker, bool is_center)
Generate controls of a sphere interactive marker.
void updateCenterMarker()
Update the center interactive marker in rviz.
void processSphereSizeFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Process changes on the region of interest&#39;s size.
void computeVectorRotation(const tf::Vector3 &v, const tf::Quaternion &q, tf::Vector3 &rot_v)
Compute the rotation of a vector by a quaternion.
boost::shared_ptr< interactive_markers::InteractiveMarkerServer > server_
void processRoiPoseFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Process changes on the position and rotation of the region of interest.
bool setInteractiveRoi(const rc_pick_client::RegionOfInterest &roi)
Sets a new region of interest in the server.
void makeBoxControls(visualization_msgs::InteractiveMarker &interactive_marker, bool is_center)
Generate controls of a box interactive marker.
visualization_msgs::Marker makeMarker(tf::Vector3 box_dimensions, bool is_center)
Generate a marker.
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.
rc_pick_client::RegionOfInterest interactive_roi_
void processRoiSizeFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
Process changes on the region of interest&#39;s size.


rc_roi_manager_gui
Author(s): Carlos Xavier Garcia Briones
autogenerated on Sat Feb 13 2021 03:42:01