Subversion Repositories FlightCtrl

Rev

Rev 190 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 190 Rev 209
1
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
// Peter Muehlenbrock ("Salvo")
2
// Peter Muehlenbrock ("Salvo")
3
// Definitionen fuer Modul GPS
3
// Definitionen fuer Modul GPS
4
// Stand 19.9.007
4
// Stand 2.10.007
5
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6
extern signed int GPS_Nick;
6
extern signed int GPS_Nick;
7
extern signed int GPS_Roll;
7
extern signed int GPS_Roll;
8
extern void GPS_Neutral(void);
8
extern void GPS_Neutral(void);
9
 
9
 
10
extern void Get_Ublox_Msg(uint8_t  rx) ;
10
extern void Get_Ublox_Msg(uint8_t  rx) ;
11
//extern short int Get_GPS_data(void);
11
//extern short int Get_GPS_data(void);
12
extern short int Get_Rel_Position(void);
12
extern short int Get_Rel_Position(void);
13
extern void GPS_Save_Home(void);
13
extern void GPS_Save_Home(void);
14
extern short int GPS_CRTL(short int cmd);
14
extern short int GPS_CRTL(short int cmd);
15
 
15
 
16
typedef struct {
16
typedef struct {
17
        unsigned long   utm_itow;       // time of week
17
        unsigned long   utm_itow;       // time of week
18
        long                    utm_east;       // UTM Ost in cm  
18
        long                    utm_east;       // UTM Ost in cm  
19
        long                    utm_north;  // UTM Nord in cm    
19
        long                    utm_north;  // UTM Nord in cm    
20
        long                    utm_alt;        // hoehe in cm
20
        long                    utm_alt;        // hoehe in cm
21
        uint8_t                 utm_zone;       // 
21
        uint8_t                 utm_zone;       // 
22
        uint8_t                 utm_hem;        // Hemisphere Indicator 
22
        uint8_t                 utm_hem;        // Hemisphere Indicator 
23
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok
23
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok
24
} NAV_POSUTM_t;
24
} NAV_POSUTM_t;
25
 
25
 
26
typedef struct {
26
typedef struct {
27
        unsigned long   itow;   // time of week
27
        unsigned long   itow;   // time of week
28
        uint8_t                 gpsfix_type;// 3=3D Fix  
28
        uint8_t                 gpsfix_type;// 3=3D Fix  
29
        uint8_t                 nav_status_flag;
29
        uint8_t                 nav_status_flag;
30
        uint8_t                 nav_diff_status;
30
        uint8_t                 nav_diff_status;
31
        uint8_t                 nav_resevd;
31
        uint8_t                 nav_resevd;
32
        long                    nav_tff;  // Time to First Fix in ms    
32
        long                    nav_tff;  // Time to First Fix in ms    
33
        long                    nav_msss;       // ms since startup
33
        long                    nav_msss;       // ms since startup
34
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok
34
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok
35
} NAV_STATUS_t;
35
} NAV_STATUS_t;
36
 
36
 
37
typedef struct {
37
typedef struct {
38
        unsigned long   itow;            
38
        unsigned long   itow;            
39
        long                    speed_n;                // in cm/s  
39
        long                    speed_n;                // in cm/s  
40
        long                    speed_e;                // in cm/s  
40
        long                    speed_e;                // in cm/s  
41
        long                    speed_alt;              // in cm/s   
41
        long                    speed_alt;              // in cm/s   
42
        unsigned long   speed_3d;       // in cm/s   
42
        unsigned long   speed_3d;       // in cm/s   
43
        unsigned long   speed_gnd;      // V ueber Grund in cm/s   
43
        unsigned long   speed_gnd;      // V ueber Grund in cm/s   
44
        long                    heading;        // Richtung in deg/10000 
44
        long                    heading;        // Richtung in deg/10000 
45
        unsigned long   sacc;           // Speed Genauigkeit in cm/s  
45
        unsigned long   sacc;           // Speed Genauigkeit in cm/s  
46
        unsigned long   cacc;           // Richtungsgenauigkeit in deg 
46
        unsigned long   cacc;           // Richtungsgenauigkeit in deg 
47
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok  
47
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok  
48
} NAV_VELNED_t;
48
} NAV_VELNED_t;
49
 
49
 
50
 
50
 
51
typedef struct {
51
typedef struct {
52
        long                    utm_east;       // UTM Ost in 10 cm  
52
        long                    utm_east;       // UTM Ost in 10 cm  
53
        long                    utm_north;  // UTM Nord in 10 cm    
53
        long                    utm_north;  // UTM Nord in 10 cm    
54
        long                    utm_alt;        // hoehe in 10 cm
54
        long                    utm_alt;        // hoehe in 10 cm
55
        unsigned long   speed_gnd;      // V ueber Grund in 10cm/s  
55
        unsigned long   speed_gnd;      // V ueber Grund in 10cm/s  
56
        unsigned                heading;        // Richtung in Grad   
56
        unsigned                heading;        // Richtung in Grad   
57
        uint8_t                 status;         // 0: keine gueltigen Daten 1: alles ok
57
        uint8_t                 status;         // 0: keine gueltigen Daten 1: alles ok
58
 
58
 
59
} GPS_ABS_POSITION_t;
59
} GPS_ABS_POSITION_t;
60
 
60
 
61
 
61
 
62
typedef struct { // Struktur fuer Relative GPS Daten (bezogen z.B. auf Home Position)
62
typedef struct { // Struktur fuer Relative GPS Daten (bezogen z.B. auf Home Position)
63
        int                             utm_east;       // UTM Ost in m  
63
        int                             utm_east;       // UTM Ost in m  
64
        int                             utm_north;  // UTM Nord in m    
64
        int                             utm_north;  // UTM Nord in m    
65
        uint8_t                 status;         // 0: keine gueltigen Daten 1: alles ok
65
        uint8_t                 status;         // 0: keine gueltigen Daten 1: alles ok
66
 
66
 
67
} GPS_REL_POSITION_t;
67
} GPS_REL_POSITION_t;
68
 
68
 
69
 
69
 
70
extern GPS_ABS_POSITION_t gps_act_position;
70
extern GPS_ABS_POSITION_t gps_act_position;
71
extern GPS_ABS_POSITION_t gps_home_position;
71
extern GPS_ABS_POSITION_t gps_home_position;
72
extern GPS_REL_POSITION_t gps_rel_act_position;
72
extern GPS_REL_POSITION_t gps_rel_act_position;
73
extern GPS_REL_POSITION_t gps_rel_hold_position;
73
extern GPS_REL_POSITION_t gps_rel_hold_position;
74
extern unsigned int cnt0,cnt1,cnt2;
-
 
75
extern short int gps_state;
74
extern short int gps_state;
76
extern signed int GPS_hdng_abs_2trgt;
75
extern signed int GPS_hdng_abs_2trgt;
77
extern signed int GPS_hdng_rel_2trgt;
76
extern signed int GPS_hdng_rel_2trgt;
78
extern signed int GPS_dist_2trgt;
77
extern signed int GPS_dist_2trgt;
79
extern signed int gps_reg_x,gps_reg_y;
78
extern signed int gps_reg_x,gps_reg_y;
80
extern signed int GPS_dist_2trgt;
79
extern signed int GPS_dist_2trgt;
81
extern unsigned int gps_alive_cnt;
80
extern unsigned int gps_alive_cnt;
82
 
81
 
83
// Zustaende der zentralen GPS statemachine
82
// Zustaende der zentralen GPS statemachine
84
#define GPS_CRTL_IDLE                   0    // 
83
#define GPS_CRTL_IDLE                   0    // 
85
#define GPS_CRTL_HOLD_ACTIVE    1        //  Lageregelung aktiv
84
#define GPS_CRTL_HOLD_ACTIVE    1        //  Lageregelung aktiv
86
#define GPS_CRTL_HOME_ACTIVE    2        //  Rueckglug zur Basis Aktiv
85
#define GPS_CRTL_HOME_ACTIVE    2        //  Rueckglug zur Basis Aktiv
87
 
86
 
88
// Kommandokonstanten fuer die zentrale GPS statemachine
87
// Kommandokonstanten fuer die zentrale GPS statemachine
89
#define GPS_CMD_REQ_INIT                0    // Initialisierung
88
#define GPS_CMD_REQ_INIT                0    // Initialisierung
90
#define GPS_CMD_STOP                    1    // Lageregelung soll deaktiviert werden
89
#define GPS_CMD_STOP                    1    // Lageregelung soll deaktiviert werden
91
#define GPS_CMD_REQ_HOLD                3    // Lageregelung soll aktiviert werden
90
#define GPS_CMD_REQ_HOLD                3    // Lageregelung soll aktiviert werden
92
#define GPS_CMD_REQ_HOME                4    // Das Heimfliegen soll aktiviert werden
91
#define GPS_CMD_REQ_HOME                4    // Das Heimfliegen soll aktiviert werden
93
 
92
 
94
// Statusmeldungen  der zentralen GPS statemachine
93
// Statusmeldungen  der zentralen GPS statemachine
95
#define GPS_STST_OK                             0    //  Kommando erfolgreich und abgeschlossen
94
#define GPS_STST_OK                             0    // Kommando erfolgreich und abgeschlossen
96
#define GPS_STST_PEND                   1    //  Kommando noch nicht komplett durchgefuehrt
95
#define GPS_STST_PEND                   1    // Kommando noch nicht komplett durchgefuehrt
97
#define GPS_STST_ERR                    2    //  Fehler
96
#define GPS_STST_ERR                    2    // Fehler
98
 
97
 
99
// GPS Lageregler
98
// GPS Lageregler
100
#define GPS_NICKROLL_MAX                30  //Maximaler Einfluss des GPS Lagereglers auf Nick und Roll
99
#define GPS_NICKROLL_MAX                30  // Maximaler Einfluss des GPS Lagereglers auf Nick und Roll
101
#define GPS_DIST_MAX                    500 //Maximal zulaessige Distanz bevor Regelung gestoppt wird (in 10cm)
-
 
102
//Salvo 16.9.2007 GPS_STICK_HOLDOFF ***************
-
 
103
// Laut Datenblatt sind die Werte ueber Zeit und Temperatur sehr stabil. 
100
#define GPS_DIST_MAX                    300 // Maximal zulaessige Distanz bevor Regelung gestoppt wird (in 10cm)
104
#define GPS_STICK_HOLDOFF 25 // Wenn der Nick oder Roll groesser ist, wird GPS_HOLD deaktiviert
101
#define GPS_STICK_HOLDOFF               25      // Wenn der Nick oder Roll Stickwerte groesser sind, wird GPS_HOLD deaktiviert
105
 
102