LineSegments2DDisplay.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #include <OGRE/OgreSceneNode.h>
31 #include <OGRE/OgreSceneManager.h>
32 
33 #include <tf/transform_listener.h>
34 
38 #include <rviz/frame_manager.h>
39 
42 
43 namespace tuw_geometry_rviz
44 {
45 // The constructor must have no arguments, so we can't give the
46 // constructor the parameters it needs to fully initialize.
48 {
50  new rviz::FloatProperty("Scale Segments", 0.4, "Scale of the line segments.", this, SLOT(updateScaleSegments()));
54  "Color Segments", QColor(204, 51, 0), "Color to draw the linesegments.", this, SLOT(updateColorSegments()));
56  new rviz::FloatProperty("Width Segments", 0.05, "Width of the line segments.", this, SLOT(updateWidthSegments()));
59 }
60 
61 // After the top-level rviz::Display::initialize() does its own setup,
62 // it calls the subclass's onInitialize() function. This is where we
63 // instantiate all the workings of the class. We make sure to also
64 // call our immediate super-class's onInitialize() function, since it
65 // does important stuff setting up the message filter.
66 //
67 // Note that "MFDClass" is a typedef of
68 // ``MessageFilterDisplay<message type>``, to save typing that long
69 // templated class name every time you need to refer to the
70 // superclass.
72 {
75 }
76 
78 {
79 }
80 
81 // Clear the visual by deleting its object.
83 {
85 }
86 
87 // Set the current color for the visual's pose.
89 {
90  Ogre::ColourValue color = property_color_segments_->getOgreColor();
91  visual_->setColorSegments(color);
92 }
93 
94 // Set the current scale for the visual's pose.
96 {
97  float scale = property_scale_segments_->getFloat();
98  visual_->setScaleSegments(scale);
99 }
100 
102 {
103  float width = property_width_segments_->getFloat();
104  visual_->setWidthSegments(width);
105 }
106 
107 // This is our callback to handle an incoming message.
108 void LineSegments2DDisplay::processMessage(const tuw_geometry_msgs::LineSegments::ConstPtr& msg)
109 {
110  // Here we call the rviz::FrameManager to get the transform from the
111  // fixed frame to the frame in the header of this Imu message. If
112  // it fails, we can't do anything else so we return.
113  Ogre::Quaternion orientation;
114  Ogre::Vector3 position;
115 
116  if (!context_->getFrameManager()->getTransform(msg->header.frame_id, msg->header.stamp, position, orientation))
117  {
118  ROS_DEBUG("Error transforming from frame '%s' to frame '%s'", msg->header.frame_id.c_str(),
119  qPrintable(fixed_frame_));
120  return;
121  }
122 
123  // Now set or update the contents of the visual.
124  visual_->setMessage(msg);
125  visual_->setFramePosition(position);
126  visual_->setFrameOrientation(orientation);
127  visual_->setColorSegments(property_color_segments_->getOgreColor());
128  visual_->setScaleSegments(property_scale_segments_->getFloat());
129  visual_->setWidthSegments(property_width_segments_->getFloat());
130 }
131 
132 } // end namespace tuw_geometry_rviz_plugin
133 
134 // Tell pluginlib about this class. It is important to do this in
135 // global scope, outside our package's namespace.
void setMin(float min)
void setMax(float max)
Ogre::ColourValue getOgreColor() const
void processMessage(const tuw_geometry_msgs::LineSegments::ConstPtr &msg)
DisplayContext * context_
boost::shared_ptr< LineSegments2DVisual > visual_
virtual float getFloat() const
Ogre::SceneNode * scene_node_
QString fixed_frame_
virtual FrameManager * getFrameManager() const =0
virtual Ogre::SceneManager * getSceneManager() const =0
bool getTransform(const Header &header, Ogre::Vector3 &position, Ogre::Quaternion &orientation)
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
#define ROS_DEBUG(...)


tuw_geometry_rviz
Author(s): Markus Macsek , Markus Bader
autogenerated on Mon Jun 10 2019 15:40:07