Hello ROS community!
A few years ago I helped open source a URDF Loader library for both Unity and three.js along with an accompanying webpage to view URDF files with drag-and-drop functionality. It was recently found on Twitter and I was told I should share it here!
The repo includes example models of JPL’s ATHLETE robot in a variety of configurations, so a big thanks to the ATHLETE team for supporting this, too.
Web Based URDF Viewer
You can view and use the web viewer here! The page should work on any platform, though folder-drag-and-drop is only available in chrome, and can be used to preview a URDF file. Of course you can use the loader as dependency, as well, to load models into your own applications.
A less advertised feature of the web tool is that you can also drag to manipulate any single degree of freedom joints in the system:
At JPL we’ve adopted the URDF format for some non-ROS-based robots to tap into a de facto standard and easily swap between robot models. Internally we are building a variety of web-based operations and validation tools for upcoming missions including the Mars 2020 Perseverance rover and will be using this library to help view and drive our rover. We hope to open source more of our work for these tools to share with the community in the future!
I should use this moment to say that there are a few shortcomings of the URDF spec that we would love to see addressed in the future that other formats do not address or are otherwise unsuitable for. Specifically support for parallel joints and support for more geometry formats. We’ve been able to work around these limitations for the moment but it would be great to see URDF evolve into a more universal description (heh) for use inside and outside of ROS to more fully describe the types of kinematic systems that are often used in hardware. As much as possible we want to avoid writing our own new file formats and variants. We’d love to discuss more if there’s a proper platform for it!
I’ve seen quite a few web-based robotics tools and projects take advantage of the loader and I know our team is excited to see what people do with it and how people benefit from our work. I’d be elated to see how people use this so feel free to share your use cases, submit issues and feature requests, and share if you’re able to use it! Please enjoy!
Thank you so much for all publicly available work everyone has put into the community! I hope everyone is staying safe.