Project Proposal: Visual Gazebo robot model generator

The problem:
If your are like me, you’ve invested an insane amount of hours constructing Gazebo robot models for integration with ROS. Creating a new minimal working robot model often involves recycling old projects or utilizing online examples. This, however, proves time-consuming due to various reasons:

  • establishing a minimal model requires cleaning out all the junk code from recycled projects
  • need to always relearn/remember Gazebo and ROS plugins specific problems and all the weird ways of handling them
  • encountering a slow turnaround time, as even a simple coordinate change in URDF necessitates restarting Gazebo, which can be time-intensive even on high-performance computers.
  • Gazebos fairly vague and unclear of defining errors are not helping
  • remembering all the standards when creating the Gazebo and description packages inside of the ROS workspace
  • I could go on and on, you get the idea…

Idea:
A potential solution could be to a user-friendly tool that streamlines the establishment of a minimal working example by generating fully standardized and ROS-compatible packages for the most common ROS robots (e.g., differential drive, Ackermann, simple arms). Visualizing the tool, one might imagine a user interface where, by selecting a robot type and adjusting parameters, users can instantly preview the rendered robot. I imagine the tool could look something like this:
output

While the demo focuses on basic design adjustments, future iterations could include adding sensors (e.g., lidars, cameras, buttons) or even 3D renders of the robot. Once satisfied with the design, users could generate and download two ROS packages (Gazebo and description) that can be seamlessly imported into their ROS workspace. The exported robot would already include implemented links, joints, controllers, and macros, making it readily executable.

This would not completely eliminate the mentioned problems above, but would at least drastically lower the time needed to get a minimal working example upon which the user can build extensions. This would also lower the entry barrier for beginners and provide a solid, standardized template for making simulated robots.

I am curious to know if the community is aware of existing tools that address similar challenges. Additionally, I am keen to understand if others in the community encounter similar problems in Gazebo robot modeling (or ones that haven’t been mentioned here). Feedback about usefulness of such a tool along with any other comments would be very welcome.

Thanks :slight_smile:

4 Likes

Could you please provide a link to your project code?

As this project is still in the propoposal stage the code for actually generating a gazebo package does not exist. Im still validating the idea and if its even worth starting to code.

I managed to code an MVP for this, this is how it looks like:

output

Here is the link to the code: GitHub - JanezCim/robosimgen if anyone is interested in trying it out. Any feedback would be appreciated.

1 Like

I did something similar for the Navigation University workshop at ROSCon last year.

I certainly love the idea of having live visual updates of your model and convenient ways to build them out.

though I’d say for myself at least, the biggest gap with existing tools would be if it supported meshes and basic mesh manipulation. I know there are some CAD → URDF/SDF converters out there, but sometimes you need to start from a mesh (e.g. for external models), and I’ve always found it really tedious to use some 3rd party software, like meshlab or blender, to realign or scale or clean up meshes, save them, then reload my URDF do see if I did a good job nailing the alignment in my model. Being able to do that in the context of an assembly (perhaps with ways of estimating diameter or axes of round features) would be hugely beneficial. Not saying it would be easy… but a guy can dream…

1 Like