A grass field, a rulebook, and nobody may touch it
IGVC puts the robot on a grass field with painted lane lines, construction barrels, ramps and GPS waypoints, and nobody may touch it. Grass under moving sun breaks every assumption a lane detector makes: no tarmac contrast, no straight lanes, hand-painted markings that fade in and out frame to frame. Everything underneath the algorithms is also yours to build, chassis, drivetrain and electronics included.
The vehicle, and everything running on it
- Real-time lane detection for unstructured ground: perspective transform into a bird's-eye view so lane geometry becomes metric rather than projective, then PCA with lateral clustering to pull lane and stop-line structure out of noisy candidate pixels, tracked frame to frame with an unscented Kalman filter.
- Localization fusing GPS, IMU and wheel odometry, with waypoint navigation across the course.
- Planning and control over that perception: a costmap fused from the LiDAR and the forward camera, a global route with a local path replanned against the vehicle's own dynamics and state, then two levels of control, MPC shaping the velocity profile along the trajectory and PID closing the loop at the motors.
- A collision-avoidance and replanning formulation for nonholonomic bases. Rather than switching the velocity vector instantaneously, which a wheeled robot cannot do, it changes it smoothly under a turn-radius constraint, then replans back to the goal with minimum deviation from the original path while avoiding a second collision.
- The vehicle itself: chassis, drivetrain and electronics designed and fabricated in-house.
The vehicle finished runner-up at IGVC in both 2018 and 2019 against a field of 40+ international teams, built from bare frame to full autonomy stack by the team itself. Three peer-reviewed papers came out of it: the vehicle design at ACM ICCRT 2019, the lane detection at SPIE IVPAI 2019, and the collision avoidance at TAROS 2021.
What held up on the day
- Doing the perspective transform first. Once the image is a bird's-eye view, a lane is a shape of known metric width, so PCA and lateral clustering become well-posed geometry instead of pixel heuristics, and the output drops into the planner in the units the planner already uses.
- The filter was doing more work than the detector. On grass, per-frame detection is intermittent by nature. Tracking the fitted lane across frames with a UKF is what converted a flickering detection into a lane the controller could actually follow.
- Keeping collision avoidance geometric rather than search-based. The formulation was designed to be cheap enough to run online on a robot with limited compute, which the A* and RRT alternatives were not at that scale.