From fa06bedbfa8034b4026d53388f5a6cea41c40c49 Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Tue, 24 Feb 2026 15:15:25 -0600 Subject: [PATCH] Increase neutral hold gains to 5x for stiff calibration hold Ankle KP was only ~28.5, too weak to hold against body weight. 5x multiplier gives ankles ~142, hips ~495 for proper static hold. Co-Authored-By: Claude Opus 4.6 --- .../src/g1/g1_deploy_onnx_ref/src/g1_deploy_onnx_ref.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gear_sonic_deploy/src/g1/g1_deploy_onnx_ref/src/g1_deploy_onnx_ref.cpp b/gear_sonic_deploy/src/g1/g1_deploy_onnx_ref/src/g1_deploy_onnx_ref.cpp index c877daa..e809c25 100644 --- a/gear_sonic_deploy/src/g1/g1_deploy_onnx_ref/src/g1_deploy_onnx_ref.cpp +++ b/gear_sonic_deploy/src/g1/g1_deploy_onnx_ref/src/g1_deploy_onnx_ref.cpp @@ -2829,12 +2829,14 @@ class G1Deploy { MotorCommand motor_command_tmp; // Neutral hold mode: bypass NN, command default angles directly (key 'n') + // Uses 5x gains for stiff hold — useful for visual joint calibration. if (g_neutral_hold_mode.load()) { + constexpr float neutral_gain_mult = 5.0f; for (int i = 0; i < G1_NUM_MOTOR; i++) { motor_command_tmp.q_target.at(i) = static_cast(default_angles[i]); motor_command_tmp.tau_ff.at(i) = 0.0; - motor_command_tmp.kp.at(i) = kps[i]; - motor_command_tmp.kd.at(i) = kds[i]; + motor_command_tmp.kp.at(i) = kps[i] * neutral_gain_mult; + motor_command_tmp.kd.at(i) = kds[i] * neutral_gain_mult; motor_command_tmp.dq_target.at(i) = 0.0; } } else {