...
FW5
Q3
FW6
Q4
🏗️ Architecture
AM Structure
Attitude manager will exist as a standalone class. This class acts as the interface for other parts of the system to control the drone, and will contain the code for the control algorithms that are used for different flight modes.
...
In order to support multiple flight modes (control algorithms), a interface class of type ControlAlgorithm is used. Implementing every control algorithm using this interface class as a parent allows attitude manager to run any control algorithm for any aircraft without concern for the actual processing that is required for each.
The output of all control algorithms (control signals to various motors on the aircraft) will also be handled by attitude manager, which will be responsible for mapping the control signals to the correct peripherals. This will be configurable depending on the aircraft model that is being flown. Each control algorithm may also have custom configuration information depending on the aircraft it flies on.
Configuration File
The design of this configuration file is highly dependent on the design of system manager, but in general the following goals should be sought:
Minimize safety and avoid misconfiguration. Use whatever tools are feasible to ensure that the software cannot be incorrectly configured.
The configuration options should be easily understood by someone who does not know the code well, and should be easily extensible.
The specific things that need to be immediately supported in the configuration file that relate to attitude manager include:
What motors are connected to what peripherals
How many motors are connected that will perform a specific action
The tunings (e.g. PIDs) for each control algorithm
The control algorithms that the aircraft supports
control limits (e.g. max roll angle)
AM Input
Inputs to the attitude manager that are used to control the drone will follow the standard inputs that a controller would provide to a drone normally. These are usually labeled Aileron, Elevator, Throttle, Rudder or Roll, Pitch, Throttle, Yaw and each corresponds with an axis of the controller joysticks.
...