@olivier.michel@fmrico Could you please bring the results of the recent URDF usage survey on the next TSC meeting? I think the findings in it are very serious and they need to be tackled from a coordinated body like TSC. I’m not sure which WG would fit for it, probably Tooling? @MichaelOrlov ?
Some points I see that could be tackled relatively easily:
Create XSD schema for URDF format. Define some URDF versions. Create a proper format description website similar to sdformat.
Create XSD schema (if possible) for Xacro (90% of users use Xacro to generate URDFs)
Provide links in documentation to tools that can help with URDF/SDF generation (the report mentions about 5 plugins to CAD tools, including FOSS Phobos for Blender).
A little bit more complicated but still doable:
(RQT-based?) visualization tool for URDFs, with live reload of the model when the source file(s) change (and automatically Xacroing them if needed). Using RViz for this was considered cumbersome by 65% of users. The tool should ideally also display mesh origins so that it’s easier for users to understand how to position the mesh relative to the link. Writing an integrated URDF/Xacro editor is a completely different league and I’m not suggesting doing that (at least until the previous points are done).
Does anybody see some other low hanging fruit there? Does anybody want to offer help working on these points or at least reviewing REPs/PRs? I could offer a bit of my time irregularly.
To make this a productive discussion we need to figure out who has the time and resources to devote to improving URDF. Ideally the TSC members should spend some time on this issue, however we might need some community members to step up as well.
I honestly don’t know, sorry. If you figure it out, it might be worthwhile to document it somewhere on the ROS 1 wiki and the ROS 2 documentation pages.
The XML schema definition mentioned above works in VSCode with XML plugin (up to the point that the plugin uses too old XSD parser so it can’t uderstand that multiple <collision> tags are ok). It also almost works in CLion/PyCharm (you just have to download the schema manually to a local file and tell the IDE where to find it).
Hi @peci1, thanks for this post, your suggestions are great!
With regards to visualization, I know that people from Fraunhofer IPA have been working on a tool for online visualization of URDF files.
We are also working on a dataset and a URDF analysis tool that can help us better understand some of the issues. Hopefully these results will be ready by end of April.
We are also in contact with some robotics developers that have created a URDF working group on google groups, but I don’t have access to it yet. There are a number of volunteers that are willing to help improve these issues in the working group.
We should probably find a way to combine our efforts for improving URDF.
I am not sure about this. At least in my research field (humanoid robotics) URDF is quite used for simulaton/control/planning. If URDF was only meant/used for visualization, why it should have inertial parameters in it?
I would be really happy to help on this. However, I think the real prerequisite here (that is difficult to do just on the community side) is to transfer the specification from the wiki to a git/GitHub repository, even without any website (see Move URDF specification to a Github repo? · Issue #62 · ros/urdfdom_headers · GitHub). Without that, it is really cumbersome to:
Version the specification. On a git repo, you can add tags/releases, while on the wiki there is not such support
Discuss improvements changes, especially coming from the community. On GitHub there is the usual PR workflow to which most developers are already used, while on the wiki people just modify the specification if they feel confident enough.
I would be happy to handle the wiki → GitHub Markdown conversion, but I think we need to someone that can create a repo for this in the ros organization to green light this, otherwise we just risk to introduce even more fragmentation in different URDF dialects.
Weird. I haven’t worked with humanoids, though… However, I always felt that URDF is not expressive enough to capture all things needed for a simulation. SDF is used for that quite often and it is expressive enough…
Weird. I haven’t worked with humanoids, though… However, I always felt that URDF is not expressive enough to capture all things needed for a simulation. SDF is used for that quite often and it is expressive enough…
To reply a bit more in topic: another aspect I would be happy to help on is to define a simple extension system for URDF, like it has been done for SDF in Custom elements and attributes — Documentation . This would permit developer/organizaton that need some additional data in URDF to easily add it to the URDF they work on, without the need to wait for proposing an extension and discussuing it with all the URDF community/mantainers. Eventually, extension that get widely used across the community can easily made official, and become part of future versions of the URDF specification.