Work in progress...

Dependencies:   ESC FreeIMU mbed-rtos mbed

Experiment - work in progress...

state.h

Committer:
MatteoT
Date:
2013-10-15
Revision:
2:7439607ccd51
Child:
3:5e7476bca25f

File content as of revision 2:7439607ccd51:

#include <stdint.h>

//this struct must be the same for all the programs communicating with the Quad.
struct QuadState;
struct QuadState {
    float    requested_throttle_1; //negative if not requested
    float    requested_throttle_2;
    float    requested_throttle_3;
    float    requested_throttle_4;

    float    actual_throttle_1;
    float    actual_throttle_2;
    float    actual_throttle_3;
    float    actual_throttle_4;
    
    float    actual_throttle_dt;
    float    average_throttle_dt;
    float    average_throttle_dt_k;
    
    float    actual_rx_delta_ms;
    float    actual_rx_wait_ms;
    
    float    estimated_altitude;
    float    estimated_rotation_q1;
    float    estimated_rotation_q2;
    float    estimated_rotation_q3;
    float    estimated_rotation_q4;
    
    float    estimated_position_x;
    float    estimated_position_y;
    float    estimated_position_z;
    float    estimated_rotation_y;
    float    estimated_rotation_p;
    float    estimated_rotation_r;
    
    float    target_position_x; //see _isRequired members
    float    target_position_y;
    float    target_position_z;
    float    target_rotation_y;
    float    target_rotation_p;
    float    target_rotation_r;
    
    bool     target_position_x_isRequired;
    bool     target_position_y_isRequired;
    bool     target_position_z_isRequired;
    bool     target_rotation_y_isRequired;
    bool     target_rotation_p_isRequired;
    bool     target_rotation_r_isRequired;
    
    bool     ZERO_ALL_MOTORS_NOW__DANGER;
    
    
    void reset (){
    
        requested_throttle_1 = -1;
        requested_throttle_2 = -1;
        requested_throttle_3 = -1;
        requested_throttle_4 = -1;

        actual_throttle_1 = 0;
        actual_throttle_2 = 0;
        actual_throttle_3 = 0;
        actual_throttle_4 = 0;
    
        actual_throttle_dt = 0.01;
        average_throttle_dt = 0.01;
        average_throttle_dt_k = 0.0125;
    
        actual_rx_delta_ms = 0.1;
        actual_rx_wait_ms = 0.1;
    
        estimated_altitude = 0;
        estimated_rotation_q1 = 0;
        estimated_rotation_q2 = 0;
        estimated_rotation_q3 = 0;
        estimated_rotation_q4 = 0;
    
        estimated_position_x = 0;
        estimated_position_y = 0;
        estimated_position_z = 0;
        estimated_rotation_y = 0;
        estimated_rotation_p = 0;
        estimated_rotation_r = 0;
    
        target_position_x = 0;
        target_position_y = 0;
        target_position_z = 0;
        target_rotation_y = 0;
        target_rotation_p = 0;
        target_rotation_r = 0;
    
        target_position_x_isRequired = false;
        target_position_y_isRequired = false;
        target_position_z_isRequired = false;
        target_rotation_y_isRequired = false;
        target_rotation_p_isRequired = false;
        target_rotation_r_isRequired = false;
        
        ZERO_ALL_MOTORS_NOW__DANGER = false;
    }
};

struct QuadCommandHeader; //to be used with TCP (or UDP for control signals)
struct QuadCommandHeader {
  uint8_t   xor_name;
  uint8_t   xor_name_repeat;
  uint32_t  payload_length;
};