put back old collada_urdf (thanks to Tim Field for noticing this)

This commit is contained in:
rdiankov 2010-12-21 22:47:56 +00:00
parent 9de088ff75
commit e92227f894
2 changed files with 61 additions and 18 deletions

View File

@ -1,7 +1,7 @@
/********************************************************************* /*********************************************************************
* Software License Agreement (BSD License) * Software License Agreement (BSD License)
* *
* Copyright (c) 2010, Willow Garage, Inc., University of Tokyo * Copyright (c) 2010, Willow Garage, Inc.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -32,7 +32,7 @@
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/ *********************************************************************/
/* Authors: Tim Field, Rosen Diankov */ /* Authors: Tim Field */
#ifndef COLLADA_URDF_COLLADA_URDF_H #ifndef COLLADA_URDF_COLLADA_URDF_H
#define COLLADA_URDF_COLLADA_URDF_H #define COLLADA_URDF_COLLADA_URDF_H
@ -50,20 +50,33 @@ public:
ColladaUrdfException(std::string const& what); ColladaUrdfException(std::string const& what);
}; };
enum WriteOptions /** Construct a COLLADA DOM from an URDF file
{ * \param file The filename from where to read the URDF
WO_IgnoreCollisionGeometry = 1, ///< if set, will use only the visual geometry * \param dom The resulting COLLADA DOM
}; * \return true on success, false on failure
/** Construct a COLLADA DOM from an URDF model
\param robot_model The initialized robot model
\param dom The resulting COLLADA DOM
\param writeoptions A combination of \ref WriteOptions
\return true on success, false on failure
*/ */
bool colladaFromUrdfModel(const urdf::Model& robot_model, boost::shared_ptr<DAE>& dom, int writeoptions=0); bool colladaFromUrdfFile(std::string const& file, boost::shared_ptr<DAE>& dom);
/** Construct a COLLADA DOM from a string containing URDF
* \param xml A string containing the XML description of the robot
* \param dom The resulting COLLADA DOM
* \return true on success, false on failure
*/
bool colladaFromUrdfString(std::string const& xml, boost::shared_ptr<DAE>& dom);
/** Construct a COLLADA DOM from a TiXmlDocument containing URDF
* \param xml_doc The TiXmlDocument containing URDF
* \param dom The resulting COLLADA DOM
* \return true on success, false on failure
*/
bool colladaFromUrdfXml(TiXmlDocument* xml_doc, boost::shared_ptr<DAE>& dom);
/** Construct a COLLADA DOM from a URDF robot model
* \param robot_model The URDF robot model
* \param dom The resulting COLLADA DOM
* \return true on success, false on failure
*/
bool colladaFromUrdfModel(urdf::Model const& robot_model, boost::shared_ptr<DAE>& dom);
/** Write a COLLADA DOM to a file /** Write a COLLADA DOM to a file
* \param dom COLLADA DOM to write * \param dom COLLADA DOM to write

View File

@ -1225,14 +1225,44 @@ private:
Assimp::Importer _importer; Assimp::Importer _importer;
}; };
ColladaUrdfException::ColladaUrdfException(std::string const& what) ColladaUrdfException::ColladaUrdfException(std::string const& what)
: std::runtime_error(what) : std::runtime_error(what)
{ {
} }
bool colladaFromUrdfModel(const urdf::Model& robot_model, boost::shared_ptr<DAE>& dom, int writeoptions) bool colladaFromUrdfFile(string const& file, boost::shared_ptr<DAE>& dom) {
{ TiXmlDocument urdf_xml;
ColladaWriter writer(robot_model,writeoptions); if (!urdf_xml.LoadFile(file)) {
ROS_ERROR("Could not load XML file");
return false;
}
return colladaFromUrdfXml(&urdf_xml, dom);
}
bool colladaFromUrdfString(string const& xml, boost::shared_ptr<DAE>& dom) {
TiXmlDocument urdf_xml;
if (urdf_xml.Parse(xml.c_str()) == 0) {
ROS_ERROR("Could not parse XML document");
return false;
}
return colladaFromUrdfXml(&urdf_xml, dom);
}
bool colladaFromUrdfXml(TiXmlDocument* xml_doc, boost::shared_ptr<DAE>& dom) {
urdf::Model robot_model;
if (!robot_model.initXml(xml_doc)) {
ROS_ERROR("Could not generate robot model");
return false;
}
return colladaFromUrdfModel(robot_model, dom);
}
bool colladaFromUrdfModel(urdf::Model const& robot_model, boost::shared_ptr<DAE>& dom) {
ColladaWriter writer(robot_model,0);
dom = writer.convert(); dom = writer.convert();
return dom != boost::shared_ptr<DAE>(); return dom != boost::shared_ptr<DAE>();
} }