33 lines
1.5 KiB
YAML
33 lines
1.5 KiB
YAML
# System identification defaults.
|
|
# Override via CLI: python scripts/sysid.py optimize --max-generations 50
|
|
#
|
|
# These are NOT Hydra config groups — the sysid scripts use argparse.
|
|
# This file serves as documentation and can be loaded by custom wrappers.
|
|
|
|
capture:
|
|
port: /dev/cu.usbserial-0001
|
|
baud: 115200
|
|
duration: 20.0 # seconds
|
|
amplitude: 150 # max PWM magnitude — must match firmware MAX_MOTOR_SPEED
|
|
hold_min_ms: 50 # PRBS min hold time
|
|
hold_max_ms: 300 # PRBS max hold time
|
|
dt: 0.02 # sample period (50 Hz)
|
|
|
|
optimize:
|
|
sigma0: 0.3 # CMA-ES initial step size (in [0,1] normalised space)
|
|
population_size: 50 # candidates per generation
|
|
max_generations: 1000 # total generations (~4000 evaluations)
|
|
sim_dt: 0.002 # MuJoCo physics timestep
|
|
substeps: 10 # physics substeps per control step (ctrl_dt = 0.02s)
|
|
pos_weight: 1.0 # MSE weight for angle errors
|
|
vel_weight: 0.1 # MSE weight for velocity errors
|
|
window_duration: 0.5 # multiple-shooting window length (s); 0 = open-loop
|
|
seed: 42
|
|
|
|
# Tunable hardware-realism params (added to ROTARY_CARTPOLE_PARAMS):
|
|
# ctrl_limit — effective motor range → exported as ctrl_range in robot.yaml
|
|
# motor_deadzone — L298N minimum |action| for torque → exported as deadzone in robot.yaml
|
|
# Firmware sends raw (unfiltered) sensor data; EMA filtering is
|
|
# handled on the Python side (env transforms) and is NOT part of
|
|
# the sysid parameter search.
|