diff --git a/application/chassis/chassis.c b/application/chassis/chassis.c index 891c619..94477b9 100644 --- a/application/chassis/chassis.c +++ b/application/chassis/chassis.c @@ -412,11 +412,11 @@ 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)/90; // chassis_cmd_recv.wz = PIDCalculate(&chassis_follow_pid, chassis_cmd_recv.offset_angle, 0)/100; break; - case CHASSIS_ROTATE: // 自旋,同时保持全向机动;当前wz维持定值,后续增加不规则的变速策略 - chassis_cmd_recv.wz = 0.5; + case CHASSIS_ROTATE: // 自旋,同时保持全向机动;当前wz维持定值,后续增加不规则的变速策略。 + chassis_cmd_recv.wz = 0.75; break; default: break; diff --git a/application/cmd/robot_cmd.c b/application/cmd/robot_cmd.c index d3956d4..5101a52 100644 --- a/application/cmd/robot_cmd.c +++ b/application/cmd/robot_cmd.c @@ -246,7 +246,7 @@ static void RemoteControlSet() static void MouseKeySet() { - // // G键控制机器人等级,每次按G键等级+1,最高10级 + // // G键控制机器人等级,每次按G键等级+1,最高10级/ // if (rc_data[TEMP].key[KEY_PRESS].g && rc_data[TEMP].key_count[KEY_PRESS][Key_G] > 0) { // robot_level = (robot_level % 10) + 1; // 等级循环增加,1-10 // } @@ -264,27 +264,28 @@ static void MouseKeySet() // 将robot_level传递给底盘控制命令 chassis_cmd_send.robot_level = robot_level; - - switch (robot_level) - { - case 1: - case 2: - case 3: - chassis_cmd_send.vx = (rc_data[TEMP].key[KEY_PRESS].a * 20 - rc_data[TEMP].key[KEY_PRESS].d * 20); // w向前,s向后 - chassis_cmd_send.vy = (rc_data[TEMP].key[KEY_PRESS].w * 20 - rc_data[TEMP].key[KEY_PRESS].s * 20); // a向左,d向右 - break; - case 4: - case 5: - case 6: - case 7: - chassis_cmd_send.vx = (rc_data[TEMP].key[KEY_PRESS].a * 30 - rc_data[TEMP].key[KEY_PRESS].d * 30); // w向前,s向后 - chassis_cmd_send.vy = (rc_data[TEMP].key[KEY_PRESS].w * 30 - rc_data[TEMP].key[KEY_PRESS].s * 30); // a向左,d向右 - break; - default: - chassis_cmd_send.vx = (rc_data[TEMP].key[KEY_PRESS].a * 40 - rc_data[TEMP].key[KEY_PRESS].d * 40); // w向前,s向后 - chassis_cmd_send.vy = (rc_data[TEMP].key[KEY_PRESS].w * 40 - rc_data[TEMP].key[KEY_PRESS].s * 40); // a向左,d向右 - break; - } + chassis_cmd_send.vx = rc_data[TEMP].key[KEY_PRESS].a * 42 - rc_data[TEMP].key[KEY_PRESS].d * 42; // w向前,s向后 + chassis_cmd_send.vy = rc_data[TEMP].key[KEY_PRESS].w * 42 - rc_data[TEMP].key[KEY_PRESS].s * 42; // a向左,d向右 + // switch (robot_level) + // { + // case 1: + // case 2: + // case 3: + // chassis_cmd_send.vx = (rc_data[TEMP].key[KEY_PRESS].a * 20 - rc_data[TEMP].key[KEY_PRESS].d * 20); // w向前,s向后 + // chassis_cmd_send.vy = (rc_data[TEMP].key[KEY_PRESS].w * 20 - rc_data[TEMP].key[KEY_PRESS].s * 20); // a向左,d向右 + // break; + // case 4: + // case 5: + // case 6: + // case 7: + // chassis_cmd_send.vx = (rc_data[TEMP].key[KEY_PRESS].a * 30 - rc_data[TEMP].key[KEY_PRESS].d * 30); // w向前,s向后 + // chassis_cmd_send.vy = (rc_data[TEMP].key[KEY_PRESS].w * 30 - rc_data[TEMP].key[KEY_PRESS].s * 30); // a向左,d向右 + // break; + // default: + // chassis_cmd_send.vx = (rc_data[TEMP].key[KEY_PRESS].a * 40 - rc_data[TEMP].key[KEY_PRESS].d * 40); // w向前,s向后 + // chassis_cmd_send.vy = (rc_data[TEMP].key[KEY_PRESS].w * 40 - rc_data[TEMP].key[KEY_PRESS].s * 40); // a向左,d向右 + // break; + // } // 根据等级设置底盘速度 // if (robot_level >= 1 && robot_level <= 3) { // chassis_cmd_send.vx = (rc_data[TEMP].key[KEY_PRESS].a * 20 - rc_data[TEMP].key[KEY_PRESS].d * 20); // w向前,s向后 @@ -357,7 +358,7 @@ static void MouseKeySet() // break; // } if (rc_data[TEMP].mouse.press_l) { - shoot_cmd_send.load_mode = LOAD_1_BULLET; // 左键单发 + shoot_cmd_send.load_mode = LOAD_BURSTFIRE; // 左键单发 } else if (rc_data[TEMP].mouse.press_r) { shoot_cmd_send.load_mode = LOAD_3_BULLET; // 右键三连发 } else { diff --git a/application/gimbal/gimbal.c b/application/gimbal/gimbal.c index e613b04..4f6dc67 100644 --- a/application/gimbal/gimbal.c +++ b/application/gimbal/gimbal.c @@ -85,9 +85,9 @@ void GimbalInit() // }, .controller_param_init_config = { .angle_PID = { - .Kp = 1.00, //0.90 + .Kp = 1, //0.90 .Ki = 0.05,//0.05 - .Kd = 0.02,//0.02 + .Kd = 0.03,//0.02 .CoefA =0.5,//0.5 .CoefB = 0.6,//0.6 .Output_LPF_RC = 0.01, @@ -98,8 +98,8 @@ void GimbalInit() .MaxOut = 600, }, .speed_PID = { - .Kp = 500,//22000 - .Ki = 0,// + .Kp = 800,//22000 + .Ki = 0.05,// .Kd =0.0005, // .CoefA = 0.8, // .CoefB = 0.1, diff --git a/modules/referee/referee_task.c b/modules/referee/referee_task.c index 715e196..8a12efa 100644 --- a/modules/referee/referee_task.c +++ b/modules/referee/referee_task.c @@ -66,15 +66,15 @@ void MyUIInit() while (referee_recv_info->GameRobotState.robot_id == 0) osDelay(100); // 若还未收到裁判系统数据,等待一段时间后再检查 - DeterminRobotID(); // 确定ui要发送到的目标客户端 + DeterminRobotID(); // 确定ui要发送到的目标客户端. UIDelete(&referee_recv_info->referee_id, UI_Data_Del_ALL, 0); // 清空UI // 绘制发射基准线 - UILineDraw(&UI_shoot_line[0], "sl0", UI_Graph_ADD, 7, UI_Color_White, 3, 710, shoot_line_location[0], 1210, shoot_line_location[0]); + //UILineDraw(&UI_shoot_line[0], "sl0", UI_Graph_ADD, 7, UI_Color_White, 3, 710, shoot_line_location[0], 1210, shoot_line_location[0]); UILineDraw(&UI_shoot_line[1], "sl1", UI_Graph_ADD, 7, UI_Color_White, 3, shoot_line_location[1], 340, shoot_line_location[1], 740); UILineDraw(&UI_shoot_line[2], "sl2", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[2], 1110, shoot_line_location[2]); UILineDraw(&UI_shoot_line[3], "sl3", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 860, 475, 1060, 475); - UILineDraw(&UI_shoot_line[4], "sl4", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[4], 1110, shoot_line_location[4]); + //UILineDraw(&UI_shoot_line[4], "sl4", UI_Graph_ADD, 7, UI_Color_Yellow, 2, 810, shoot_line_location[4], 1110, shoot_line_location[4]); UIGraphRefresh(&referee_recv_info->referee_id, 5, UI_shoot_line[0], UI_shoot_line[1], UI_shoot_line[2], UI_shoot_line[3], UI_shoot_line[4]); // 绘制车辆状态标志指示