Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef RVIZ_ROBOT_H_
00031 #define RVIZ_ROBOT_H_
00032
00033 #include "rviz/properties/forwards.h"
00034 #include "link_updater.h"
00035
00036 #include <string>
00037 #include <map>
00038
00039 #include <OGRE/OgreVector3.h>
00040 #include <OGRE/OgreQuaternion.h>
00041 #include <OGRE/OgreAny.h>
00042
00043 namespace Ogre
00044 {
00045 class SceneManager;
00046 class Entity;
00047 class SceneNode;
00048 class Vector3;
00049 class Quaternion;
00050 class Any;
00051 class RibbonTrail;
00052 }
00053
00054 namespace ogre_tools
00055 {
00056 class Object;
00057 class Axes;
00058 }
00059
00060 namespace planning_models
00061 {
00062 class KinematicModel;
00063 }
00064
00065 namespace tf
00066 {
00067 class TransformListener;
00068 }
00069
00070 namespace urdf
00071 {
00072 class Model;
00073 }
00074
00075 class TiXmlElement;
00076
00077 namespace rviz
00078 {
00079
00080 class Robot;
00081 class RobotLink;
00082 class VisualizationManager;
00083
00090 class Robot
00091 {
00092 public:
00093 Robot( VisualizationManager* manager, const std::string& name = "" );
00094 ~Robot();
00095
00096 void setPropertyManager( PropertyManager* property_manager, const CategoryPropertyWPtr& parent );
00097
00105 void load( TiXmlElement* root_element, urdf::Model &descr, bool visual = true, bool collision = true );
00106
00110 void clear();
00111
00112 void update(const LinkUpdater& updater);
00113
00118 void setVisible( bool visible );
00119
00124 void setVisualVisible( bool visible );
00125
00130 void setCollisionVisible( bool visible );
00131
00135 bool isVisualVisible();
00139 bool isCollisionVisible();
00140
00141 void setAlpha(float a);
00142 float getAlpha() { return alpha_; }
00143
00144 RobotLink* getLink( const std::string& name );
00145
00146 const std::string& getName() { return name_; }
00147
00148 Ogre::SceneNode* getVisualNode() { return root_visual_node_; }
00149 Ogre::SceneNode* getCollisionNode() { return root_collision_node_; }
00150 Ogre::SceneNode* getOtherNode() { return root_other_node_; }
00151
00152 CategoryPropertyWPtr getLinksCategory() { return links_category_; }
00153
00154 virtual void setPosition( const Ogre::Vector3& position );
00155 virtual void setOrientation( const Ogre::Quaternion& orientation );
00156 virtual void setScale( const Ogre::Vector3& scale );
00157 virtual const Ogre::Vector3& getPosition();
00158 virtual const Ogre::Quaternion& getOrientation();
00159
00160 protected:
00161
00162 Ogre::SceneManager* scene_manager_;
00163
00164 typedef std::map< std::string, RobotLink* > M_NameToLink;
00165 M_NameToLink links_;
00166
00167 Ogre::SceneNode* root_visual_node_;
00168 Ogre::SceneNode* root_collision_node_;
00169 Ogre::SceneNode* root_other_node_;
00170
00171 bool visual_visible_;
00172 bool collision_visible_;
00173
00174 VisualizationManager* vis_manager_;
00175 PropertyManager* property_manager_;
00176 CategoryPropertyWPtr parent_property_;
00177 CategoryPropertyWPtr links_category_;
00178
00179 std::string name_;
00180 float alpha_;
00181 };
00182
00183 }
00184
00185 #endif