This project is an experimental Zumo robot line follower designed for high-speed tuning using NSGA-II.
The robot intentionally allows looser line tracking to achieve faster runtimes, while using recovery behaviors to avoid runaway failures.
The workflow is:
- Run the robot
- Collect a single CSV summary line from Serial
- Paste into
trials.csv - Run at least 6 trials
- Use NSGA-II to evolve better parameters
- Paste the next suggested parameters back into the Arduino code
- Repeat
- Pololu Zumo Shield
- Arduino Uno
- Zumo Reflectance Sensor Array
- Zumo Motors
- User Button (on Zumo)
Before running please install the ZumoShield Library:
- In the Arduino IDE, open the "Sketch" menu, select "Include Library", then "Manage Libraries...".
- Search for "ZumoShield".
- Click the ZumoShield entry in the list.
- Click "Install".
- Reduced twitchiness
- Turn capping
- Milder speed slowdown in corners
- Prioritizes speed over perfect centering
- Line-lost detection (all sensors white)
- Search pivot to reacquire line
- Corner-stuck escape if error stays large too long
- Prevents “runaway” straight-line failures
- During a run, you can type:
Finto the serial monitor to abort a run
- You can also hold down the zumo button for about 1s to abort however the feature does not fully work
- Parameters are injected via a single macro:
#define NSGA_PARAMS kp,kd,base_speed,min_base_speed,corner1,corner2,corner3,brake_pwr