mirror of https://github.com/ArduPilot/ardupilot
Better Yaw P values, better Sonar hold values.
git-svn-id: https://arducopter.googlecode.com/svn/trunk@2429 f9c3cf11-9bcb-44bc-f272-b75c42450872
This commit is contained in:
parent
7b185ca23d
commit
85fde4a6cf
|
@ -241,13 +241,14 @@ output_yaw_with_hold(boolean hold)
|
||||||
yaw_error = wrap_180(yaw_error);
|
yaw_error = wrap_180(yaw_error);
|
||||||
|
|
||||||
// limit the error we're feeding to the PID
|
// limit the error we're feeding to the PID
|
||||||
yaw_error = constrain(yaw_error, -4000, 4000); // limit error to 60 degees
|
yaw_error = constrain(yaw_error, -4000, 4000); // limit error to 40 degees
|
||||||
|
|
||||||
// Apply PID and save the new angle back to RC_Channel
|
// Apply PID and save the new angle back to RC_Channel
|
||||||
g.rc_4.servo_out = g.pid_yaw.get_pi(yaw_error, delta_ms_fast_loop, 1.0); // .4 * 4000 = 1600
|
g.rc_4.servo_out = g.pid_yaw.get_pi(yaw_error, delta_ms_fast_loop, 1.0); // .4 * 4000 = 1600
|
||||||
|
|
||||||
// add in yaw dampener
|
// add in yaw dampener
|
||||||
g.rc_4.servo_out -= constrain(dampener, -1600, 1600);
|
g.rc_4.servo_out -= dampener;
|
||||||
|
|
||||||
yaw_debug = YAW_HOLD; //0
|
yaw_debug = YAW_HOLD; //0
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
@ -265,6 +266,7 @@ output_yaw_with_hold(boolean hold)
|
||||||
long error = ((long)g.rc_4.control_in * 6) - (rate * 2); // control is += 6000 * 6 = 36000
|
long error = ((long)g.rc_4.control_in * 6) - (rate * 2); // control is += 6000 * 6 = 36000
|
||||||
g.rc_4.servo_out = g.pid_acro_rate_yaw.get_pid(error, delta_ms_fast_loop, 1.0); // kP .07 * 36000 = 2520
|
g.rc_4.servo_out = g.pid_acro_rate_yaw.get_pid(error, delta_ms_fast_loop, 1.0); // kP .07 * 36000 = 2520
|
||||||
yaw_debug = YAW_RATE; // 2
|
yaw_debug = YAW_RATE; // 2
|
||||||
|
nav_yaw = dcm.yaw_sensor; //
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -489,7 +489,7 @@ void Log_Write_Control_Tuning()
|
||||||
DataFlash.WriteByte(yaw_debug);
|
DataFlash.WriteByte(yaw_debug);
|
||||||
DataFlash.WriteInt((int)(dcm.yaw_sensor/100));
|
DataFlash.WriteInt((int)(dcm.yaw_sensor/100));
|
||||||
DataFlash.WriteInt((int)(nav_yaw/100));
|
DataFlash.WriteInt((int)(nav_yaw/100));
|
||||||
DataFlash.WriteInt((int)yaw_error);
|
DataFlash.WriteInt((int)yaw_error/100);
|
||||||
DataFlash.WriteInt((int)(omega.z * 1000));
|
DataFlash.WriteInt((int)(omega.z * 1000));
|
||||||
|
|
||||||
// Alt hold
|
// Alt hold
|
||||||
|
|
|
@ -354,13 +354,13 @@
|
||||||
// YAW Control
|
// YAW Control
|
||||||
//
|
//
|
||||||
#ifndef YAW_P
|
#ifndef YAW_P
|
||||||
# define YAW_P 0.4 // increase for more aggressive Yaw Hold, decrease if it's bouncy
|
# define YAW_P 0.6 // increase for more aggressive Yaw Hold, decrease if it's bouncy
|
||||||
#endif
|
#endif
|
||||||
#ifndef YAW_I
|
#ifndef YAW_I
|
||||||
# define YAW_I 0.01 // set to .0001 to try and get over user's steady state error caused by poor balance
|
# define YAW_I 0.01 // set to .0001 to try and get over user's steady state error caused by poor balance
|
||||||
#endif
|
#endif
|
||||||
#ifndef YAW_D
|
#ifndef YAW_D
|
||||||
# define YAW_D 0.05 // Trying a lower value to prevent odd behavior
|
# define YAW_D 0.1 // Trying a lower value to prevent odd behavior
|
||||||
#endif
|
#endif
|
||||||
#ifndef YAW_IMAX
|
#ifndef YAW_IMAX
|
||||||
# define YAW_IMAX 1 // degrees * 100
|
# define YAW_IMAX 1 // degrees * 100
|
||||||
|
|
|
@ -37,7 +37,7 @@ const struct Menu::command main_menu_commands[] PROGMEM = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Create the top-level menu object.
|
// Create the top-level menu object.
|
||||||
MENU(main_menu, "AC 2.0.16 Beta", main_menu_commands);
|
MENU(main_menu, "AC 2.0.17 Beta", main_menu_commands);
|
||||||
|
|
||||||
void init_ardupilot()
|
void init_ardupilot()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue