The behavior you’ve described so far matches the expected behavior. The Gazebo simulation is pretty minimal; it runs the flight controller firmware as software-in-the-loop (SIL) and simulates the basic sensors (IMU, barometer, etc.), but that’s about it. It’s intended to help test your basic configuration, and as a starting point for application-specific simulation setups. The graphics are not fancy, and the drone appearing to be halfway underground is not pretty, but is just the way it’s set up.
To test if it’s working, the first thing I’d do would be to start
rosflight_io in UDP mode (so it communicates with the SIL firmware over UDP as opposed to over a serial connection with hardware):
rosrun rosflight rosflight_io _udp:=true
With that running, you should be able to do something like
rostopic hz /imu/data and see that simulated IMU data is being published. The next step after that is to run through the basic flight controller setup steps as if it were real hardware, then connect a simulated RC transmitter (instructions on this page) and see if you can get it flying!
As far as there being
tf published, that’s something I guess we just never implemented since we don’t use it that much ourselves. If that’s a feature that’s useful to you, consider opening an issue or pull request on GitHub.
Does that help?