wil3 / gymfc

A universal flight control tuning framework
http://wfk.io/neuroflight/
MIT License
389 stars 99 forks source link

Support worlds with and without gravity #78

Open wil3 opened 4 years ago

wil3 commented 4 years ago

Is your feature request related to a problem? Please describe. Per PR #75 gravity was disabled to reflect results in my thesis. For attitude control, disabling gravity removes any bias that would occur from the aircraft starting in a random orientation and makes training easier. As we've seen in validation with Neuroflight this has not affected transferability.

However this is not ideal as the forces required to achieve the orientation do not accuractly reflect the real world. Furthermore navigation tasks are not fixed in the world about the CoG which would result in the aircraft floating away.

Describe the solution you'd like In the near future we need to be able to support both configurations until we figure an alternative training environment.

Describe alternatives you've considered We either need to maintain two separate world files for each configuration or programmically change the world through the Gazebo cpp API. Leaning towards former as it's easier and already zero gravity is not ideal.

Additional context Perhaps we can experiment with the agent being aware of it's orientation so it can work out the different thrust requirements.

Additional we can look at constraining the envelope further during training. For singlet/doublet inputs e.g., the step environment, we start at rest anyway so this is the least affected. Disabling gravity is most beneficial for continuous environments.