From: <ve...@us...> - 2009-01-11 22:56:32
|
Revision: 9213 http://personalrobots.svn.sourceforge.net/personalrobots/?rev=9213&view=rev Author: veedee Date: 2009-01-11 22:56:24 +0000 (Sun, 11 Jan 2009) Log Message: ----------- added a collision map visualizer for Ogre (+ dependency on collision_map) Modified Paths: -------------- pkg/trunk/visualization/ogre_visualizer/CMakeLists.txt pkg/trunk/visualization/ogre_visualizer/manifest.xml pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.cpp pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.h pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/factory.cpp pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/visualization_manager.i Added Paths: ----------- pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.cpp pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.h Modified: pkg/trunk/visualization/ogre_visualizer/CMakeLists.txt =================================================================== --- pkg/trunk/visualization/ogre_visualizer/CMakeLists.txt 2009-01-11 22:55:11 UTC (rev 9212) +++ pkg/trunk/visualization/ogre_visualizer/CMakeLists.txt 2009-01-11 22:56:24 UTC (rev 9213) @@ -87,6 +87,7 @@ src/ogre_visualizer/displays/particle_cloud_2d_display.cpp src/ogre_visualizer/displays/poly_line_2d_display.cpp src/ogre_visualizer/displays/polygonal_map_display.cpp + src/ogre_visualizer/displays/collision_map_display.cpp src/ogre_visualizer/displays/map_display.cpp src/ogre_visualizer/displays/tf_display.cpp src/ogre_visualizer/generated/visualization_panel_generated.cpp Modified: pkg/trunk/visualization/ogre_visualizer/manifest.xml =================================================================== --- pkg/trunk/visualization/ogre_visualizer/manifest.xml 2009-01-11 22:55:11 UTC (rev 9212) +++ pkg/trunk/visualization/ogre_visualizer/manifest.xml 2009-01-11 22:56:24 UTC (rev 9213) @@ -28,6 +28,8 @@ <depend package="wxPython_swig_interface"/> <depend package="std_srvs"/> <depend package="boost"/> + <depend package="collision_map" /> + <export> <cpp cflags="-I${prefix}/src/" lflags="-Wl,-rpath,${prefix}/lib ${prefix}/lib/_ogre_visualizer.so"/> <python path="${prefix}/lib/"/> Added: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.cpp =================================================================== --- pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.cpp (rev 0) +++ pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.cpp 2009-01-11 22:56:24 UTC (rev 9213) @@ -0,0 +1,411 @@ +/* + * Copyright (c) 2008, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * $Id$ + * + */ + +#include "collision_map_display.h" +#include "properties/property.h" +#include "properties/property_manager.h" +#include "common.h" + +#include <ros/node.h> +#include <tf/transform_listener.h> +#include <tf/message_notifier.h> + +#include <boost/bind.hpp> + +#include <OgreSceneNode.h> +#include <OgreSceneManager.h> +#include <OgreManualObject.h> +#include <OgreBillboardSet.h> + +#include <ogre_tools/point_cloud.h> + +namespace ogre_vis +{ + + CollisionMapDisplay::CollisionMapDisplay (const std::string & name, VisualizationManager * manager) + : Display (name, manager) + , color_ (0.1f, 1.0f, 0.0f) + , render_operation_ (collision_render_ops::CBoxes) + , override_color_ (false) + , color_property_ (NULL) + , topic_property_ (NULL) + , override_color_property_ (NULL) + , render_operation_property_ (NULL) + , point_size_property_ (NULL) + , z_position_property_ (NULL) + , alpha_property_ (NULL) + { + scene_node_ = scene_manager_->getRootSceneNode ()->createChildSceneNode (); + + static int count = 0; + std::stringstream ss; + ss << "Collision Map" << count++; + manual_object_ = scene_manager_->createManualObject (ss.str ()); + manual_object_->setDynamic (true); + scene_node_->attachObject (manual_object_); + + cloud_ = new ogre_tools::PointCloud (scene_manager_, scene_node_); + setAlpha (1.0f); + setPointSize (0.05f); + setZPosition (0.0f); + + notifier_ = new tf::MessageNotifier<collision_map::CollisionMap> (tf_, ros_node_, boost::bind(&CollisionMapDisplay::incomingMessage, this, _1), "", "", 1); + } + + CollisionMapDisplay::~CollisionMapDisplay () + { + unsubscribe (); + clear (); + + delete notifier_; + + scene_manager_->destroyManualObject (manual_object_); + + delete cloud_; + } + + void + CollisionMapDisplay::clear () + { + manual_object_->clear (); + cloud_->clear (); + } + + void + CollisionMapDisplay::setTopic (const std::string & topic) + { + unsubscribe (); + topic_ = topic; + subscribe (); + + if (topic_property_) + topic_property_->changed (); + + causeRender (); + } + + void + CollisionMapDisplay::setColor (const Color & color) + { + color_ = color; + + if (color_property_) + color_property_->changed (); + + message_mutex_.lock(); + new_message_ = current_message_; + processMessage (); + new_message_ = CollisionMapPtr(); + message_mutex_.unlock(); + causeRender (); + } + + void + CollisionMapDisplay::setOverrideColor (bool override) + { + override_color_ = override; + + if (override_color_property_) + override_color_property_->changed (); + + message_mutex_.lock(); + new_message_ = current_message_; + processMessage (); + new_message_ = CollisionMapPtr(); + message_mutex_.unlock(); + causeRender (); + } + + void + CollisionMapDisplay::setRenderOperation (int op) + { + render_operation_ = op; + + if (render_operation_property_) + render_operation_property_->changed (); + + message_mutex_.lock(); + new_message_ = current_message_; + processMessage (); + new_message_ = CollisionMapPtr(); + message_mutex_.unlock(); + causeRender (); + } + + void + CollisionMapDisplay::setPointSize (float size) + { + point_size_ = size; + + if (point_size_property_) + point_size_property_->changed (); + + cloud_->setBillboardDimensions (size, size); + causeRender (); + } + + void + CollisionMapDisplay::setZPosition (float z) + { + z_position_ = z; + + if (z_position_property_) + z_position_property_->changed (); + + scene_node_->setPosition (0.0f, z, 0.0f); + causeRender (); + } + + void + CollisionMapDisplay::setAlpha (float alpha) + { + alpha_ = alpha; + cloud_->setAlpha (alpha); + + if (alpha_property_) + alpha_property_->changed (); + + message_mutex_.lock(); + new_message_ = current_message_; + processMessage (); + new_message_ = CollisionMapPtr(); + message_mutex_.unlock(); + causeRender (); + } + + void + CollisionMapDisplay::subscribe () + { + if (!isEnabled ()) + return; + + notifier_->setTopic( topic_ ); + } + + void + CollisionMapDisplay::unsubscribe () + { + notifier_->setTopic( "" ); + } + + void + CollisionMapDisplay::onEnable () + { + scene_node_->setVisible (true); + subscribe (); + } + + void + CollisionMapDisplay::onDisable () + { + unsubscribe (); + clear (); + scene_node_->setVisible (false); + } + + void + CollisionMapDisplay::fixedFrameChanged () + { + clear (); + } + + void + CollisionMapDisplay::update (float dt) + { + message_mutex_.lock(); + if (new_message_) + { + processMessage (); + current_message_ = new_message_; + new_message_ = CollisionMapPtr(); + causeRender (); + } + message_mutex_.unlock(); + } + + void + CollisionMapDisplay::processMessage () + { + if (!new_message_) + { + return; + } + + clear (); + + tf::Stamped < tf::Pose > pose (btTransform (btQuaternion (0.0f, 0.0f, 0.0f), btVector3 (0.0f, 0.0f, z_position_)), new_message_->header.stamp, new_message_->header.frame_id); + + try + { + tf_->transformPose (fixed_frame_, pose, pose); + } + catch (tf::TransformException & e) + { + ROS_ERROR ("Error transforming from frame 'map' to frame '%s'\n", fixed_frame_.c_str ()); + } + + Ogre::Vector3 position = Ogre::Vector3 (pose.getOrigin ().x (), pose.getOrigin ().y (), pose.getOrigin ().z ()); + robotToOgre (position); + + btScalar yaw, pitch, roll; + pose.getBasis ().getEulerZYX (yaw, pitch, roll); + + Ogre::Matrix3 orientation (ogreMatrixFromRobotEulers( yaw, pitch, roll)); + + manual_object_->clear (); + + Ogre::ColourValue color; + + uint32_t num_boxes = new_message_->get_boxes_size (); + ROS_INFO ("Collision map contains %d boxes.", num_boxes); + + // If we render points, we don't care about the order + if (render_operation_ == collision_render_ops::CPoints) + { + typedef std::vector < ogre_tools::PointCloud::Point > V_Point; + V_Point points; + points.resize (num_boxes); + for (uint32_t i = 0; i < num_boxes; i++) + { + ogre_tools::PointCloud::Point & current_point = points[i]; + + current_point.x_ = new_message_->boxes[i].center.x; + current_point.y_ = new_message_->boxes[i].center.y; + current_point.z_ = new_message_->boxes[i].center.z; + color = Ogre::ColourValue (color_.r_, color_.g_, color_.b_, alpha_); + current_point.r_ = color.r; + current_point.g_ = color.g; + current_point.b_ = color.b; + } + + cloud_->clear (); + + if (!points.empty ()) + cloud_->addPoints (&points.front (), points.size ()); + } + else + { + std_msgs::Point32 center, extents; + color = Ogre::ColourValue (color_.r_, color_.g_, color_.b_, alpha_); + for (uint32_t i = 0; i < num_boxes; i++) + { + manual_object_->estimateVertexCount (8); + manual_object_->begin ("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP); + center.x = new_message_->boxes[i].center.x; + center.y = new_message_->boxes[i].center.y; + center.z = new_message_->boxes[i].center.z; + extents.x = new_message_->boxes[i].extents.x; + extents.y = new_message_->boxes[i].extents.y; + extents.z = new_message_->boxes[i].extents.z; + + manual_object_->position (center.x - extents.x, center.y - extents.y, center.z - extents.z); + manual_object_->colour (color); + manual_object_->position (center.x - extents.x, center.y + extents.y, center.z - extents.z); + manual_object_->colour (color); + manual_object_->position (center.x + extents.x, center.y + extents.y, center.z - extents.z); + manual_object_->colour (color); + manual_object_->position (center.x + extents.x, center.y - extents.y, center.z - extents.z); + manual_object_->colour (color); + manual_object_->position (center.x + extents.x, center.y - extents.y, center.z + extents.z); + manual_object_->colour (color); + manual_object_->position (center.x + extents.x, center.y + extents.y, center.z + extents.z); + manual_object_->colour (color); + manual_object_->position (center.x - extents.x, center.y + extents.y, center.z + extents.z); + manual_object_->colour (color); + manual_object_->position (center.x - extents.x, center.y - extents.y, center.z + extents.z); + manual_object_->colour (color); + manual_object_->end (); + } + } + + scene_node_->setPosition (position); + scene_node_->setOrientation (orientation); + } + + void + CollisionMapDisplay::incomingMessage (const CollisionMapPtr& message) + { + message_mutex_.lock(); + new_message_ = message; + message_mutex_.unlock(); + } + + void + CollisionMapDisplay::reset () + { + clear (); + } + + void CollisionMapDisplay::targetFrameChanged() + { + notifier_->setTargetFrame( target_frame_ ); + } + + void + CollisionMapDisplay::createProperties () + { + override_color_property_ = property_manager_->createProperty<BoolProperty>("Override Color", property_prefix_, + boost::bind (&CollisionMapDisplay::getOverrideColor, this), + boost::bind (&CollisionMapDisplay::setOverrideColor, this, _1), + parent_category_, this); + color_property_ = property_manager_->createProperty<ColorProperty>("Color", property_prefix_, + boost::bind (&CollisionMapDisplay::getColor, this), + boost::bind (&CollisionMapDisplay::setColor, this, _1), + parent_category_, this); + render_operation_property_ = property_manager_->createProperty<EnumProperty>("Render Operation", property_prefix_, + boost::bind (&CollisionMapDisplay::getRenderOperation, this), + boost::bind (&CollisionMapDisplay::setRenderOperation, this, _1), + parent_category_, this); + render_operation_property_->addOption ("Boxes", collision_render_ops::CBoxes); + render_operation_property_->addOption ("Points", collision_render_ops::CPoints); + + z_position_property_ = property_manager_->createProperty<FloatProperty>("Z Position", property_prefix_, + boost::bind (&CollisionMapDisplay::getZPosition, this), + boost::bind (&CollisionMapDisplay::setZPosition, this, _1), + parent_category_, this); + alpha_property_ = property_manager_->createProperty<FloatProperty>("Alpha", property_prefix_, + boost::bind (&CollisionMapDisplay::getAlpha, this), + boost::bind (&CollisionMapDisplay::setAlpha, this, _1), + parent_category_, this); + topic_property_ = property_manager_->createProperty<ROSTopicStringProperty>("Topic", property_prefix_, + boost::bind (&CollisionMapDisplay::getTopic, this), + boost::bind (&CollisionMapDisplay::setTopic, this, _1), + parent_category_, this); + } + + const char* + CollisionMapDisplay::getDescription () + { + return ("Displays data from a std_msgs::CollisionMap message as either points or lines."); + } + +} // namespace ogre_vis Property changes on: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.cpp ___________________________________________________________________ Added: svn:keywords + Id Added: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.h =================================================================== --- pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.h (rev 0) +++ pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.h 2009-01-11 22:56:24 UTC (rev 9213) @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2008, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Willow Garage, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * $Id$ + * + */ + +#ifndef OGRE_VISUALIZER_COLLISION_MAP_DISPLAY_H_ +#define OGRE_VISUALIZER_COLLISION_MAP_DISPLAY_H_ + +#include "display.h" +#include "helpers/color.h" + +#include <rosthread/mutex.h> + +#include <boost/shared_ptr.hpp> + +#include <collision_map/Box3D.h> +#include <collision_map/CollisionMap.h> + + +namespace ogre_tools +{ + class PointCloud; +} + +namespace Ogre +{ + class SceneNode; + class ManualObject; +} + +namespace tf +{ + template<class Message> class MessageNotifier; +} + +namespace ogre_vis +{ + class ROSTopicStringProperty; + class ColorProperty; + class FloatProperty; + class BoolProperty; + class EnumProperty; + + namespace collision_render_ops + { + enum CollisionRenderOp + { + CBoxes, + CPoints, + CCount, + }; + } + typedef collision_render_ops::CollisionRenderOp CollisionRenderOp; + + /** + * \class CollisionMapDisplay + * \brief Displays a collision_map::CollisionMap message + */ + class CollisionMapDisplay:public Display + { + public: + CollisionMapDisplay (const std::string& name, VisualizationManager* manager); + + virtual ~CollisionMapDisplay (); + + void setTopic (const std::string& topic); + const std::string& getTopic () { return (topic_); } + + void setColor (const Color& color); + const Color& getColor () { return (color_); } + + void setOverrideColor (bool override); + bool getOverrideColor () { return (override_color_); } + + void setRenderOperation (int op); + int getRenderOperation () { return (render_operation_); } + + void setPointSize (float size); + float getPointSize () { return (point_size_); } + + void setZPosition (float z); + float getZPosition () { return (z_position_); } + + void setAlpha (float alpha); + float getAlpha () { return (alpha_); } + + // Overrides from Display + virtual void targetFrameChanged (); + virtual void fixedFrameChanged (); + virtual void createProperties (); + virtual void update (float dt); + virtual bool isObjectPickable (const Ogre::MovableObject* object) const { return (true); } + virtual void reset (); + + static const char *getTypeStatic () { return ("CollisionMap"); } + virtual const char *getType () { return (getTypeStatic ()); } + static const char *getDescription (); + + protected: + void subscribe (); + void unsubscribe (); + void clear (); + typedef boost::shared_ptr<collision_map::CollisionMap> CollisionMapPtr; + void incomingMessage (const CollisionMapPtr& message); + void processMessage (); + + // overrides from Display + virtual void onEnable (); + virtual void onDisable (); + + std::string topic_; + Color color_; + int render_operation_; + bool override_color_; + float point_size_; + float z_position_; + float alpha_; + + Ogre::SceneNode* scene_node_; + Ogre::ManualObject* manual_object_; + ogre_tools::PointCloud* cloud_; + + ros::thread::mutex message_mutex_; + CollisionMapPtr new_message_; + CollisionMapPtr current_message_; + tf::MessageNotifier<collision_map::CollisionMap>* notifier_; + + ColorProperty *color_property_; + ROSTopicStringProperty *topic_property_; + BoolProperty *override_color_property_; + EnumProperty *render_operation_property_; + FloatProperty *point_size_property_; + FloatProperty* z_position_property_; + FloatProperty *alpha_property_; + }; + +} // namespace ogre_vis + +#endif /* OGRE_VISUALIZER_COLLISION_MAP_DISPLAY_H_ */ Property changes on: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/collision_map_display.h ___________________________________________________________________ Added: svn:keywords + Id Modified: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.cpp =================================================================== --- pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.cpp 2009-01-11 22:55:11 UTC (rev 9212) +++ pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.cpp 2009-01-11 22:56:24 UTC (rev 9213) @@ -263,7 +263,7 @@ return; } - clear (); + clear (); tf::Stamped < tf::Pose > pose (btTransform (btQuaternion (0.0f, 0.0f, 0.0f), btVector3 (0.0f, 0.0f, z_position_)), new_message_->header.stamp, new_message_->header.frame_id); Modified: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.h =================================================================== --- pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.h 2009-01-11 22:55:11 UTC (rev 9212) +++ pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/displays/polygonal_map_display.h 2009-01-11 22:56:24 UTC (rev 9213) @@ -57,7 +57,7 @@ namespace tf { -template<class Message> class MessageNotifier; + template<class Message> class MessageNotifier; } namespace ogre_vis @@ -87,7 +87,7 @@ { public: PolygonalMapDisplay (const std::string& name, VisualizationManager* manager); - + virtual ~PolygonalMapDisplay (); void setTopic (const std::string& topic); @@ -107,7 +107,7 @@ void setZPosition (float z); float getZPosition () { return (z_position_); } - + void setAlpha (float alpha); float getAlpha () { return (alpha_); } @@ -146,7 +146,7 @@ Ogre::SceneNode* scene_node_; Ogre::ManualObject* manual_object_; ogre_tools::PointCloud* cloud_; - + ros::thread::mutex message_mutex_; PolygonalMapPtr new_message_; PolygonalMapPtr current_message_; @@ -163,4 +163,4 @@ } // namespace ogre_vis -#endif /* OGRE_VISUALIZER_POLYGON_3D_DISPLAY_H_ */ +#endif /* OGRE_VISUALIZER_POLYGONAL_MAP_DISPLAY_H_ */ Modified: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/factory.cpp =================================================================== --- pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/factory.cpp 2009-01-11 22:55:11 UTC (rev 9212) +++ pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/factory.cpp 2009-01-11 22:56:24 UTC (rev 9213) @@ -42,6 +42,7 @@ #include "displays/particle_cloud_2d_display.h" #include "displays/poly_line_2d_display.h" #include "displays/polygonal_map_display.h" +#include "displays/collision_map_display.h" #include "displays/map_display.h" #include "displays/tf_display.h" @@ -62,6 +63,7 @@ manager->registerFactory( ParticleCloud2DDisplay::getTypeStatic(), ParticleCloud2DDisplay::getDescription(), new DisplayFactoryImpl<ParticleCloud2DDisplay>() ); manager->registerFactory( PolyLine2DDisplay::getTypeStatic(), PolyLine2DDisplay::getDescription(), new DisplayFactoryImpl<PolyLine2DDisplay>() ); manager->registerFactory( PolygonalMapDisplay::getTypeStatic(), PolygonalMapDisplay::getDescription(), new DisplayFactoryImpl<PolygonalMapDisplay>() ); + manager->registerFactory( CollisionMapDisplay::getTypeStatic(), CollisionMapDisplay::getDescription(), new DisplayFactoryImpl<CollisionMapDisplay>() ); manager->registerFactory( MapDisplay::getTypeStatic(), MapDisplay::getDescription(), new DisplayFactoryImpl<MapDisplay>() ); manager->registerFactory( TFDisplay::getTypeStatic(), TFDisplay::getDescription(), new DisplayFactoryImpl<TFDisplay>() ); } Modified: pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/visualization_manager.i =================================================================== --- pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/visualization_manager.i 2009-01-11 22:55:11 UTC (rev 9212) +++ pkg/trunk/visualization/ogre_visualizer/src/ogre_visualizer/visualization_manager.i 2009-01-11 22:56:24 UTC (rev 9213) @@ -13,6 +13,7 @@ #include "displays/particle_cloud_2d_display.h" #include "displays/poly_line_2d_display.h" #include "displays/polygonal_map_display.h" +#include "displays/collision_map_display.h" #include "displays/map_display.h" #include "displays/tf_display.h" %} @@ -31,6 +32,7 @@ %include "displays/particle_cloud_2d_display.h" %include "displays/poly_line_2d_display.h" %include "displays/polygonal_map_display.h" +%include "displays/collision_map_display.h" %include "displays/map_display.h" %include "displays/tf_display.h" @@ -52,6 +54,7 @@ %template(createParticleCloud2DDisplay) createDisplay<ogre_vis::ParticleCloud2DDisplay>; %template(createPolyLine2DDisplay) createDisplay<ogre_vis::PolyLine2DDisplay>; %template(createPolygonalMapDisplay) createDisplay<ogre_vis::PolygonalMapDisplay>; + %template(createCollisionMapDisplay) createDisplay<ogre_vis::CollisionMapDisplay>; %template(createMapDisplay) createDisplay<ogre_vis::MapDisplay>; %template(createTFDisplay) createDisplay<ogre_vis::TFDisplay>; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |