When it comes to building real-world flying vehicles, testing can be arduous and expensive. You have to find somewhere to fly, then you have to contend with environmental conditions and the possibility of damaging your craft if things go wrong. Simulation is a great solution to this, allowing testing without so much risk. To that end, [AlexanderRex] whipped up a platform for testing UAVs from the comfort of your computer desk.
PteroSim is intended as a comprehensive test bench for simulating autonomous aerial vehicles. It can run PX4, ArduPilot, and Betaflight binaries right in the simulator. The autopilot code is given simulated sensor data, and in turn responds with actuator commands, just as it would in a real craft. The simulator runs the flight dynamics using JSBSim, and the resulting scene is rendered in Unreal Engine 5.
If you’ve ever wanted to quickly road test different autopilot settings without heading out to the field or risking hardware, this is a great way to do so. It’s hard to beat the speed of iteration that is possible when testing on the computer on your desk. We’ve featured similar work before, too.

Do an FSX plugin.
Hi Mystick! PteroSim is a standalone app rather than a plugin. We are trying to take the best parts of classic flight simulators and combine them with a modern stack aimed at UAV development.
I don’t see how to run Betaflight binaries anywhere, any lead?
Hi Imlost! We gonna add BetaFlight docs this weekend or next week, we will notify you here :)
One step closer to having a Factorio farm with drones to resupply field equipment.
Hi KC! Actually we thought about developing farm scenarios, its one of our team favorite use cases!
Does PteroSim propagate Unreal Engine environmental effects, such as lighting, weather, occlusions, obstacles, collisions, sensor artifacts, and domain randomization, into the simulated sensor streams consumed by the autonomy stack?
Hi Pawel! Yes for anything rendered. Cameras capture through the full Unreal
post-process chain, so lighting, weather, shadows and occlusion land in the
frame without us propagating them explicitly. Weather switching mid-flight:
https://www.youtube.com/watch?v=4QMwmZL_3O4
IMU/GPS/baro come from the dynamics state with seeded noise models. Lidar is
in active development. Domain randomization isn’t built in yet: the API to
script it exists, but materials and textures aren’t exposed.
Which of those matters most for your stack?