I am working on a project in which a drone needs to learn how to fly. I am using NEAT.
For the first experiment, I want the drone to learn how to hover inside a $3 \times 3 \times 3$ meters box. My input is 6 sensors for each direction. The output is the same as in a drone, so thrust (normalized to 0-1), aileron, rudder, and elevator.
Initially, I just used the time as the fitness; and, after many generations, it hovers inside the box. However, it only really learns to use the thrust in the function of up and down sensors, but it never learns to react to input from other sensors because they are not directly connected to the fitness.
So, what can I do to improve the performance of my model? Should the drone be put to fly a track with obstacles? Should I have some more input data? Should I define fitness to better reflect good reactions for input sensor data?
NOTE: the drone uses relatively accurate physics, I am able to do tasks using a controller.