From ed34e1c0254df1730266599ce52f575f31ff0edf Mon Sep 17 00:00:00 2001 From: robin Date: Thu, 13 Aug 2026 13:22:29 +0900 Subject: [PATCH] Snap wheel command to target immediately on landing after airborne Previously, once a wheel's airborne flag cleared, its target reverted to the normal drive command but the actual RPM still had to ramp up through the gentle standstill-launch accel_rate/jerk profile. Since the chassis is already moving at that point (unlike a stop-start), the wheel spent several hundred ms unable to match ground speed, dragging/grinding against the surface and occasionally landing on a momentarily negative curve-turn target, making it spin backward. Track the airborne->grounded transition per wheel and, on the tick it clears, snap cmd directly to target and reset the jerk accel state instead of ramping, so the wheel rejoins the other three immediately. Verified working on hardware. Co-Authored-By: Claude Sonnet 5 --- xbox_motor_control.cpp | 45 +++++++++++++++++++++++++++++++++++++++++ xbox_motor_control_cpp | Bin 0 -> 72792 bytes 2 files changed, 45 insertions(+) create mode 100755 xbox_motor_control_cpp diff --git a/xbox_motor_control.cpp b/xbox_motor_control.cpp index 49b60f9..a76b5cc 100644 --- a/xbox_motor_control.cpp +++ b/xbox_motor_control.cpp @@ -942,6 +942,12 @@ int main(int argc, char **argv) { bool airborne_fl = false, airborne_fr = false; bool airborne_rl = false, airborne_rr = false; int air_count_fl = 0, air_count_fr = 0, air_count_rl = 0, air_count_rr = 0; + // 착지(airborne 해제) 직후 한 틱 동안: 차체는 이미 그 속도로 움직이고 + // 있는데 cmd는 정지출발용 accel_rate로 천천히 재가속되면, 그 사이 바퀴가 + // 지면 이동속도를 못 따라가 끌리며 긁히는 문제가 있어 즉시 target으로 + // 스냅시켜 지연을 없앤다. + bool just_landed_fl = false, just_landed_fr = false; + bool just_landed_rl = false, just_landed_rr = false; char wheel_status_str[5] = "OOOO"; bool fault_active = false; // 드라이버 알람(과전류/과부하 등) 발생 여부 @@ -1117,6 +1123,29 @@ int main(int argc, char **argv) { state = "RUNNING"; } } else if (state == "RUNNING") { + // 착지 직후: 정지출발용 저크 램프를 건너뛰고 차체가 이미 내고 있는 + // 속도로 즉시 맞춰 지면과의 미끄러짐(끌림)을 최소화한다. + if (just_landed_fl) { + cmd_fl = target_fl; + accel_fl = 0.0f; + just_landed_fl = false; + } + if (just_landed_fr) { + cmd_fr = target_fr; + accel_fr = 0.0f; + just_landed_fr = false; + } + if (just_landed_rl) { + cmd_rl = target_rl; + accel_rl = 0.0f; + just_landed_rl = false; + } + if (just_landed_rr) { + cmd_rr = target_rr; + accel_rr = 0.0f; + just_landed_rr = false; + } + float jerk_now = is_spin_turn ? spin_jerk_rate : jerk_rate; cmd_fl = jerkLimitedStep(cmd_fl, target_fl, accel_fl, accel_rate, decel_rate, jerk_now); @@ -1243,11 +1272,27 @@ int main(int argc, char **argv) { air_count_rl = air_now_rl ? air_count_rl + 1 : 0; air_count_rr = air_now_rr ? air_count_rr + 1 : 0; + bool prev_airborne_fl = airborne_fl; + bool prev_airborne_fr = airborne_fr; + bool prev_airborne_rl = airborne_rl; + bool prev_airborne_rr = airborne_rr; + airborne_fl = air_count_fl >= airborne_debounce_ticks; airborne_fr = air_count_fr >= airborne_debounce_ticks; airborne_rl = air_count_rl >= airborne_debounce_ticks; airborne_rr = air_count_rr >= airborne_debounce_ticks; + // 방금 착지(뜬 상태 -> 정상)한 바퀴는 다음 틱에 cmd를 target으로 즉시 + // 스냅해 재가속 지연을 없앤다. + if (prev_airborne_fl && !airborne_fl) + just_landed_fl = true; + if (prev_airborne_fr && !airborne_fr) + just_landed_fr = true; + if (prev_airborne_rl && !airborne_rl) + just_landed_rl = true; + if (prev_airborne_rr && !airborne_rr) + just_landed_rr = true; + auto statusChar = [](bool air, bool stall) { return air ? 'A' : (stall ? 'S' : 'O'); }; diff --git a/xbox_motor_control_cpp b/xbox_motor_control_cpp new file mode 100755 index 0000000000000000000000000000000000000000..417afb10131aee02b12ef4637dfa4eaa3ba45727 GIT binary patch literal 72792 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 PFFajPo?pOF5M=)coqxg* literal 0 HcmV?d00001