robot_joint.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013, 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 <rviz/robot/robot_joint.h>
31 #include <rviz/robot/robot_link.h>
32 #include <rviz/robot/robot.h>
33 
34 #include <OgreSceneNode.h>
35 
41 #include <rviz/ogre_helpers/axes.h>
42 #include <rviz/load_resource.h>
43 
44 namespace rviz
45 {
46 RobotJoint::RobotJoint(Robot* robot, const urdf::JointConstSharedPtr& joint)
47  : robot_(robot)
48  , name_(joint->name)
49  , parent_link_name_(joint->parent_link_name)
50  , child_link_name_(joint->child_link_name)
51  , has_decendent_links_with_geometry_(true)
52  , doing_set_checkbox_(false)
53  , axes_(nullptr)
54  , axis_(nullptr)
55 {
57  new Property(name_.c_str(), true, "", nullptr, &RobotJoint::updateChildVisibility, this);
58  joint_property_->setIcon(rviz::loadPixmap("package://rviz/icons/classes/RobotJoint.png"));
59 
60  details_ = new Property("Details", QVariant(), "", nullptr);
61 
62  axes_property_ = new Property("Show Axes", false, "Enable/disable showing the axes of this joint.",
64 
66  new VectorProperty("Position", Ogre::Vector3::ZERO,
67  "Position of this joint, in the current Fixed Frame. (Not editable)",
70 
72  new QuaternionProperty("Orientation", Ogre::Quaternion::IDENTITY,
73  "Orientation of this joint, in the current Fixed Frame. (Not editable)",
76 
77  std::string type = "";
78  if (joint->type == urdf::Joint::UNKNOWN)
79  type = "unknown";
80  else if (joint->type == urdf::Joint::REVOLUTE)
81  type = "revolute";
82  else if (joint->type == urdf::Joint::CONTINUOUS)
83  type = "continuous";
84  else if (joint->type == urdf::Joint::PRISMATIC)
85  type = "prismatic";
86  else if (joint->type == urdf::Joint::FLOATING)
87  type = "floating";
88  else if (joint->type == urdf::Joint::PLANAR)
89  type = "planar";
90  else if (joint->type == urdf::Joint::FIXED)
91  type = "fixed";
92 
93  type_property_ = new StringProperty("Type", QString::fromStdString(type),
94  "Type of this joint. (Not editable)", joint_property_);
96 
97  if (joint->limits)
98  {
99  // continuous joints have lower limit and upper limits of zero,
100  // which means this isn't very useful but show it anyhow.
102  new FloatProperty("Lower Limit", joint->limits->lower,
103  "Lower limit of this joint. (Not editable)", joint_property_);
105 
107  new FloatProperty("Upper Limit", joint->limits->upper,
108  "Upper limit of this joint. (Not editable)", joint_property_);
110  }
111 
112  if ((type == "continuous") || (type == "revolute") || (type == "prismatic") || (type == "planar"))
113  {
115  new Property("Show Joint Axis", false, "Enable/disable showing the axis of this joint.",
117 
119  new VectorProperty("Joint Axis", Ogre::Vector3(joint->axis.x, joint->axis.y, joint->axis.z),
120  "Axis of this joint. (Not editable)", joint_property_);
122  }
123 
125 
126  const urdf::Vector3& pos = joint->parent_to_joint_origin_transform.position;
127  const urdf::Rotation& rot = joint->parent_to_joint_origin_transform.rotation;
128  joint_origin_pos_ = Ogre::Vector3(pos.x, pos.y, pos.z);
129  joint_origin_rot_ = Ogre::Quaternion(rot.w, rot.x, rot.y, rot.z);
130 }
131 
133 {
134  delete axes_;
135  if (axis_)
136  delete axis_;
137  delete details_;
138  delete joint_property_;
139 }
140 
142 {
143  int links_with_geom;
144  int links_with_geom_checked;
145  int links_with_geom_unchecked;
146  getChildLinkState(links_with_geom, links_with_geom_checked, links_with_geom_unchecked, true);
147 
148  std::stringstream desc;
149  desc << "Joint <b>" << name_ << "</b> with parent link <b>" << parent_link_name_
150  << "</b> and child link <b>" << child_link_name_ << "</b>.";
151 
152  if (links_with_geom == 0)
153  {
154  desc << " This joint's descendents have NO geometry.";
155  setJointCheckbox(QVariant());
157  }
158  else if (styleIsTree())
159  {
160  desc << " Check/uncheck to show/hide all links descended from this joint.";
161  setJointCheckbox(links_with_geom_unchecked == 0);
163  }
164  else
165  {
166  getChildLinkState(links_with_geom, links_with_geom_checked, links_with_geom_unchecked, false);
167  if (links_with_geom == 0)
168  {
169  desc << " This joint's child link has NO geometry.";
170  setJointCheckbox(QVariant());
172  }
173  else
174  {
175  desc << " Check/uncheck to show/hide this joint's child link.";
176  setJointCheckbox(links_with_geom_unchecked == 0);
178  }
179  }
180 
181  joint_property_->setDescription(desc.str().c_str());
182 }
183 
184 void RobotJoint::setJointCheckbox(const QVariant& val)
185 {
186  // setting doing_set_checkbox_ to true prevents updateChildVisibility() from
187  // updating child link enables.
188  doing_set_checkbox_ = true;
190  doing_set_checkbox_ = false;
191 }
192 
194 {
195  RobotLink* parent_link = robot_->getLink(parent_link_name_);
196  if (!parent_link)
197  return nullptr;
198 
199  const std::string& parent_joint_name = parent_link->getParentJointName();
200  if (parent_joint_name.empty())
201  return nullptr;
202 
203  return robot_->getJoint(parent_joint_name);
204 }
205 
207  int& links_with_geom_checked,
208  int& links_with_geom_unchecked)
209 {
210  links_with_geom_checked = 0;
211  links_with_geom_unchecked = 0;
212 
214  assert(link);
215  if (link->hasGeometry())
216  {
217  bool checked = link->getLinkProperty()->getValue().toBool();
218  links_with_geom_checked += checked ? 1 : 0;
219  links_with_geom_unchecked += checked ? 0 : 1;
220  }
221  links_with_geom = links_with_geom_checked + links_with_geom_unchecked;
222 
223  if (!styleIsTree())
224  {
225  if (!links_with_geom)
226  {
227  setJointCheckbox(QVariant());
228  }
229  else
230  {
231  setJointCheckbox(links_with_geom_unchecked == 0);
232  }
233  }
234 
235  for (const std::string& child_joint_name : link->getChildJointNames())
236  {
237  RobotJoint* child_joint = robot_->getJoint(child_joint_name);
238  if (child_joint)
239  {
240  int child_links_with_geom;
241  int child_links_with_geom_checked;
242  int child_links_with_geom_unchecked;
244  child_links_with_geom, child_links_with_geom_checked, child_links_with_geom_unchecked);
245  links_with_geom_checked += child_links_with_geom_checked;
246  links_with_geom_unchecked += child_links_with_geom_unchecked;
247  }
248  }
249  links_with_geom = links_with_geom_checked + links_with_geom_unchecked;
250 
251  if (styleIsTree())
252  {
253  if (!links_with_geom)
254  {
255  setJointCheckbox(QVariant());
256  }
257  else
258  {
259  setJointCheckbox(links_with_geom_unchecked == 0);
260  }
261  }
262 }
263 
264 
265 void RobotJoint::getChildLinkState(int& links_with_geom,
266  int& links_with_geom_checked,
267  int& links_with_geom_unchecked,
268  bool recursive) const
269 {
270  links_with_geom_checked = 0;
271  links_with_geom_unchecked = 0;
272 
274  assert(link);
275  if (link->hasGeometry())
276  {
277  bool checked = link->getLinkProperty()->getValue().toBool();
278  links_with_geom_checked += checked ? 1 : 0;
279  links_with_geom_unchecked += checked ? 0 : 1;
280  }
281 
282  if (recursive)
283  {
284  std::vector<std::string>::const_iterator child_joint_it = link->getChildJointNames().begin();
285  std::vector<std::string>::const_iterator child_joint_end = link->getChildJointNames().end();
286  for (; child_joint_it != child_joint_end; ++child_joint_it)
287  {
288  RobotJoint* child_joint = robot_->getJoint(*child_joint_it);
289  if (child_joint)
290  {
291  int child_links_with_geom;
292  int child_links_with_geom_checked;
293  int child_links_with_geom_unchecked;
294  child_joint->getChildLinkState(child_links_with_geom, child_links_with_geom_checked,
295  child_links_with_geom_unchecked, recursive);
296  links_with_geom_checked += child_links_with_geom_checked;
297  links_with_geom_unchecked += child_links_with_geom_unchecked;
298  }
299  }
300  }
301 
302  links_with_geom = links_with_geom_checked + links_with_geom_unchecked;
303 }
304 
305 
307 {
309  return true;
310  return joint_property_->getValue().toBool();
311 }
312 
314 {
315  return details_->getParent() != nullptr;
316 }
317 
319 {
321  return;
322 
324  return;
325 
326  bool visible = getEnabled();
327 
329  if (link)
330  {
331  if (link->hasGeometry())
332  {
333  link->getLinkProperty()->setValue(visible);
334  }
335 
336  if (styleIsTree())
337  {
338  std::vector<std::string>::const_iterator child_joint_it = link->getChildJointNames().begin();
339  std::vector<std::string>::const_iterator child_joint_end = link->getChildJointNames().end();
340  for (; child_joint_it != child_joint_end; ++child_joint_it)
341  {
342  RobotJoint* child_joint = robot_->getJoint(*child_joint_it);
343  if (child_joint)
344  {
345  child_joint->getJointProperty()->setValue(visible);
346  }
347  }
348  }
349  }
350 }
351 
353 {
354  if (axes_property_->getValue().toBool())
355  {
356  if (!axes_)
357  {
358  static int count = 0;
359  std::stringstream ss;
360  ss << "Axes for joint " << name_ << count++;
361  axes_ = new Axes(robot_->getSceneManager(), robot_->getOtherNode(), 0.1, 0.01);
362  axes_->getSceneNode()->setVisible(getEnabled());
363 
366  }
367  }
368  else
369  {
370  if (axes_)
371  {
372  delete axes_;
373  axes_ = nullptr;
374  }
375  }
376 }
377 
379 {
380  if (show_axis_property_->getValue().toBool())
381  {
382  if (!axis_)
383  {
384  static int count = 0;
385  std::stringstream ss;
386  ss << "Axis for joint " << name_ << count++;
387  axis_ = new Arrow(robot_->getSceneManager(), robot_->getOtherNode(), 0.15, 0.05, 0.05, 0.08);
388  axis_->getSceneNode()->setVisible(getEnabled());
389 
392 
393  // TODO(lucasw) store an Ogre::ColorValue and set it according to joint type.
394  axis_->setColor(0.0, 0.8, 0.0, 1.0);
395  }
396  }
397  else
398  {
399  if (axis_)
400  {
401  delete axis_;
402  axis_ = nullptr;
403  }
404  }
405 }
406 
407 void RobotJoint::setTransforms(const Ogre::Vector3& parent_link_position,
408  const Ogre::Quaternion& parent_link_orientation)
409 {
410  Ogre::Vector3 position = parent_link_position + parent_link_orientation * joint_origin_pos_;
411  Ogre::Quaternion orientation = parent_link_orientation * joint_origin_rot_;
412 
413  position_property_->setVector(position);
414  orientation_property_->setQuaternion(orientation);
415 
416  if (axes_)
417  {
418  axes_->setPosition(position);
419  axes_->setOrientation(orientation);
420  }
421  if (axis_)
422  {
423  axis_->setPosition(position);
424  axis_->setDirection(orientation * axis_property_->getVector());
425  }
426 }
427 
429 {
432  axes_property_->setHidden(hide);
434  axis_property_->setHidden(hide);
435 }
436 
437 Ogre::Vector3 RobotJoint::getPosition()
438 {
439  return position_property_->getVector();
440 }
441 
442 Ogre::Quaternion RobotJoint::getOrientation()
443 {
445 }
446 
448 {
449  Property* old_parent = joint_property_->getParent();
450  if (old_parent)
451  old_parent->takeChild(joint_property_);
452 
453  if (new_parent)
454  new_parent->addChild(joint_property_);
455 }
456 
457 // if use_detail:
458 // - all sub properties become children of details_ property.
459 // - details_ property becomes a child of joint_property_
460 // else (!use_detail)
461 // - all sub properties become children of joint_property_.
462 // details_ property does not have a parent.
463 void RobotJoint::useDetailProperty(bool use_detail)
464 {
465  Property* old_parent = details_->getParent();
466  if (old_parent)
467  old_parent->takeChild(details_);
468 
469  if (use_detail)
470  {
471  while (joint_property_->numChildren() > 0)
472  {
473  Property* child = joint_property_->childAt(0);
474  joint_property_->takeChild(child);
475  details_->addChild(child);
476  }
477 
479  }
480  else
481  {
482  while (details_->numChildren() > 0)
483  {
484  Property* child = details_->childAt(0);
485  details_->takeChild(child);
486  joint_property_->addChild(child);
487  }
488  }
489 }
490 
491 void RobotJoint::expandDetails(bool expand)
492 {
494  if (expand)
495  {
496  parent->expand();
497  }
498  else
499  {
500  parent->collapse();
501  }
502 }
503 
504 } // namespace rviz
rviz::RobotJoint::axes_
Axes * axes_
Definition: robot_joint.h:197
rviz::RobotJoint::name_
std::string name_
Name of this joint.
Definition: robot_joint.h:173
rviz::RobotJoint::show_axis_property_
Property * show_axis_property_
Definition: robot_joint.h:185
axes.h
rviz::Axes::getSceneNode
Ogre::SceneNode * getSceneNode()
Get the scene node associated with this object.
Definition: axes.h:96
rviz::Property::childAt
Property * childAt(int index) const
Return the child Property with the given index, or NULL if the index is out of bounds or if the child...
Definition: property.cpp:202
rviz::RobotJoint::setTransforms
void setTransforms(const Ogre::Vector3 &parent_link_position, const Ogre::Quaternion &parent_link_orientation)
Definition: robot_joint.cpp:407
robot.h
robot_joint.h
rviz::Property::setHidden
virtual void setHidden(bool hidden)
Hide or show this property in any PropertyTreeWidget viewing its parent.
Definition: property.cpp:566
rviz::Arrow
An arrow consisting of a cylinder and a cone.
Definition: arrow.h:57
rviz::RobotJoint::getOrientation
Ogre::Quaternion getOrientation()
Definition: robot_joint.cpp:442
rviz::RobotJoint::upper_limit_property_
FloatProperty * upper_limit_property_
Definition: robot_joint.h:188
rviz::RobotJoint::setParentProperty
void setParentProperty(Property *new_parent)
Definition: robot_joint.cpp:447
rviz::RobotJoint::lower_limit_property_
FloatProperty * lower_limit_property_
Definition: robot_joint.h:187
rviz::RobotJoint::getEnabled
bool getEnabled() const
Definition: robot_joint.cpp:306
rviz::RobotJoint::position_property_
VectorProperty * position_property_
Definition: robot_joint.h:180
rviz::Property::addChild
virtual void addChild(Property *child, int index=-1)
Add a child property.
Definition: property.cpp:356
rviz::Property::collapse
virtual void collapse()
Collapse (hide the children of) this Property.
Definition: property.cpp:586
float_property.h
rviz::RobotJoint::expandDetails
void expandDetails(bool expand)
Definition: robot_joint.cpp:491
rviz::Property::numChildren
virtual int numChildren() const
Return the number of child objects (Property or otherwise).
Definition: property.h:287
rviz::QuaternionProperty::setReadOnly
void setReadOnly(bool read_only) override
Overridden from Property to propagate read-only-ness to children.
Definition: quaternion_property.cpp:158
rviz::RobotJoint::type_property_
StringProperty * type_property_
Definition: robot_joint.h:186
rviz::Property::getValue
virtual QVariant getValue() const
Return the value of this Property as a QVariant. If the value has never been set, an invalid QVariant...
Definition: property.cpp:150
rviz::RobotJoint::getChildLinkState
void getChildLinkState(int &links_with_geom, int &links_with_geom_checked, int &links_with_geom_unchecked, bool recursive) const
Definition: robot_joint.cpp:265
rviz::loadPixmap
QPixmap loadPixmap(const QString &url, bool fill_cache)
Definition: load_resource.cpp:65
rviz::RobotJoint::robot_
Robot * robot_
Definition: robot_joint.h:172
rviz::RobotJoint::axes_property_
Property * axes_property_
Definition: robot_joint.h:182
rviz::RobotJoint::child_link_name_
std::string child_link_name_
Definition: robot_joint.h:175
quaternion_property.h
rviz::QuaternionProperty
Definition: quaternion_property.h:38
rviz::FloatProperty
Property specialized to enforce floating point max/min.
Definition: float_property.h:37
rviz::Property
A single element of a property tree, with a name, value, description, and possibly children.
Definition: property.h:100
rviz::RobotJoint::updateAxes
void updateAxes()
Definition: robot_joint.cpp:352
rviz::RobotJoint::calculateJointCheckboxesRecursive
void calculateJointCheckboxesRecursive(int &links_with_geom, int &links_with_geom_checked, int &links_with_geom_unchecked)
Definition: robot_joint.cpp:206
rviz::RobotJoint::axis_
Arrow * axis_
Definition: robot_joint.h:198
rviz::RobotJoint::~RobotJoint
~RobotJoint() override
Definition: robot_joint.cpp:132
rviz::RobotJoint::hasDescendentLinksWithGeometry
bool hasDescendentLinksWithGeometry() const
Definition: robot_joint.h:124
rviz::Property::expand
virtual void expand()
Expand (show the children of) this Property.
Definition: property.cpp:578
rviz::Property::setValue
virtual bool setValue(const QVariant &new_value)
Set the new value for this property. Returns true if the new value is different from the old value,...
Definition: property.cpp:134
rviz
Definition: add_display_dialog.cpp:54
rviz::VectorProperty::setVector
virtual bool setVector(const Ogre::Vector3 &vector)
Definition: vector_property.cpp:55
rviz::RobotJoint::setJointCheckbox
void setJointCheckbox(const QVariant &val)
Definition: robot_joint.cpp:184
rviz::QuaternionProperty::setQuaternion
virtual bool setQuaternion(const Ogre::Quaternion &quaternion)
Definition: quaternion_property.cpp:60
rviz::RobotJoint::getJointProperty
const Property * getJointProperty() const
Definition: robot_joint.h:102
rviz::StringProperty
Property specialized for string values.
Definition: string_property.h:39
rviz::RobotJoint::useDetailProperty
void useDetailProperty(bool use_detail)
Definition: robot_joint.cpp:463
rviz::RobotJoint::setJointPropertyDescription
void setJointPropertyDescription()
Definition: robot_joint.cpp:141
rviz::RobotJoint::joint_origin_rot_
Ogre::Quaternion joint_origin_rot_
Definition: robot_joint.h:192
rviz::RobotJoint::updateChildVisibility
void updateChildVisibility()
Definition: robot_joint.cpp:318
arrow.h
rviz::RobotJoint
Contains any data we need from a joint in the robot.
Definition: robot_joint.h:79
rviz::RobotJoint::orientation_property_
QuaternionProperty * orientation_property_
Definition: robot_joint.h:181
string_property.h
rviz::Axes
An object that displays a set of X/Y/Z axes, with X=Red, Y=Green, Z=Blue.
Definition: axes.h:57
rviz::RobotJoint::hideSubProperties
void hideSubProperties(bool hide)
Definition: robot_joint.cpp:428
rviz::Property::getParent
Property * getParent() const
Return the parent Property.
Definition: property.cpp:231
rviz::RobotJoint::details_
Property * details_
Definition: robot_joint.h:179
rviz::Robot::getOtherNode
Ogre::SceneNode * getOtherNode()
Definition: robot.h:175
rviz::RobotJoint::getParentJoint
RobotJoint * getParentJoint()
Definition: robot_joint.cpp:193
rviz::Property::setDescription
virtual void setDescription(const QString &description)
Set the description.
Definition: property.cpp:169
rviz::Arrow::setDirection
void setDirection(const Ogre::Vector3 &direction)
Set the direction of the arrow.
Definition: arrow.cpp:126
rviz::Robot::getSceneManager
Ogre::SceneManager * getSceneManager()
Definition: robot.h:179
rviz::RobotJoint::RobotJoint
RobotJoint(Robot *robot, const urdf::JointConstSharedPtr &joint)
Definition: robot_joint.cpp:46
rviz::Property::setReadOnly
virtual void setReadOnly(bool read_only)
Prevent or allow users to edit this property from a PropertyTreeWidget.
Definition: property.h:497
vector_property.h
rviz::RobotJoint::doing_set_checkbox_
bool doing_set_checkbox_
Definition: robot_joint.h:195
rviz::RobotJoint::updateAxis
void updateAxis()
Definition: robot_joint.cpp:378
rviz::RobotJoint::parent_link_name_
std::string parent_link_name_
Definition: robot_joint.h:174
rviz::RobotJoint::joint_property_
Property * joint_property_
Definition: robot_joint.h:178
rviz::RobotJoint::axis_property_
VectorProperty * axis_property_
Definition: robot_joint.h:184
rviz::VectorProperty::setReadOnly
void setReadOnly(bool read_only) override
Overridden from Property to propagate read-only-ness to children.
Definition: vector_property.cpp:143
rviz::Property::setIcon
virtual void setIcon(const QIcon &icon)
Set the icon to be displayed next to the property.
Definition: property.h:253
rviz::RobotJoint::styleIsTree
bool styleIsTree() const
Definition: robot_joint.cpp:313
rviz::RobotJoint::has_decendent_links_with_geometry_
bool has_decendent_links_with_geometry_
Definition: robot_joint.h:193
load_resource.h
rviz::Axes::setPosition
void setPosition(const Ogre::Vector3 &position) override
Set the position of this object.
Definition: axes.cpp:92
rviz::RobotJoint::joint_origin_pos_
Ogre::Vector3 joint_origin_pos_
Definition: robot_joint.h:191
rviz::VectorProperty
Definition: vector_property.h:39
rviz::RobotJoint::getPosition
Ogre::Vector3 getPosition()
Definition: robot_joint.cpp:437
rviz::QuaternionProperty::getQuaternion
virtual Ogre::Quaternion getQuaternion() const
Definition: quaternion_property.h:72
rviz::Robot::getLink
RobotLink * getLink(const std::string &name)
Definition: robot.cpp:622
rviz::Robot::getJoint
RobotJoint * getJoint(const std::string &name)
Definition: robot.cpp:634
rviz::Arrow::setPosition
void setPosition(const Ogre::Vector3 &position) override
Set the position of the base of the arrow.
Definition: arrow.cpp:114
rviz::Robot
Definition: robot.h:79
rviz::Axes::setOrientation
void setOrientation(const Ogre::Quaternion &orientation) override
Set the orientation of the object.
Definition: axes.cpp:97
rviz::Arrow::getSceneNode
Ogre::SceneNode * getSceneNode()
Get the scene node associated with this arrow.
Definition: arrow.h:147
rviz::Arrow::setColor
void setColor(float r, float g, float b, float a) override
Set the color of this arrow. Sets both the head and shaft color to the same value....
Definition: arrow.cpp:89
rviz::VectorProperty::getVector
virtual Ogre::Vector3 getVector() const
Definition: vector_property.h:73
rviz::Property::takeChild
Property * takeChild(Property *child)
Remove a given child object and return a pointer to it.
Definition: property.cpp:322


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust, William Woodall
autogenerated on Sat Jun 1 2024 02:31:53