Collada as /the/ modelling format in ROS2?

335 views
Skip to first unread message

G.A. vd. Hoorn - 3ME

unread,
Dec 22, 2015, 10:48:41 AM12/22/15
to ROS SIG NG ROS
(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

Nate Koenig

unread,
Dec 23, 2015, 3:56:02 PM12/23/15
to ROS SIG NG ROS
The concept of Collada is good, but the implementation is terrible. Collada's specification is overly complex, with multiple mechanisms to achieve the same result. The documentation is poor, and the specification is ambiguous. As a result, almost every Collada exporter/importer behaves differently and/or doesn't implement the full spec.

Some other issues with Collada:

* The range of sensors is limited to a 2D camera.
* I think the range of joints is very limited (possibly just revolute??).
* The concept of arbitrary extensions is a poor design choice. While arbitrary data may seem like a good idea, it really means everyone has a different format. If Collada was used in ROS, I imagine a set of extensions would have to be agreed upon. There is also no agreed upon way to handle extensions. For example, you may add an extension to a model, and then edit the model in Blender. The model may or may not retain your extension when saved.

I believe Collada is used in many applications because it's one the only 3D file formats that is open and capable of representing complex scenes. X3D is another, but I haven't seen widespread adoption.

Not to be overly dramatic, but I would avoid Collada like the plague.

-nate

Rosen Diankov

unread,
Dec 23, 2015, 10:46:43 PM12/23/15
to ROS SIG NG ROS
Hi all,

I just joined the group in order to reply to this interesting thread. Wow, plague is a strong word ;0)
Apparently a lot of roboticists are interested in using something standard that doesn't change and people can agree upon at least the basic data, and collada fits a lot of these requirements.

Just a little bit of background on me: I've been using collada (as part of openrave) since early 2009, so 6+ years now. I'm also using it fully and with success at Mujin, a robotics company I founded 4 years ago (http://mujin.co.jp/en); a small part of Mujin products is to provide a controller running a webstack that allows editing and visualization of robot scenes using collada. I've written collada parsers for several robotics libraries including helping to write the current urdf->collada (and collada->urdf) parsers. Once I got over the initial learning curve (yes it took a couple of months), I started writing robotics extensions for manipulators, sensors, actuators, etc in the same format as collada, which you can find the latest version (0.3.6) at

https://github.com/rdiankov/openrave/blob/master/docs/source/collada_robot_extensions.rst

I also maintain the collada-dom simple c++ parser  on github:

https://github.com/rdiankov/collada-dom/


I can tell you that using collada has been great. My favorite thing about it is actually the extensions: there is a well defined way of extending the format without breaking backward compatibility. This has saved so much time in the past because if I want to change a way to represent a particular piece of data, I can always maintain backward compatibility to do it.

Using the robot spec, we can specify any format of sensors. Right now I've written ones for 2d/3d laser and camera, but in the end its just XML that follows certain collada conventions.

Collada supports complex joint linkages (revolute and prismatic) and you can specify equations for any closed relationships using mathml.

Collada has a nice external referencing scheme that allows us to maintain the database of robots separate from the scenes that instantiate them.

I agree that many collada parsers don't support the full spec, but that doesn't prevent openrave and mujin from following the spec and using collada as a ways to save robot files in their ecosystems.

Right now openrave maintains a set of robots (that are publicly disclosable)  here:

https://github.com/rdiankov/collada_robots

They are in zipped xml format (zae)
Mujin has also succeeded in convincing one robot maker, Densowave, in distributing their robot files in collada format. Actually Densowave is currently modifying their proprietary software to export to collada directly. Hopefully we can succeed in other robot makers.

There's also a group called AutomationML that standardizes on collada for 3D exchange.

https://www.automationml.org/o.red.c/home.html

Their membership list includes ABB, Kuka, Mitsubishi Electric, etc

https://www.automationml.org/o.red.c/mitglieder.html

It did take time for Mujin to build up its infrastructure to integrate with collada, and the learning curve is high, but now this done, every week I find myself glad of the decision and i do see headaches saved because of it.

Of course, the ROS community has different requirements than an industrial robotics startup like Mujin, and I definitely don't understand the entire spectrum of applications that ROS is supporting, so perhaps collada is not the best choice for ROS, perhaps I shouldn't even be replying to this thread if not being asked by a friend, but it's definitely been great for industrial robotics.

cheers,


2015年12月24日木曜日 5時56分02秒 UTC+9 Nate Koenig:

Shawn Schaerer

unread,
Dec 23, 2015, 11:50:29 PM12/23/15
to ROS SIG NG ROS
Rosen,  thank you for joining this discussion.  I brought up collada on the other thread because of its use in OpenRAVE.
I like the Collada format (mostly), the only thing I do not like about it is that the mesh data is embedded in it.  there might be a confusion if we have a Collada robot and scene in one file and then separate mesh collada files.  If might get even more confusing if there is a mix of meshes and robots / scenes spread across multiple collada files.  How would one be able to understand what is what?  if we had a clear way of distinguishing this, then that would be great.


Shawn
BTW:  I am glad that you joined this discussion and yes you should be participating :)
Reply all
Reply to author
Forward
0 new messages