# Canonical training model — unified sysid (cost 0.925, 475 generations). # Source: sysid_result.json → exported via src.sysid.export. # Key physics: ~96 ms motor lag (filter_tau), Stribeck friction, driver bias. # Regenerate with: # python -m src.sysid.optimize --robot-path assets/rotary_cartpole --recording .npz # then copy robot_tuned.yaml over this file once validated # (python -m src.sysid.visualize to compare real vs sim). urdf: rotary_cartpole_tuned.urdf actuators: - joint: motor_joint type: motor gear: [0.846499, 1.183733] # torque constant [pos, neg] ctrl_range: [-0.686251, 0.686251] # PWM saturation (MAX_MOTOR_SPEED / 255) deadzone: [0.181097, 0.202072] # L298N min |ctrl| for torque [pos, neg] damping: [0.013165, 0.015452] # viscous damping [pos, neg] frictionloss: [0.014244, 0.001005] # Coulomb friction [pos, neg] filter_tau: 0.096263 # 1st-order actuator lag (s) — dominant! stribeck_friction_boost: 0.068594 # extra static friction near standstill stribeck_vel: 5.279594 # Stribeck decay velocity (rad/s) action_bias: 0.056566 # additive ctrl bias (driver asymmetry) joints: motor_joint: armature: 0.001676 # reflected rotor inertia (kg·m²) frictionloss: 0.0 # handled by motor model via qfrc_applied pendulum_joint: damping: 1.2e-05 frictionloss: 7.2e-05