{ "_description": "Tunables for motion/* modules. Loaded via core.config_loader.load('motion').", "arm_controller": { "_comment": "motion/arm_controller.py — enable_arm_sdk_index + replay_hz come from core.g1_hardware", "ramp_in_steps": 60, "ramp_out_steps": 180, "settle_hold_sec": 0.5, "watchdog_timeout_sec": 0.25, "watchdog_disable_after_sec": 1.0, "arm_indices_start": 15, "arm_indices_stop": 29, "jsonl_id_start": 100 }, "macro_player": { "_comment": "motion/macro_player.py — JSONL playback", "ramp_in_steps": 60, "ramp_out_steps": 60, "watchdog_disable_after_sec": 1.0 }, "macro_recorder": { "_comment": "motion/macro_recorder.py — record arm trajectories", "sample_rate_hz": 60.0, "smoothing_window": 5 }, "teaching": { "_comment": "motion/teaching.py — teach-by-demo", "safe_hold_sec": 3.0, "waist_kp": 60.0, "waist_kd": 4.0, "hold_arm_kp": 60.0, "hold_arm_kd": 4.0, "teach_arm_kp": 0.0, "teach_arm_kd": 2.0 }, "sanad_arm_controller": { "_comment": "motion/sanad_arm_controller.py — g1_num_motor + enable_arm_sdk_index + replay_hz come from core.g1_hardware", "action_cooldown_sec": 1.0, "stability_threshold": 0.06, "gains": { "kp_high": 300.0, "kd_high": 3.0, "kp_low": 80.0, "kd_low": 3.0, "kp_wrist": 40.0, "kd_wrist": 1.5 }, "weak_motors": [4, 10, 15, 16, 17, 18, 22, 23, 24, 25], "wrist_motors": [19, 20, 21, 26, 27, 28], "data_subdir": "DataG1" } }