diff --git a/application/chassis/chassis.c b/application/chassis/chassis.c index ccef766..e3db4ba 100644 --- a/application/chassis/chassis.c +++ b/application/chassis/chassis.c @@ -151,10 +151,10 @@ void ChassisInit() motor_steering_lf = DJIMotorInit(&chassis_motor_steering_config); PID_Init_Config_s chassis_follow_pid_conf = { - .Kp = 20, // 6 + .Kp = 6, // 6 .Ki = 0, - .Kd = 3, // 0.5 - .DeadBand = 0.5f, + .Kd = 0.495, // 0.5 + // .DeadBand = 0.5f, //.CoefA = 0.2, //.CoefB = 0.3, //.Improve = PID_Trapezoid_Intergral | PID_DerivativeFilter | PID_DerivativeFilter | PID_Derivative_On_Measurement | PID_Integral_Limit | PID_Derivative_On_Measurement, diff --git a/application/cmd/robot_cmd.c b/application/cmd/robot_cmd.c index b130af5..bcf8eab 100644 --- a/application/cmd/robot_cmd.c +++ b/application/cmd/robot_cmd.c @@ -85,7 +85,7 @@ static void CalcOffsetAngle() static float last_offset_angle = 0; const float smooth_factor = 0.3f; // 平滑因子,0~1之间,值越大平滑效果越明显 float new_offset = gimbal_fetch_data.yaw_motor_total_angle - YAW_ALIGN_ANGLE; -#if YAW_CHASSIS_REVERSE +#if YAW_ECD_GREATER_THAN_4096 new_offset = -new_offset; #endif float angle_diff = new_offset - last_offset_angle; diff --git a/application/gimbal/gimbal.c b/application/gimbal/gimbal.c index d4ecc3c..3a086e0 100644 --- a/application/gimbal/gimbal.c +++ b/application/gimbal/gimbal.c @@ -56,7 +56,7 @@ void GimbalInit() .speed_feedback_source = OTHER_FEED, .outer_loop_type = ANGLE_LOOP, .close_loop_type = ANGLE_LOOP | SPEED_LOOP, - .motor_reverse_flag = MOTOR_DIRECTION_REVERSE, + .motor_reverse_flag = MOTOR_DIRECTION_NORMAL, }, .motor_type = GM6020}; // PITCH diff --git a/application/robot_def.h b/application/robot_def.h index 383ed6b..07ae8b0 100644 --- a/application/robot_def.h +++ b/application/robot_def.h @@ -27,7 +27,7 @@ /* 机器人重要参数定义,注意根据不同机器人进行修改,浮点数需要以.0或f结尾,无符号以u结尾 */ // 云台参数 #define YAW_CHASSIS_ALIGN_ECD 8192 // 云台和底盘对齐指向相同方向时的电机编码器值,若对云台有机械改动需要修改 -#define YAW_ECD_GREATER_THAN_4096 0 // ALIGN_ECD值是否大于4096,是为1,否为0;用于计算云台偏转角度 +#define YAW_ECD_GREATER_THAN_4096 1 // ALIGN_ECD值是否大于4096,是为1,否为0;用于计算云台偏转角度 #define PITCH_HORIZON_ECD 3412 // 云台处于水平位置时编码器值,若对云台有机械改动需要修改 #define PITCH_MAX_ANGLE 0 // 云台竖直方向最大角度 (注意反馈如果是陀螺仪,则填写陀螺仪的角度) #define PITCH_MIN_ANGLE 0 // 云台竖直方向最小角度 (注意反馈如果是陀螺仪,则填写陀螺仪的角度)