Subversion Repositories FlightCtrl

Rev

Rev 189 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 189 Rev 330
Line -... Line 1...
-
 
1
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
2
// Peter Muehlenbrock ("Salvo")
-
 
3
// Definitionen fuer Modul GPS
-
 
4
// Stand 12.10.007
-
 
5
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1
extern signed int GPS_Nick;
6
extern signed int GPS_Nick;
2
extern signed int GPS_Roll;
7
extern signed int GPS_Roll;
3
extern void GPS_Neutral(void);
8
extern void GPS_Neutral(void);
-
 
9
 
-
 
10
extern void Get_Ublox_Msg(uint8_t  rx) ;
-
 
11
//extern short int Get_GPS_data(void);
-
 
12
extern short int Get_Rel_Position(void);
4
extern void GPS_BerechneZielrichtung(void);
13
extern void GPS_Save_Home(void);
-
 
14
extern short int GPS_CRTL(short int cmd);
-
 
15
 
-
 
16
typedef struct {
-
 
17
        unsigned long   utm_itow;       // time of week
-
 
18
        long                    utm_east;       // UTM Ost in cm  
-
 
19
        long                    utm_north;  // UTM Nord in cm    
-
 
20
        long                    utm_alt;        // hoehe in cm
-
 
21
        uint8_t                 utm_zone;       // 
-
 
22
        uint8_t                 utm_hem;        // Hemisphere Indicator 
-
 
23
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok
-
 
24
} NAV_POSUTM_t;
-
 
25
 
-
 
26
typedef struct {
-
 
27
        unsigned long   itow;   // time of week
-
 
28
        uint8_t                 gpsfix_type;// 3=3D Fix  
-
 
29
        uint8_t                 nav_status_flag;
-
 
30
        uint8_t                 nav_diff_status;
-
 
31
        uint8_t                 nav_resevd;
-
 
32
        long                    nav_tff;  // Time to First Fix in ms    
-
 
33
        long                    nav_msss;       // ms since startup
-
 
34
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok
-
 
35
} NAV_STATUS_t;
-
 
36
 
-
 
37
typedef struct {
-
 
38
        unsigned long   itow;            
-
 
39
        long                    speed_n;                // in cm/s  
-
 
40
        long                    speed_e;                // in cm/s  
-
 
41
        long                    speed_alt;              // in cm/s   
-
 
42
        unsigned long   speed_3d;       // in cm/s   
-
 
43
        unsigned long   speed_gnd;      // V ueber Grund in cm/s   
-
 
44
        long                    heading;        // Richtung in deg/10000 
-
 
45
        unsigned long   sacc;           // Speed Genauigkeit in cm/s  
-
 
46
        unsigned long   cacc;           // Richtungsgenauigkeit in deg 
-
 
47
        uint8_t                 status;         // 0: kein gueltiges Paket 1: alles ok  
-
 
48
} NAV_VELNED_t;
-
 
49
 
-
 
50
 
-
 
51
typedef struct {
-
 
52
        long                    utm_east;       // UTM Ost in 10 cm  
-
 
53
        long                    utm_north;  // UTM Nord in 10 cm    
-
 
54
        long                    utm_alt;        // hoehe in 10 cm
-
 
55
        unsigned long   speed_gnd;      // V ueber Grund in 10cm/s  
-
 
56
        unsigned                heading;        // Richtung in Grad   
-
 
57
        uint8_t                 status;         // 0: keine gueltigen Daten 1: alles ok
-
 
58
 
-
 
59
} GPS_ABS_POSITION_t;
-
 
60
 
-
 
61
 
-
 
62
typedef struct { // Struktur fuer Relative GPS Daten (bezogen z.B. auf Home Position)
-
 
63
        int                             utm_east;       // UTM Ost in m  
-
 
64
        int                             utm_north;  // UTM Nord in m    
-
 
65
        uint8_t                 status;         // 0: keine gueltigen Daten 1: alles ok
-
 
66
 
-
 
67
} GPS_REL_POSITION_t;
-
 
68
 
-
 
69
 
-
 
70
extern                          GPS_ABS_POSITION_t gps_act_position;
-
 
71
extern                          GPS_ABS_POSITION_t gps_home_position;
-
 
72
extern                          GPS_REL_POSITION_t gps_rel_act_position;
-
 
73
extern                          GPS_REL_POSITION_t gps_rel_hold_position;
-
 
74
extern short int        gps_state,gps_sub_state;
-
 
75
extern signed int       GPS_hdng_abs_2trgt;
-
 
76
extern signed int       GPS_hdng_rel_2trgt;
-
 
77
extern signed int       GPS_dist_2trgt;
-
 
78
extern signed int       gps_reg_x,gps_reg_y;
-
 
79
extern signed int       GPS_dist_2trgt;
-
 
80
extern unsigned int gps_alive_cnt;
-
 
81
 
-
 
82
//nur provisorisch fuer Debugausgaben
-
 
83
extern signed           hdng_2home,dist_2home; //Richtung und Entfernung zur home Position 
-
 
84
extern long int         dist_flown;
-
 
85
 
-
 
86
// Zustaende der zentralen GPS statemachine
-
 
87
#define GPS_CRTL_IDLE                           0   // 
-
 
88
#define GPS_CRTL_HOLD_ACTIVE            1       //  Lageregelung aktiv
-
 
89
#define GPS_CRTL_HOME_ACTIVE            2       //  Rueckflug zur Basis Aktiv
-
 
90
#define GPS_HOME_FAST_IN_TOL            3       //  Rueckflug: Aktuelle Position innerhalb der Toleranz
-
 
91
#define GPS_HOME_FAST_OUTOF_TOL         4       //  Rueckflug: Aktuelle Position ausserhalb der Toleranz
-
 
92
#define GPS_HOME_RMPDWN_IN_TOL          5       //  Rueckflug: beim Abbremsen Position  innerhalb der Toleranz
-
 
93
#define GPS_HOME_RMPDWN_OUTOF_TOL       6       //  Rueckflug: beim Abbremsen Position  ausserhalb der Toleranz
-
 
94
#define GPS_HOME_IN_TOL                         7       //  Rueckflug: Nahe am Ziel innerhalb der Toleranz
-
 
95
#define GPS_HOME_OUTOF_TOL                      8       //  Rueckflug: Nahe am Ziel ausserhalb der Toleranz
-
 
96
#define GPS_HOME_FINISHED                       9       //  Rueckflug zur Basis abgeschlossen
-
 
97
 
-
 
98
// Kommandokonstanten fuer die zentrale GPS Statemachine
-
 
99
#define GPS_CMD_REQ_INIT                0    // Initialisierung
-
 
100
#define GPS_CMD_STOP                    1    // Lageregelung soll deaktiviert werden
-
 
101
#define GPS_CMD_REQ_HOLD                3    // Lageregelung soll aktiviert werden
-
 
102
#define GPS_CMD_REQ_HOME                4    // Das Heimfliegen soll aktiviert werden
-
 
103
 
-
 
104
// Statusmeldungen  der zentralen GPS statemachine
-
 
105
#define GPS_STST_OK                             0    // Kommando erfolgreich und abgeschlossen
-
 
106
#define GPS_STST_PEND                   1    // Kommando noch nicht komplett durchgefuehrt
-
 
107
#define GPS_STST_ERR                    2    // Fehler
-
 
108
 
-
 
109
// GPS Lageregler
-
 
110
#define GPS_NICKROLL_MAX                40  // Maximaler Einfluss des GPS Lagereglers auf Nick und Roll
-
 
111
#define GPS_DIST_MAX                    400 // Maximal zulaessige Distanz bevor Regelung gestoppt wird (in 10cm)
-
 
112
#define GPS_STICK_HOLDOFF               25      // Wenn der Nick oder Roll Stickwerte groesser sind, wird GPS_HOLD deaktiviert
-
 
113
#define GPS_V                                   8       // Teilerfaktor Regelabweichung zu  Ausgabewert
-
 
114
// Differenzierer Kennwerte fuer von Distanz abhaengige Verstaerkung, abhaengig vom Modus. 
-
 
115
#define GPS_DIFF_NRML_MAX_V     20      //maximale Verstaerkung * 10
-
 
116
#define GPS_DIFF_NRML_MAX_D     30      //Entfernung bei der maximale Verstaerkung erreicht wird in 10cm
-
 
117
#define GPS_DIFF_FAST_MAX_V     15      //maximale Verstaerkung * 10 im Fast mode
-
 
118
#define GPS_DIFF_FAST_MAX_D     50      //Entfernung bei der maximale Verstaerkung erreicht wird in 10cm im Fast mode
-
 
119
// P-Regler Verstaerkung 
-
 
120
#define GPS_PROP_NRML_V                 2       //maximale Verstaerkung * 2
-
 
121
#define GPS_PROP_FAST_V                 2       //maximale Verstaerkung * 2 im Fast mode
-
 
122
 
-
 
123
// GPS G2T /Go to Target Regler
-
 
124
#define GPS_G2T_DIST_MAX_STOP   50      // Ab dieser Entfernung vom Zielpunkt soll die Geschwindigkeit runtergeregelt werden( in 10 cm)
-
 
125
#define GPS_G2T_DIST_HOLD               30      // Ab dieser Entfernung vom Zielpunkt wird mit Minimaler Geschwindigkeit eingeregelt
-
 
126
#define GPS_G2T_V_MAX                   12      // Maximale Geschwindigkeit (in 10cm/0.25 Sekunden) mit der der Sollpunkt geaendert wird.
-
 
127
#define GPS_G2T_V_RAMP_DWN              6       // Geschwindigkeit (in 10cm/0.25ekunden) in der Naehe der Home Position um abzubremsen
-
 
128
#define GPS_G2T_V_MIN                   3       // Minimale (in 10cm/0.25 Sekunden) ganz nahe an Homeposition.
-
 
129
#define GPS_G2T_FAST_TOL                60      // Bei grosser Entfernung vom Ziel: Der Sollwert wird nur geaendert wenn die aktuelle Position nicht mehr als diesem Wert vom Sollwert abweicht
-
 
130
#define GPS_G2T_NRML_TOL                40      // Bei kleiner Entfernung vom Ziel: Der Sollwert wird nur geaendert wenn die aktuelle Position nicht mehr als diesem Wert vom Sollwert abweicht
-
 
131
 
-
 
132