(starting a new thread as I did not want to pollute the discussion in
*URDF / SDF in 2.0*)
Disclaimer: I'm not a Collada dev, nor do I have any stock in Khronos or
any entity that would benefit from the spreading of Collada, just an
interested developer. I am however involved in ROS-Industrial, and as
such currently interested in these things.
---
While reading the discussion about perhaps migrating to SDF for ROS2 at
[1] made me wonder whether something like Collada [2] as the main format
for robot (& world) modelling would be interesting.
It is a standardised format () and with the latest version (1.5) has
gained many (if not all) of the things we seem to be looking for in URDF
and / or SDF.
Re-using Nate's bullets from his 'shameless plug' of SDF in [3], but
looking at Collada:
1. closed loop support: yes
2. rich set of parameters: yes (sensors, manipulators, geometry,
shading, textures, etc)
3. world & part modelling: yes
4. auto-updating old files: no (or at least, not that I know, but old
files are parsed by newer parsers just fine)
5. extensible: yes (Collada explicitly supports something called
'extensions', which is basically a special tag ('extra') that allows
storage of information not part of the spec. OpenRAVE uses this
mechanism extensively, see [4] fi)
6. conversion to/from other formats: we already have tools in
robot_model to convert between URDF and Collada [5]. As the format is
used quite a lot in (mobile) game engines, many converters to/from more
traditional mesh formats also exist, as well as support in modelling
tools like 3dsMax, Blender, Maya etc. Granted, that is mostly v1.4, but
URDF never got this far wrt (CAD) vendor support and SDF is also just
starting with this
In addition: ROS1 already supports Collada for a number of things, such
as meshes for URDF based models, but also in robot_model/urdf.
Finally, any custom format (even if it is as /universal/ as urdf ;))
will always need converters that will complicate the process of
modelling a robot / scene for use with ROS. It seems it would be
beneficial to just be able to claim compatibility with an existing
standard and be able to re-use existing tools, experience and communities.
---
What isn't so great about Collada is the fact that it can hardly be
called human readable or writable (something I like(d) about urdf/sdf):
it's essentially lots of XML, and rather verbose at that. Combining
Collada models into a scene -- something rather easy with properly
written xacros -- will most likely require an editor of some kind
because of this.
Another potential issue is the state of the various Collada libraries
out there: support for the more advanced features of 1.5 (although
already more than 7 years old) is not always present, and status of some
of the libraries is a bit unclear.
---
I'm expecting there will be people in our community with much more
experience with Collada, so I'm hoping that they will chime in (and tell
me I'm completely wrong or deluded. Or both).
Gijs
[1]
https://groups.google.com/forum/#!topic/ros-sig-ng-ros/nUvtYnTRQGg
[2]
https://www.khronos.org/collada/
[3]
https://groups.google.com/d/msg/ros-sig-ng-ros/nUvtYnTRQGg/sj2tf7mwDAAJ
[4]
http://openrave.org/docs/0.8.0/collada_robot_extensions/
[5]
http://wiki.ros.org/collada_urdf