The idea was to make a 3D animated simulation of a drone flying in a realistic urban setting, such as the city of San Francisco. The simulation loads a realistic 3D scene of an existing place available on Google Earth with obstacles such as buildings and trees. The challenge was to make the drone path realistic: i.e. follow certain rules and constraints in calculating the course while being fast (as it flies). The project explores different algorithms for path planning and compares their tradeoffs. The game engine automatically computes the flight path and displays flight targets on the screen as the drone flies. The program outputs a video taken from the point of view of the drone to show a realistically rendered scene. We can tell the drone where to fly (which points of interest it should fly by) and take a video from a specific point of view.
Additionally, we implemented animations of the drone flying, turning, etc, and of the rotors on each thruster. Several virtual cameras follow the path of the drone as it flies, including a first-person view from the drone itself.
The most challenging part of this project would be to achieve path planning and animation that is realistic, fast, and accurate. All team members had little experience with animation, so learning the basics of Unreal Engine and animation in the allotted time will be a challenge.
We created a 3D simulation of a drone flying through a realistic environment. We were be able to set and change parameters of the simulations, such as obstacles to avoid, the speed of the drone, and where the drone should fly by. As a final result, we produced a video in which we show the drone flying along a path as well as colliding with obstacles in the scene. We build our simulation in Unreal Engine 5 in C++ and used Python for path planning algorithms to precompute drone paths.
We hope this simulation helps people flying real drones plan a path. Ideally, we would like to compare our simulated fly path to a real drone (if we can get one).
Open source software:
Open source GitHub code: