00001 /* 00002 * Copyright (c) 2011, Nico Blodow <blodow@cs.tum.edu> 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions are met: 00007 * 00008 * * Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * * Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * * Neither the name of the Intelligent Autonomous Systems Group/ 00014 * Technische Universitaet Muenchen nor the names of its contributors 00015 * may be used to endorse or promote products derived from this software 00016 * without specific prior written permission. 00017 * 00018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00021 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00022 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00023 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00024 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00025 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00026 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00027 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00028 * POSSIBILITY OF SUCH DAMAGE. 00029 */ 00030 00031 #ifndef REALTIME_URDF_FILTER_URDF_RENDERER_H_ 00032 #define REALTIME_URDF_FILTER_URDF_RENDERER_H_ 00033 00034 #include <urdf/model.h> 00035 #include <tf/transform_listener.h> 00036 #include <realtime_urdf_filter/renderable.h> 00037 00038 // forward declares 00039 namespace ros {class NodeHandle;} 00040 00041 namespace realtime_urdf_filter 00042 { 00043 00044 class URDFRenderer 00045 { 00046 public: 00047 URDFRenderer (std::string model_description, std::string tf_prefix, std::string cam_frame, std::string fixed_frame, tf::TransformListener &tf); 00048 void render (); 00049 00050 protected: 00051 void initURDFModel (); 00052 void loadURDFModel (urdf::Model &descr); 00053 void process_link (boost::shared_ptr<urdf::Link> link); 00054 void update_link_transforms (); 00055 00056 // urdf model stuff 00057 std::string model_description_; 00058 std::string tf_prefix_; 00059 00060 // camera stuff 00061 std::string camera_frame_; 00062 std::string fixed_frame_; 00063 00064 // rendering stuff 00065 std::vector<boost::shared_ptr<Renderable> > renderables_; 00066 tf::TransformListener &tf_; 00067 }; 00068 00069 } // end namespace 00070 00071 #endif