Finite State Machines ===================== Each task in our main program is implemented as a finite state machine (FSM), structured using a switch-case statement within a while loop. At any given time, an FSM resides in a specific state, executing its corresponding task. Since the main program can only be in one state and execute one task at a time, scheduler priorities and periods are carefully optimized to run as efficiently as possible. The FSMs are implemented in the following tasks: Motor FSM ---------- .. figure:: ./image/MotorStateMachine.png :alt: Motor FSM :align: center Comms FSM ---------- .. figure:: ./image/ComsStateDiagram.png :alt: Comms FSM :align: center Collect FSM ----------- .. figure:: ./image/CollectorStateMachine.png :alt: Collect FSM :align: center IR Sensor FSM ------------- .. figure:: ./image/IRStateMachine.png :alt: IR Sense FSM :align: center Motor Control FSM ----------------- .. figure:: ./image/Mot_Controller_State_Machine.png :alt: Motor Control FSM :align: center