API+Doc review

Proposer: Tim

Present at review:

  • Eitan
  • Wim

urdf_to_collada tool

The urdf_to_collada command-line tool takes an URDF file and converts it to a COLLADA document:

$ ./urdf_to_collada
Usage: urdf_to_collada input.urdf output.dae

An example of a successful export:

$ bin/urdf_to_collada test/pr2.urdf test/pr2.dae
Warning: geometry type BOX of link base_footprint not exported
Warning: geometry type BOX of link base_laser_link not exported
Warning: geometry type BOX of link double_stereo_link not exported
Warning: geometry type BOX of link head_plate_frame not exported
Warning: geometry type BOX of link high_def_frame not exported
Warning: geometry type CYLINDER of link high_def_optical_frame not exported
...
Warning: geometry type BOX of link wide_stereo_link not exported

Document successfully written to test/pr2.dae

An example of an unsuccessful export:

$ bin/urdf_to_collada test/pr2.urdf /usr/pr2.dae
Warning: geometry type BOX of link base_footprint not exported
Warning: geometry type BOX of link base_laser_link not exported
Warning: geometry type BOX of link double_stereo_link not exported
Warning: geometry type BOX of link head_plate_frame not exported
Warning: geometry type BOX of link high_def_frame not exported
Warning: geometry type CYLINDER of link high_def_optical_frame not exported
...
Warning: geometry type BOX of link wide_stereo_link not exported
I/O error : Permission denied
I/O error : Permission denied
error : xmlNewTextWriterFilename : cannot open uri

Error converting document: daeLIBXMLPlugin::write(file:/usr/pr2.dae) failed

collada_urdf API

The API follows the kdl_parser API. Functions exist for constructing a COLLADA document from an URDF from a variety of sources: file, string, XML document, or Model object.

A colladaToFile function writes the DOM object to disk in the COLLADA XML format.

No exceptions are thrown: errors are output via ROS_ERROR and success/failure is indicated by the boolean return value.

   1 namespace collada_urdf {
   2 
   3 /** Construct a COLLADA DOM from an URDF file
   4  * \param file The filename from where to read the URDF
   5  * \param dom The resulting COLLADA DOM
   6  * \return true on success, false on failure
   7  */
   8 bool colladaFromUrdfFile(std::string const& file, boost::shared_ptr<DAE>& dom);
   9 
  10 /** Construct a COLLADA DOM from a string containing URDF
  11  * \param xml A string containing the XML description of the robot
  12  * \param dom The resulting COLLADA DOM
  13  * \return true on success, false on failure
  14  */
  15 bool colladaFromUrdfString(std::string const& xml, boost::shared_ptr<DAE>& dom);
  16 
  17 /** Construct a COLLADA DOM from a TiXmlDocument containing URDF
  18  * \param xml_doc The TiXmlDocument containing URDF
  19  * \param dom The resulting COLLADA DOM
  20  * \return true on success, false on failure
  21  */
  22 bool colladaFromUrdfXml(TiXmlDocument* xml_doc, boost::shared_ptr<DAE>& dom);
  23 
  24 /** Construct a COLLADA DOM from a URDF robot model
  25  * \param robot_model The URDF robot model
  26  * \param dom The resulting COLLADA DOM
  27  * \return true on success, false on failure
  28  */
  29 bool colladaFromUrdfModel(urdf::Model const& robot_model, boost::shared_ptr<DAE>& dom);
  30 
  31 /** Write a COLLADA DOM to a file
  32  * \param dom COLLADA DOM to write
  33  * \param file The filename to write the document to
  34  * \return true on success, false on failure
  35  */
  36 bool colladaToFile(boost::shared_ptr<DAE> dom, std::string const& file);
  37 
  38 }

Question / concerns / comments

Enter your thoughts on the API and any questions / concerns you have here. Please sign your name. Anything you want to address in the API review should be marked down here before the start of the meeting.

  • Eitan
    • It would be useful to have a function where you get a Collada DOM object back rather than writing a file.
      • TF: done
    • It might also be nice to be able to convert the other way round... going from Collada objects and files to URDF (This isn't really a doc related concern and probably won't get done, but I just wanted to note it)
      • TF: noted
    • Otherwise, seems pretty good and simple.
  • Wim

Meeting agenda

To be filled out by proposer based on comments gathered during API review period

Conclusion

Package status change mark change manifest)

  • /!\ Action items that need to be taken.

  • {X} Major issues that need to be resolved


Wiki: collada_urdf/Reviews/2010-04-23_API_and_Doc_Review (last edited 2011-06-22 16:25:14 by Yiping Liu)