It’s possible to define and simulate a Gazebo model with ArduPilot integration entirely from within a Python environment using
pcg_gazebo. This could make it easier to set up simple models for testing and run them automatically as it can be done without having to switch between different languages and tool sets (URDF, SDF, roslaunch etc), although it does use these under the hood.
Where I have found it useful is when you need to make a number of small tweaks to the physics parameters and rerun: I’ve found this is faster using Python. You can also easily make a number of copies of the models with parameter variations (say friction or damping) and then run them together for comparison. It may even be useful for setting up swarms (but I’ve not tried that).
The link below is to a Jupyter notebook for the fan car model and simulation. It probably won’t render well in Discourse but GitHub will render the page (but it’s not executable).