This page details the high-level design behind the autopilot code.



TODO: draw better state machines, write better descriptions and update things to match what was dicussed during the last meeting.


Path manager

Attitude/airspeed manager


Sensor interfaces

void Sensor_Init(void);


void Sensor_BeginMeasuring(void);


SensorStatus_t Sensor_GetResult(SensorStruct_t *SensorStruct);



Where Sensor status should be 1 of:


Some notes:

RTOS

The main autopilot systems are built on FreeRTOS, an open-source Real-Time Operating System. FreeRTOS gives us the ability to run multiple concurrent tasks on a single embedded system, each of which has a priority and can "block" for a period of time while they wait for data. At any given time, the highest priority task that is not blocking will be running.

A few notes about developing for real-time systems:

Autopilot Drivers

Required:

Optional:

Safety Drivers

Required:

Autopilot Logic

Required:

Optional:

Safety Logic

Required: