diff --git a/ArducopterNG/ArduUser.h b/ArducopterNG/ArduUser.h index 4461033c7c..cb284138ec 100644 --- a/ArducopterNG/ArduUser.h +++ b/ArducopterNG/ArduUser.h @@ -77,14 +77,14 @@ TODO: // Following variables stored in EEPROM float KP_QUAD_ROLL; float KI_QUAD_ROLL; -float KD_QUAD_ROLL; +float STABLE_MODE_KP_RATE_ROLL; float KP_QUAD_PITCH; float KI_QUAD_PITCH; -float KD_QUAD_PITCH; +float STABLE_MODE_KP_RATE_PITCH; float KP_QUAD_YAW; float KI_QUAD_YAW; -float KD_QUAD_YAW; -float STABLE_MODE_KP_RATE; +float STABLE_MODE_KP_RATE_YAW; +float STABLE_MODE_KP_RATE; //NOT USED NOW float KP_GPS_ROLL; float KI_GPS_ROLL; float KD_GPS_ROLL; @@ -133,23 +133,23 @@ float ch_aux2_offset = 0; // This function call contains the default values that are set to the ArduCopter // when a "Default EEPROM Value" command is sent through serial interface void defaultUserConfig() { - KP_QUAD_ROLL = 1.8; - KI_QUAD_ROLL = 0.30; //0.4 - KD_QUAD_ROLL = 0.4; //0.48 - KP_QUAD_PITCH = 1.8; - KI_QUAD_PITCH = 0.30; //0.4 - KD_QUAD_PITCH = 0.4; //0.48 - KP_QUAD_YAW = 3.6; + KP_QUAD_ROLL = 4.0; + KI_QUAD_ROLL = 0.15; + STABLE_MODE_KP_RATE_ROLL = 1.2; + KP_QUAD_PITCH = 4.0; + KI_QUAD_PITCH = 0.15; + STABLE_MODE_KP_RATE_PITCH = 1.2; + KP_QUAD_YAW = 3.0; KI_QUAD_YAW = 0.15; - KD_QUAD_YAW = 1.2; - STABLE_MODE_KP_RATE = 0.2; // New param for stable mode - KP_GPS_ROLL = 0.02; - KI_GPS_ROLL = 0.008; - KD_GPS_ROLL = 0.006; - KP_GPS_PITCH = 0.02; - KI_GPS_PITCH = 0.008; - KD_GPS_PITCH = 0.006; - GPS_MAX_ANGLE = 18; + STABLE_MODE_KP_RATE_YAW = 2.4; + STABLE_MODE_KP_RATE = 0.2; // NOT USED NOW + KP_GPS_ROLL = 0.015; + KI_GPS_ROLL = 0.005; + KD_GPS_ROLL = 0.01; + KP_GPS_PITCH = 0.015; + KI_GPS_PITCH = 0.005; + KD_GPS_PITCH = 0.01; + GPS_MAX_ANGLE = 22; KP_ALTITUDE = 0.8; KI_ALTITUDE = 0.2; KD_ALTITUDE = 0.2; @@ -165,16 +165,16 @@ void defaultUserConfig() { Ki_YAW = 0.00005; GEOG_CORRECTION_FACTOR = 0.87; MAGNETOMETER = 0; - Kp_RateRoll = 0.6; - Ki_RateRoll = 0.1; - Kd_RateRoll = -0.8; - Kp_RatePitch = 0.6; - Ki_RatePitch = 0.1; - Kd_RatePitch = -0.8; - Kp_RateYaw = 1.6; - Ki_RateYaw = 0.3; - Kd_RateYaw = 0; - xmitFactor = 0.8; + Kp_RateRoll = 1.95; + Ki_RateRoll = 0.0; + Kd_RateRoll = 0.0; + Kp_RatePitch = 1.95; + Ki_RatePitch = 0.0; + Kd_RatePitch = 0.0; + Kp_RateYaw = 3.2; + Ki_RateYaw = 0.0; + Kd_RateYaw = 0.0; + xmitFactor = 0.32; roll_mid = 1500; pitch_mid = 1500; yaw_mid = 1500; @@ -195,14 +195,14 @@ void defaultUserConfig() { // EEPROM storage addresses #define KP_QUAD_ROLL_ADR 0 #define KI_QUAD_ROLL_ADR 8 -#define KD_QUAD_ROLL_ADR 4 +#define STABLE_MODE_KP_RATE_ROLL_ADR 4 #define KP_QUAD_PITCH_ADR 12 #define KI_QUAD_PITCH_ADR 20 -#define KD_QUAD_PITCH_ADR 16 +#define STABLE_MODE_KP_RATE_PITCH_ADR 16 #define KP_QUAD_YAW_ADR 24 #define KI_QUAD_YAW_ADR 32 -#define KD_QUAD_YAW_ADR 28 -#define STABLE_MODE_KP_RATE_ADR 36 +#define STABLE_MODE_KP_RATE_YAW_ADR 28 +#define STABLE_MODE_KP_RATE_ADR 36 // NOT USED NOW #define KP_GPS_ROLL_ADR 40 #define KI_GPS_ROLL_ADR 48 #define KD_GPS_ROLL_ADR 44 @@ -250,5 +250,4 @@ void defaultUserConfig() { #define ch_yaw_offset_ADR 216 #define ch_aux_offset_ADR 220 #define ch_aux2_offset_ADR 224 - - + diff --git a/ArducopterNG/EEPROM.pde b/ArducopterNG/EEPROM.pde index ad67d566a7..9f9740a3b0 100644 --- a/ArducopterNG/EEPROM.pde +++ b/ArducopterNG/EEPROM.pde @@ -59,14 +59,14 @@ void writeEEPROM(float value, int address) { void readUserConfig() { KP_QUAD_ROLL = readEEPROM(KP_QUAD_ROLL_ADR); KI_QUAD_ROLL = readEEPROM(KI_QUAD_ROLL_ADR); - KD_QUAD_ROLL = readEEPROM(KD_QUAD_ROLL_ADR); + STABLE_MODE_KP_RATE_ROLL = readEEPROM(STABLE_MODE_KP_RATE_ROLL_ADR); KP_QUAD_PITCH = readEEPROM(KP_QUAD_PITCH_ADR); KI_QUAD_PITCH = readEEPROM(KI_QUAD_PITCH_ADR); - KD_QUAD_PITCH = readEEPROM(KD_QUAD_PITCH_ADR); + STABLE_MODE_KP_RATE_PITCH = readEEPROM(STABLE_MODE_KP_RATE_PITCH_ADR); KP_QUAD_YAW = readEEPROM(KP_QUAD_YAW_ADR); KI_QUAD_YAW = readEEPROM(KI_QUAD_YAW_ADR); - KD_QUAD_YAW = readEEPROM(KD_QUAD_YAW_ADR); - STABLE_MODE_KP_RATE = readEEPROM(STABLE_MODE_KP_RATE_ADR); + STABLE_MODE_KP_RATE_YAW = readEEPROM(STABLE_MODE_KP_RATE_YAW_ADR); + STABLE_MODE_KP_RATE = readEEPROM(STABLE_MODE_KP_RATE_ADR); // NOT USED NOW KP_GPS_ROLL = readEEPROM(KP_GPS_ROLL_ADR); KI_GPS_ROLL = readEEPROM(KI_GPS_ROLL_ADR); KD_GPS_ROLL = readEEPROM(KD_GPS_ROLL_ADR); @@ -118,15 +118,15 @@ void readUserConfig() { void writeUserConfig() { writeEEPROM(KP_QUAD_ROLL, KP_QUAD_ROLL_ADR); - writeEEPROM(KD_QUAD_ROLL, KD_QUAD_ROLL_ADR); writeEEPROM(KI_QUAD_ROLL, KI_QUAD_ROLL_ADR); + writeEEPROM(STABLE_MODE_KP_RATE_ROLL, STABLE_MODE_KP_RATE_ROLL_ADR); writeEEPROM(KP_QUAD_PITCH, KP_QUAD_PITCH_ADR); - writeEEPROM(KD_QUAD_PITCH, KD_QUAD_PITCH_ADR); writeEEPROM(KI_QUAD_PITCH, KI_QUAD_PITCH_ADR); + writeEEPROM(STABLE_MODE_KP_RATE_PITCH, STABLE_MODE_KP_RATE_PITCH_ADR); writeEEPROM(KP_QUAD_YAW, KP_QUAD_YAW_ADR); - writeEEPROM(KD_QUAD_YAW, KD_QUAD_YAW_ADR); writeEEPROM(KI_QUAD_YAW, KI_QUAD_YAW_ADR); - writeEEPROM(STABLE_MODE_KP_RATE, STABLE_MODE_KP_RATE_ADR); + writeEEPROM(STABLE_MODE_KP_RATE_YAW, STABLE_MODE_KP_RATE_YAW_ADR); + writeEEPROM(STABLE_MODE_KP_RATE, STABLE_MODE_KP_RATE_ADR); // NOT USED NOW writeEEPROM(KP_GPS_ROLL, KP_GPS_ROLL_ADR); writeEEPROM(KD_GPS_ROLL, KD_GPS_ROLL_ADR); writeEEPROM(KI_GPS_ROLL, KI_GPS_ROLL_ADR); @@ -174,4 +174,4 @@ void writeUserConfig() { writeEEPROM(ch_yaw_offset, ch_yaw_offset_ADR); writeEEPROM(ch_aux_offset, ch_aux_offset_ADR); writeEEPROM(ch_aux2_offset, ch_aux2_offset_ADR); -} +} diff --git a/ArducopterNG/GCS.pde b/ArducopterNG/GCS.pde index 7b457718b4..c929c36049 100644 --- a/ArducopterNG/GCS.pde +++ b/ArducopterNG/GCS.pde @@ -66,14 +66,14 @@ void readSerialCommand() { case 'A': // Stable PID KP_QUAD_ROLL = readFloatSerial(); KI_QUAD_ROLL = readFloatSerial(); - KD_QUAD_ROLL = readFloatSerial(); + STABLE_MODE_KP_RATE_ROLL = readFloatSerial(); KP_QUAD_PITCH = readFloatSerial(); KI_QUAD_PITCH = readFloatSerial(); - KD_QUAD_PITCH = readFloatSerial(); + STABLE_MODE_KP_RATE_PITCH = readFloatSerial(); KP_QUAD_YAW = readFloatSerial(); KI_QUAD_YAW = readFloatSerial(); - KD_QUAD_YAW = readFloatSerial(); - STABLE_MODE_KP_RATE = readFloatSerial(); + STABLE_MODE_KP_RATE_YAW = readFloatSerial(); + STABLE_MODE_KP_RATE = readFloatSerial(); // NOT USED NOW MAGNETOMETER = readFloatSerial(); break; case 'C': // Receive GPS PID @@ -195,21 +195,21 @@ void sendSerialTelemetry() { comma(); SerPr(KI_QUAD_ROLL, 3); comma(); - SerPr(KD_QUAD_ROLL, 3); + SerPr(STABLE_MODE_KP_RATE_ROLL, 3); comma(); SerPr(KP_QUAD_PITCH, 3); comma(); SerPr(KI_QUAD_PITCH, 3); comma(); - SerPr(KD_QUAD_PITCH, 3); + SerPr(STABLE_MODE_KP_RATE_PITCH, 3); comma(); SerPr(KP_QUAD_YAW, 3); comma(); SerPr(KI_QUAD_YAW, 3); comma(); - SerPr(KD_QUAD_YAW, 3); + SerPr(STABLE_MODE_KP_RATE_YAW, 3); comma(); - SerPr(STABLE_MODE_KP_RATE, 3); + SerPr(STABLE_MODE_KP_RATE, 3); // NOT USED NOW comma(); SerPrln(MAGNETOMETER, 3); queryType = 'X'; @@ -437,4 +437,4 @@ float readFloatSerial() { } while ((data[constrain(index-1, 0, 128)] != ';') && (timeout < 5) && (index < 128)); return atof(data); -} +}