bounding_box_display.cpp
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2013, Ryohei Ueda and JSK Lab
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of the JSK Lab nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
36 #include "bounding_box_display.h"
37 #include <jsk_topic_tools/color_utils.h>
38 
39 namespace jsk_rviz_plugins
40 {
41 
43  {
45  "coloring", "Flat color",
46  "coloring method",
47  this, SLOT(updateColoring()));
48  coloring_property_->addOption("Flat color", 0);
49  coloring_property_->addOption("Label", 1);
50  coloring_property_->addOption("Value", 2);
51 
53  "color", QColor(25, 255, 0),
54  "color to draw the bounding boxes",
55  this, SLOT(updateColor()));
57  "alpha", 0.8,
58  "alpha value to draw the bounding boxes",
59  this, SLOT(updateAlpha()));
61  "only edge", false,
62  "show only the edges of the boxes",
63  this, SLOT(updateOnlyEdge()));
65  "line width", 0.005,
66  "line width of the edges",
67  this, SLOT(updateLineWidth()));
69  "show coords", false,
70  "show coordinate of bounding box",
71  this, SLOT(updateShowCoords()));
72  }
73 
75  {
76  delete color_property_;
77  delete alpha_property_;
78  delete only_edge_property_;
79  delete coloring_property_;
80  delete show_coords_property_;
81  }
82 
84  {
86  scene_node_ = scene_manager_->getRootSceneNode()->createChildSceneNode();
87 
88  updateColor();
89  updateAlpha();
94  }
95 
97  {
99  if (latest_msg_) {
101  }
102  }
103 
105  {
107  if (latest_msg_) {
109  }
110  }
111 
113  {
115  if (latest_msg_) {
117  }
118  }
119 
121  {
123  if (only_edge_) {
125  }
126  else {
128  }
129  if (latest_msg_) {
131  }
132  }
133 
135  {
137  coloring_method_ = "flat";
139  }
140  else if (coloring_property_->getOptionInt() == 1) {
141  coloring_method_ = "label";
143  }
144  else if (coloring_property_->getOptionInt() == 2) {
145  coloring_method_ = "value";
147  }
148 
149  if (latest_msg_) {
151  }
152  }
153 
155  {
157  // Immediately apply show_coords attribute
158  if (!show_coords_) {
159  hideCoords();
160  }
161  else if (latest_msg_) {
163  }
164  }
165 
167  {
168  MFDClass::reset();
169  shapes_.clear();
170  edges_.clear();
171  coords_nodes_.clear();
172  coords_objects_.clear();
173  latest_msg_.reset();
174  }
175 
177  const jsk_recognition_msgs::BoundingBox::ConstPtr& msg)
178  {
179  // Store latest message
180  latest_msg_ = msg;
181 
182  // Convert bbox to bbox_array to show it
183  jsk_recognition_msgs::BoundingBoxArrayPtr bbox_array_msg(new jsk_recognition_msgs::BoundingBoxArray);
184  bbox_array_msg->header = msg->header;
185  std::vector<jsk_recognition_msgs::BoundingBox> boxes;
186  boxes.push_back(*msg);
187  bbox_array_msg->boxes = boxes;
188 
189  if (!only_edge_) {
190  showBoxes(bbox_array_msg);
191  }
192  else {
193  showEdges(bbox_array_msg);
194  }
195 
196  if (show_coords_) {
197  showCoords(bbox_array_msg);
198  }
199  else {
200  hideCoords();
201  }
202  }
203 
204 } // namespace jsk_rviz_plugins
205 
rviz::BoolProperty::getBool
virtual bool getBool() const
rviz::EnumProperty::getOptionInt
virtual int getOptionInt()
jsk_rviz_plugins::BoundingBoxDisplay::updateShowCoords
void updateShowCoords()
Definition: bounding_box_display.cpp:186
rviz::ColorProperty::getColor
virtual QColor getColor() const
rviz::MessageFilterDisplay< MessageType >::reset
void reset() override
msg
msg
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::showCoords
void showCoords(const jsk_recognition_msgs::BoundingBoxArray::ConstPtr &msg)
Definition: bounding_box_display_common.h:411
jsk_rviz_plugins::BoundingBoxDisplay::processMessage
void processMessage(const jsk_recognition_msgs::BoundingBox::ConstPtr &msg)
Definition: bounding_box_display.cpp:208
jsk_rviz_plugins::BoundingBoxDisplay::reset
virtual void reset()
Definition: bounding_box_display.cpp:198
jsk_rviz_plugins::BoundingBoxDisplay::updateAlpha
void updateAlpha()
Definition: bounding_box_display.cpp:144
rviz::Property::show
void show()
rviz::BoolProperty
jsk_rviz_plugins::BoundingBoxDisplay::line_width_property_
rviz::FloatProperty * line_width_property_
Definition: bounding_box_display.h:137
jsk_rviz_plugins::BoundingBoxDisplay::latest_msg_
jsk_recognition_msgs::BoundingBox::ConstPtr latest_msg_
Definition: bounding_box_display.h:140
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::coords_objects_
std::vector< std::vector< ArrowPtr > > coords_objects_
Definition: bounding_box_display_common.h:143
jsk_rviz_plugins::BoundingBoxDisplay::color_property_
rviz::ColorProperty * color_property_
Definition: bounding_box_display.h:134
jsk_rviz_plugins::BoundingBoxDisplay
Definition: bounding_box_display.h:88
jsk_rviz_plugins::BoundingBoxDisplay::~BoundingBoxDisplay
virtual ~BoundingBoxDisplay()
Definition: bounding_box_display.cpp:106
jsk_rviz_plugins::BoundingBoxDisplay::show_coords_
bool show_coords_
Definition: bounding_box_display.h:131
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::coords_nodes_
std::vector< Ogre::SceneNode * > coords_nodes_
Definition: bounding_box_display_common.h:144
rviz::ColorProperty
rviz::Display
rviz::EnumProperty
rviz::FloatProperty
class_list_macros.h
jsk_rviz_plugins::BoundingBoxDisplay::updateColoring
void updateColoring()
Definition: bounding_box_display.cpp:166
jsk_rviz_plugins::BoundingBoxDisplay::alpha_property_
rviz::FloatProperty * alpha_property_
Definition: bounding_box_display.h:135
rviz::Property::hide
void hide()
jsk_rviz_plugins::BoundingBoxDisplay::only_edge_
bool only_edge_
Definition: bounding_box_display.h:130
rviz::FloatProperty::getFloat
virtual float getFloat() const
rviz::EnumProperty::addOption
virtual void addOption(const QString &option, int value=0)
bounding_box_display_common.h
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::showEdges
void showEdges(const jsk_recognition_msgs::BoundingBoxArray::ConstPtr &msg)
Definition: bounding_box_display_common.h:316
rviz::Display::scene_node_
Ogre::SceneNode * scene_node_
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::edges_
std::vector< BillboardLinePtr > edges_
Definition: bounding_box_display_common.h:145
jsk_rviz_plugins::BoundingBoxDisplay::updateOnlyEdge
void updateOnlyEdge()
Definition: bounding_box_display.cpp:152
jsk_rviz_plugins::BoundingBoxDisplay::only_edge_property_
rviz::BoolProperty * only_edge_property_
Definition: bounding_box_display.h:136
rviz::Display::scene_manager_
Ogre::SceneManager * scene_manager_
jsk_rviz_plugins::BoundingBoxDisplay::onInitialize
void onInitialize()
Definition: bounding_box_display.cpp:115
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::alpha_
double alpha_
Definition: bounding_box_display_common.h:140
jsk_rviz_plugins::BoundingBoxDisplay::updateLineWidth
void updateLineWidth()
Definition: bounding_box_display.cpp:128
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::hideCoords
void hideCoords()
Definition: bounding_box_display_common.h:493
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::showBoxes
void showBoxes(const jsk_recognition_msgs::BoundingBoxArray::ConstPtr &msg)
Definition: bounding_box_display_common.h:257
rviz::MessageFilterDisplay< MessageType >::onInitialize
void onInitialize() override
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::line_width_
double line_width_
Definition: bounding_box_display_common.h:141
PLUGINLIB_EXPORT_CLASS
PLUGINLIB_EXPORT_CLASS(jsk_rviz_plugins::PictogramArrayDisplay, rviz::Display)
jsk_rviz_plugins::BoundingBoxDisplay::show_coords_property_
rviz::BoolProperty * show_coords_property_
Definition: bounding_box_display.h:138
bounding_box_display.h
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::color_
QColor color_
Definition: bounding_box_display_common.h:138
jsk_rviz_plugins::BoundingBoxDisplay::coloring_property_
rviz::EnumProperty * coloring_property_
Definition: bounding_box_display.h:133
jsk_rviz_plugins::BoundingBoxDisplay::BoundingBoxDisplay
BoundingBoxDisplay()
Definition: bounding_box_display.cpp:74
jsk_rviz_plugins::BoundingBoxDisplay::updateColor
void updateColor()
Definition: bounding_box_display.cpp:136
jsk_rviz_plugins
Definition: __init__.py:1
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::shapes_
std::vector< ShapePtr > shapes_
Definition: bounding_box_display_common.h:146
jsk_rviz_plugins::BoundingBoxDisplayCommon< jsk_recognition_msgs::BoundingBox >::coloring_method_
std::string coloring_method_
Definition: bounding_box_display_common.h:139


jsk_rviz_plugins
Author(s): Kei Okada , Yohei Kakiuchi , Shohei Fujii , Ryohei Ueda
autogenerated on Mon Jan 22 2024 03:47:13