diff --git a/application/chassis/chassis.c b/application/chassis/chassis.c index e43e52a..06428c7 100644 --- a/application/chassis/chassis.c +++ b/application/chassis/chassis.c @@ -113,7 +113,7 @@ void ChassisInit() .can_init_config.can_handle = &hcan1, .controller_param_init_config = { .angle_PID = { - .Kp = 12, + .Kp = 50,//15 .Ki = 0.2, .Kd = 0, .CoefA = 3, @@ -125,7 +125,7 @@ void ChassisInit() .DeadBand = 0.5, }, .speed_PID = { - .Kp = 40, + .Kp = 50,//25 .Ki = 3, .Kd = 0, .Improve = PID_Integral_Limit | PID_Derivative_On_Measurement | PID_ChangingIntegrationRate | PID_OutputFilter, @@ -154,7 +154,7 @@ void ChassisInit() .Kp = 1.05, // 6 .Ki = 0, .Kd = 0.1, // 0.495 - .DeadBand = 0.5f,// 启用死区,值为0.5度 + // .DeadBand = 0.5f,// 启用死区,值为0.5度 //.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, @@ -412,7 +412,9 @@ void ChassisTask() { single_round_offset += 360.0f; } - chassis_cmd_recv.wz = PIDCalculate(&chassis_follow_pid, single_round_offset, 0)/100; + + chassis_cmd_recv.wz = PIDCalculate(&chassis_follow_pid, single_round_offset, 0)/100; + // chassis_cmd_recv.wz = PIDCalculate(&chassis_follow_pid, single_round_offset, 0)/100; // chassis_cmd_recv.wz = PIDCalculate(&chassis_follow_pid, chassis_cmd_recv.offset_angle, 0)/100; break; case CHASSIS_ROTATE: // 自旋,同时保持全向机动;当前wz维持定值,后续增加不规则的变速策略 diff --git a/application/cmd/robot_cmd.c b/application/cmd/robot_cmd.c index 1c0e786..128d024 100644 --- a/application/cmd/robot_cmd.c +++ b/application/cmd/robot_cmd.c @@ -84,9 +84,9 @@ void RobotCMDInit() static void CalcOffsetAngle() { static float last_offset_angle = 0; - const float smooth_factor = 0.3f; // 平滑因子,0~1之间,值越大平滑效果越明显 + const float smooth_factor = 0.2f; // 平滑因子,0~1之间,值越大平滑效果越明显 - const float deadband = 3.0f; // 死区值 + //const float deadband = 3.0f; // 死区值 // 新增:跟踪模式变化,用于重置基准角度 // static chassis_mode_e last_chassis_mode = CHASSIS_NO_FOLLOW;// // @@ -108,14 +108,14 @@ static void CalcOffsetAngle() else if (angle_diff < -180.0f) new_offset += 360.0f; ///// - // 应用死区 - if (fabs(new_offset) < deadband) { - new_offset = 0.0f; - } else if (new_offset > 0) { - new_offset -= deadband; - } else { - new_offset += deadband; - }////// + // // 应用死区 + // if (fabs(new_offset) < deadband) { + // new_offset = 0.0f; + // } else if (new_offset > 0) { + // new_offset -= deadband; + // } else { + // new_offset += deadband; + // }////// chassis_cmd_send.offset_angle = last_offset_angle *(1.0f - smooth_factor) + new_offset * smooth_factor; last_offset_angle = chassis_cmd_send.offset_angle; // // 更新模式状态 @@ -203,14 +203,14 @@ static void RemoteControlSet() // 左侧开关状态为[下],或视觉未识别到目标,纯遥控器拨杆控制 if (switch_is_down(rc_data[TEMP].rc.switch_left) ) { // 按照摇杆的输出大小进行角度增量,增益系数需调整 - gimbal_cmd_send.yaw += 0.005f * (float)rc_data[TEMP].rc.rocker_l_; - gimbal_cmd_send.pitch += 0.001f * (float)rc_data[TEMP].rc.rocker_l1; + gimbal_cmd_send.yaw += 0.005f * (float)rc_data[TEMP].rc.rocker_r_; + gimbal_cmd_send.pitch += 0.001f * (float)rc_data[TEMP].rc.rocker_r1; } // 云台软件限位 // 底盘参数,目前没有加入小陀螺(调试似乎暂时没有必要),系数需要调整 - chassis_cmd_send.vx = 0.15f * (float)rc_data[TEMP].rc.rocker_r_; // _水平方向 - chassis_cmd_send.vy = 0.15f * (float)rc_data[TEMP].rc.rocker_r1; // 1数值方向 + chassis_cmd_send.vx = 0.15f * (float)rc_data[TEMP].rc.rocker_l_; // _水平方向 + chassis_cmd_send.vy = 0.15f * (float)rc_data[TEMP].rc.rocker_l1; // 1数值方向 // // 发射参数 // if (switch_is_up(rc_data[TEMP].rc.switch_right)) // 右侧开关状态[上],弹舱打开 diff --git a/application/gimbal/gimbal.c b/application/gimbal/gimbal.c index cbaea8a..298bc32 100644 --- a/application/gimbal/gimbal.c +++ b/application/gimbal/gimbal.c @@ -66,7 +66,7 @@ void GimbalInit() Motor_Init_Config_s pitch_config = { .can_init_config = { .can_handle = &hcan2, - .tx_id = 4,//2 + .tx_id = 2,//2 }, .controller_param_init_config = { .angle_PID = { diff --git a/application/shoot/shoot.c b/application/shoot/shoot.c index 514ea36..7a89e8e 100644 --- a/application/shoot/shoot.c +++ b/application/shoot/shoot.c @@ -55,7 +55,7 @@ void ShootInit() friction_config.can_init_config.tx_id = 1, friction_l = DJIMotorInit(&friction_config); - friction_config.can_init_config.tx_id = 2; // 右摩擦轮,改txid和方向就行 + friction_config.can_init_config.tx_id = 3; // 右摩擦轮,改txid和方向就行 friction_config.controller_setting_init_config.motor_reverse_flag = MOTOR_DIRECTION_REVERSE; friction_r = DJIMotorInit(&friction_config);