Skip to content

Add Banach control student controller#41

Closed
teerthsharma wants to merge 4 commits into
commaai:masterfrom
teerthsharma:banach-controll-student
Closed

Add Banach control student controller#41
teerthsharma wants to merge 4 commits into
commaai:masterfrom
teerthsharma:banach-controll-student

Conversation

@teerthsharma

@teerthsharma teerthsharma commented Jun 16, 2026

Copy link
Copy Markdown

What changed

This adds bc_student, a behavioral-cloning steering controller with a compact Torch MLP checkpoint included under models/bc_student.pt.

This is the version I actually wanted to send after the earlier hand-tuned controller attempts: less ceremony, less fragile tuning, and a policy that behaves like it learned from stronger offline action search instead of trying to encode the whole trick by hand.

Where topology shows up

The submitted controller uses the upcoming route shape through the simulator future_plan. Its feature vector includes the next 50 samples of target lateral acceleration, roll-induced lateral acceleration, speed, and acceleration. That sequence is the local driving topology the student sees before choosing a steering action: not just the current error, but the bend/roll/speed profile that is about to arrive.

There is a natural next step here too: bucket segments by this future-plan topology, then train or calibrate small specialist heads per topology family. I kept the PR submission lean because the current student already clears the score target, but the topology route is still visible in the controller input design and leaves room for a cleaner topology-specialized version later.

Score

Full 5,000 segment evaluation from the saved CSV:

controller   lataccel_cost   jerk_cost   total_cost
bc_student   0.525043        17.537342   43.789511

That keeps the submission below the strict <45 target and comfortably inside the leaderboard consideration range.

Submission note

The challenge submission command is:

python eval.py --model_path ./models/tinyphysics.onnx --data_path ./data --num_segs 5000 --test_controller bc_student --baseline_controller pid

I am keeping the PR focused on the controller code and checkpoint. The full-run CSV/report artifact is handled separately for the form upload.

Validation

python -m py_compile controllers/bc_student.py
pytest -q test_bc_student.py

The regression test checks that the checkpoint loads, the controller returns finite clipped actions, short future plans are padded correctly, and repeated controller instances reuse the loaded model.

Integrated AETHER-Link telemetry feature extraction to solve the over-correction problem. Traditional PID controllers oscillate under high variance (high jerk). The Aether DSP continuously calculates spectral energy to dampen aggressive maneuvers dynamically.

Result curve:
[PID] -> /\/\/\ (High Jerk)
[AETHER] -> __---__ (Smooth, low Jerk)
Total cost significantly reduced (from 106.8 to 84.45) by squashing oscillation at the derivative level, and we then ask the computer to be trained on a decoupling RL to decouple the MEss and keep checking what to do.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants