Subversion Repositories NaviCtrl

Rev

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

Rev 74 Rev 89
Line 101... Line 101...
101
        s32 PID_Limit;
101
        s32 PID_Limit;
102
        u32 BrakingDuration;
102
        u32 BrakingDuration;
103
        u8 MinSat;
103
        u8 MinSat;
104
        s8 StickThreshold;
104
        s8 StickThreshold;
105
        float WindCorrection;
105
        float WindCorrection;
-
 
106
        float SpeedCompensation;
106
        s32 OperatingRadius;
107
        s32 OperatingRadius;
107
        GPS_FlightMode_t  FlightMode;
108
        GPS_FlightMode_t  FlightMode;
108
} __attribute__((packed)) GPS_Parameter_t;
109
} __attribute__((packed)) GPS_Parameter_t;
Line 109... Line 110...
109
 
110
 
Line 146... Line 147...
146
                GPS_Parameter.P_Limit = 90;
147
                GPS_Parameter.P_Limit = 90;
147
                GPS_Parameter.I_Limit = 90;
148
                GPS_Parameter.I_Limit = 90;
148
                GPS_Parameter.D_Limit = 90;
149
                GPS_Parameter.D_Limit = 90;
149
                GPS_Parameter.PID_Limit = 200;
150
                GPS_Parameter.PID_Limit = 200;
150
                GPS_Parameter.BrakingDuration = 0;
151
                GPS_Parameter.BrakingDuration = 0;
-
 
152
                GPS_Parameter.SpeedCompensation = (float) 30;
151
                GPS_Parameter.MinSat = 6;
153
                GPS_Parameter.MinSat = 6;
152
                GPS_Parameter.StickThreshold = 8;
154
                GPS_Parameter.StickThreshold = 8;
153
                GPS_Parameter.WindCorrection = 0.0;
155
                GPS_Parameter.WindCorrection = 0.0;
154
                GPS_Parameter.OperatingRadius = 0; // forces the aircraft to fly to home positon
156
                GPS_Parameter.OperatingRadius = 0; // forces the aircraft to fly to home positon
Line 173... Line 175...
173
                GPS_Parameter.P_Limit = (s32)Parameter.NaviGpsPLimit;
175
                GPS_Parameter.P_Limit = (s32)Parameter.NaviGpsPLimit;
174
                GPS_Parameter.I_Limit = (s32)Parameter.NaviGpsILimit;
176
                GPS_Parameter.I_Limit = (s32)Parameter.NaviGpsILimit;
175
                GPS_Parameter.D_Limit = (s32)Parameter.NaviGpsDLimit;
177
                GPS_Parameter.D_Limit = (s32)Parameter.NaviGpsDLimit;
176
                GPS_Parameter.PID_Limit = 2* (s32)Parameter.NaviAngleLimitation;
178
                GPS_Parameter.PID_Limit = 2* (s32)Parameter.NaviAngleLimitation;
177
                GPS_Parameter.BrakingDuration = (u32)Parameter.NaviPH_LoginTime;
179
                GPS_Parameter.BrakingDuration = (u32)Parameter.NaviPH_LoginTime;
-
 
180
                GPS_Parameter.SpeedCompensation = (float)Parameter.NaviSpeedCompensation;
178
                GPS_Parameter.MinSat = (u8)Parameter.NaviGpsMinSat;
181
                GPS_Parameter.MinSat = (u8)Parameter.NaviGpsMinSat;
179
                GPS_Parameter.StickThreshold = (s8)Parameter.NaviStickThreshold;
182
                GPS_Parameter.StickThreshold = (s8)Parameter.NaviStickThreshold;
180
                GPS_Parameter.WindCorrection = (float)Parameter.NaviWindCorrection;
183
                GPS_Parameter.WindCorrection = (float)Parameter.NaviWindCorrection;
181
                GPS_Parameter.OperatingRadius = (s32)Parameter.NaviOperatingRadius * 100; // conversion of m to cm
184
                GPS_Parameter.OperatingRadius = (s32)Parameter.NaviOperatingRadius * 100; // conversion of m to cm
182
        }
185
        }
Line 634... Line 637...
634
        // update navi data, send back to ground station
637
        // update navi data, send back to ground station
635
        GPS_CopyPosition(&(GPSData.Position),   &(NaviData.CurrentPosition));
638
        GPS_CopyPosition(&(GPSData.Position),   &(NaviData.CurrentPosition));
636
        GPS_CopyPosition(&RangedTargetPosition, &(NaviData.TargetPosition));
639
        GPS_CopyPosition(&RangedTargetPosition, &(NaviData.TargetPosition));
637
        GPS_CopyPosition(&GPS_HomePosition,     &(NaviData.HomePosition));
640
        GPS_CopyPosition(&GPS_HomePosition,     &(NaviData.HomePosition));
638
        NaviData.SatsInUse = GPSData.NumOfSats;
641
        NaviData.SatsInUse = GPSData.NumOfSats;
639
        NaviData.TargetPositionDeviation.Distance = CurrentTargetDeviation.Distance;
642
        NaviData.TargetPositionDeviation.Distance = (u16)CurrentTargetDeviation.Distance/10; // dm
640
        NaviData.TargetPositionDeviation.Bearing  = CurrentTargetDeviation.Bearing;
643
        NaviData.TargetPositionDeviation.Bearing  = (s16)CurrentTargetDeviation.Bearing;
641
        NaviData.HomePositionDeviation.Distance   = CurrentHomeDeviation.Distance;
644
        NaviData.HomePositionDeviation.Distance   = (u16)CurrentHomeDeviation.Distance/10; // dm
642
        NaviData.HomePositionDeviation.Bearing    = CurrentHomeDeviation.Bearing;
645
        NaviData.HomePositionDeviation.Bearing    = (s16)CurrentHomeDeviation.Bearing;
643
        NaviData.UBat = FC.UBat;
646
        NaviData.UBat = FC.UBat;
644
        NaviData.GroundSpeed = (u16)GPSData.Speed_Ground;
647
        NaviData.GroundSpeed = (u16)GPSData.Speed_Ground;
645
        NaviData.Heading = (s16)(GPSData.Heading/100000L);
648
        NaviData.Heading = (s16)(GPSData.Heading/100000L);
646
        NaviData.CompassHeading = (s16)FromFlightCtrl.GyroHeading/10; // in deg
649
        NaviData.CompassHeading = (s16)FromFlightCtrl.GyroHeading/10; // in deg
647
        NaviData.AngleNick = FromFlightCtrl.AngleNick / 10;        // in deg
650
        NaviData.AngleNick = FromFlightCtrl.AngleNick / 10;        // in deg
648
        NaviData.AngleRoll = FromFlightCtrl.AngleRoll / 10;        // in deg
651
        NaviData.AngleRoll = FromFlightCtrl.AngleRoll / 10;        // in deg
649
        NaviData.RC_Quality = (u8) FC.RC_Quality;
652
        NaviData.RC_Quality = (u8) FC.RC_Quality;
650
        NaviData.MKFlags = (u8)FC.MKFlags;
653
        NaviData.MKFlags = (u8)FC.MKFlags;
651
        NaviData.OperatingRadius = Parameter.NaviOperatingRadius;
654
        NaviData.OperatingRadius = Parameter.NaviOperatingRadius;
-
 
655
        NaviData.TopSpeed = (s16)GPSData.Speed_Top;  // in cm/s
Line 652... Line 656...
652
 
656
 
653
        //+++++++++++++++++++++++++++++++++++++++++++++++++++
657
        //+++++++++++++++++++++++++++++++++++++++++++++++++++
654
  return;
658
        return;