404 std::vector<VelLpfSweepPoint>
sweep{};
Measured physical limits for a single chassis axis.
double acceleration
Acceleration from 10–90% of max velocity (m/s² or rad/s²).
double deceleration
Deceleration from 90–10% during coast-down (m/s² or rad/s²).
double max_velocity
Peak velocity at full power (m/s or rad/s).
Configuration for the DriveCharacterizer.
double accel_timeout
Maximum seconds to wait for the acceleration phase.
int sample_hz
Sampling rate in Hz for position sampling (e.g. 500).
int power_percent
Raw PWM percentage applied during characterization (1–100).
double decel_timeout
Maximum seconds to record the deceleration (coast-down) phase.
int trials
Number of independent trials per axis; median is taken.
Configuration for the EncoderCalibrator.
double total_angle_rad
2 full turns.
double min_required_angle_rad
At least 180° to compute scale.
double angular_velocity_rad_s
Encoder calibration result.
double odom_total_angle_rad
std::array< double, 4 > scale_factors
Per-motor scale factor (same for all).
double imu_total_angle_rad
std::array< double, 4 > ticks_to_rad
New per-motor ticks_to_rad.
std::string failure_reason
Configuration for the FirmwarePidTuner.
double decel_duration_s
Extra samples after raw PWM is set to zero.
double accept_improvement_frac
int identification_trials
double de_weight_overshoot
Result of tuning a single motor's firmware-side velocity PID.
double plant_T
PT1 plant time constant from the DE fit (s). 0 if unused.
double plant_K
PT1 plant gain from the DE fit (BEMF units per PWM). 0 if unused.
Configuration for the MotionTuner (Hooke-Jeeves coordinate descent).
double min_timeout_s
Minimum computed timeout (s).
double delta_shrink
Factor to shrink deltas on no improvement.
double score_turn_error_breach_per_rad
double score_linear_overshoot_breach_per_m
double primary_speed_scale
Speed scale for trial motions.
double initial_delta_frac
Fraction of initial gain for first delta.
double linear_overshoot_soft_m
int sample_hz
Update loop rate (Hz).
double score_turn_overshoot_breach_per_rad
double min_linear_distance_m
Minimum clamped test distance (m).
double stuck_angular_progress_deg
Angular progress threshold (deg).
double turn_final_error_soft_rad
2 degrees in radians.
double max_linear_distance_m
Maximum clamped test distance (m).
double turn_test_angle_deg
Turn test angle (degrees).
double stuck_linear_progress_m
Linear progress threshold (m).
double score_overshoot_weight
double turn_overshoot_soft_rad
3 degrees in radians.
double settle_s
Post-trial settle time (s).
double min_delta
Minimum delta before stopping.
double score_settle_weight
double stuck_timeout_s
Time without progress → stuck (s).
double score_timeout_penalty
double score_constraint_breach_base
double motion_timeout_s
Maximum trial duration (s).
double score_error_weight
double linear_final_error_soft_m
double linear_test_distance_m
Linear test distance per trial (m).
int max_iterations
Maximum Hooke-Jeeves iterations.
double score_linear_error_breach_per_m
Result of tuning a single motion PID parameter (distance, lateral, or heading).
First-order-plus-dead-time (FOPDT) plant parameters extracted from a step-response recording.
double Tg
Time constant (lag) in seconds.
double Ks
Static gain (steady-state output / step input).
double Tu
Dead time in seconds.
Configuration for the StaticFrictionMeasurer.
int motion_threshold
Median |BEMF| above this counts as "moving".
int start_pct
Lower bound of the PWM sweep (inclusive).
int samples_per_step
BEMF samples taken per step (median).
int max_pct
Upper bound of the PWM sweep (inclusive).
int dwell_ms
Dwell after each setSpeed() call (ms).
int step_pct
PWM increment per sweep step.
Per-motor static-friction measurement result (kS in PWM percent).
std::vector< StaticFrictionSample > forward_sweep
Forward sweep PWM-vs-BEMF curve (pwm_pct > 0), in sweep order.
int motion_threshold
Motion threshold used (median |BEMF| above this counts as "moving").
std::vector< StaticFrictionSample > reverse_sweep
Reverse sweep PWM-vs-BEMF curve (pwm_pct < 0), in sweep order.
One PWM-vs-BEMF sample taken during a static-friction sweep.
int median_bemf
Median |BEMF| (ADC counts) at this step.
int pwm_pct
Signed PWM percent commanded (+ forward, − reverse).
Raw step-response recording for one velocity axis.
std::vector< double > measured
Measured velocity (m/s or rad/s).
std::vector< double > times
Elapsed time (s) since step onset.
std::vector< double > commanded
Commanded velocity (m/s or rad/s).
Configuration for deriveTolerances().
double max_angle_tolerance_rad
double max_distance_tolerance_m
double min_distance_tolerance_m
double min_angle_tolerance_rad
Result of deriveTolerances(): the derived tolerances and flags indicating which UnifiedMotionPidConfi...
double derived_distance_tolerance_m
double derived_angle_tolerance_rad
Configuration for the VelLpfTuner (encoder-velocity LPF alpha).
double measure_duration_s
Sampling duration per motor (s).
int sample_hz
Sampling rate (Hz).
double alpha_max
Maximum alpha to evaluate.
double alpha_min
Minimum alpha to evaluate.
double settle_s
Settle time after spin-up before sampling (s).
double noise_weight
Weight on filtered variance in the score.
double alpha_step
Sweep increment.
Per-motor LPF-alpha tuning result.
std::vector< VelLpfSweepPoint > sweep
Score-vs-alpha sweep curve (one entry per evaluated alpha).
std::vector< int > raw_bemf
One point of the alpha sweep: the score (and its parts) the candidate alpha achieved on the captured ...
double lag_change_rate
Std-dev of |Δfilt| (movement proxy).
double variance
Variance of the filtered series.
double score
Combined noise+lag score (lower is better).
Configuration for the VelocityTuner.
double low_dead_time_ratio
Tu/Tg below this → skip CHR (near-integrator / very fast plant).
double steady_state_frac
Fraction of the run (from the end) used to fit steady-state velocity.
int sample_hz
Step-response sampling rate in Hz.
double low_dead_time_gain_tol
|Ks - 1| tolerance accompanying the low-dead-time early-return.
double step_duration_s
Duration of each step-response recording in seconds.
double step_command_frac
Fraction of max_velocity used as the step command (0–1).
double republish_settle_s
Settle time (s) after re-publishing the kinematics config to the STM32.
double min_response_frac
Tail response must exceed this fraction of |command| to accept.
double gain_min
Clamp range for the calibrated per-axis command gain (1/Ks).
Result of tuning a single velocity axis.
double measured_gain_before
Measured steady-state gain (achieved/commanded) before tuning.
foundation::Feedforward ff
kV=1 passthrough default
double measured_gain_after
Measured steady-state gain (achieved/commanded) after tuning.
double velocity_command_gain
StepResponseData tuned_response
Raw tuned step-response recording (empty when CHR was skipped).
StepResponseData baseline_response
std::string axis
"vx", "vy", or "wz"
Feedforward terms for velocity and acceleration control.
Basic PID gains without integrator and output shaping parameters.