ROS package for AEAC flight stack
src/
|- flight_stack/
| |- debug/
| | |- grapher.py // draws a StateMachine diagram
| | |- launch_sever.py // launches the website
| | |- website/
| | | |- index.html // basic webviewer
| |- basic_states.py // basic states
| |- controller.py // the drone controller
| |- flight_stack.py // the main flight stack
| |- logging.py // logging utilities
| |- scripting.py // cli utilities
| |- state.py // state class and state machine
| |- topics.py // topic names
| |- types.py // custom package typesAs a general principle (if you are dealing with the anti-meridian or north/south poles idk)
dlat, dlong: in degrees to move
+dlat = north
-dlat = south
+dlong = east
-dlong = west
Generally this library uses +x as north, +y as east, and +z is up. This makes it the elusive NEU (north east up) and follows the left hand rule (this is because I chose this randomly a long time ago and never changed it, merge requests welcome)
The FlightStack class handles all routines for flying the drone in OFFBOARD mode. Calls Controller methods to setup OFFBOARD, and uses a Machine to handle drone state.
The Controller class handles all mavros communication with the drone. Provides methods and wrappers to control the drones position, speed, etc.
The Machine and State class act as a modular way to model drone behavior. State objects are modular and can be reused in different state machines. A Machine can be embedded in another Machine to model more complex behaviors.