Skip to content

Odyssey

Odometry and motion control template for VEX V5, built on PROS.

Odyssey gives your robot a constantly-updated (x, y, heading) position on the field, and a full set of autonomous motion functions that use it. It is inspired by LemLib and EZ-Template.

void autonomous() {
    chassis.setPose(0, 0, 0);              // where the robot starts
    chassis.moveToPoint(0, 24, 4000);      // drive 24" forward
    chassis.turnToHeading(90, 1000);       // face 90 degrees
    chassis.moveToPose(24, 24, 90, 4000);  // arrive at (24, 24) facing 90
    chassis.follow("skills.txt", 12, 8000); // pure pursuit from the SD card
}

Features

  • Robust odometry

    Arc-based position tracking with any combination of tracking wheels and an inertial sensor. Automatically falls back to drive encoders if you have no tracking wheels, and to wheel-based heading if the IMU dies mid-match.

  • PID motions

    turnToHeading, turnToPoint, swingToHeading, and moveToPoint with configurable exit conditions, speed limits, slew rate control, and motion chaining.

  • Boomerang controller

    moveToPose drives to a position and a final heading in one smooth arc, with automatic speed limiting through tight curves.

  • Pure pursuit

    Follow paths drawn in path.jerryio straight from the micro SD card, or define waypoints in code.

  • Async motions

    Start a motion, trigger your intake partway through with waitUntil(10), then waitUntilDone().

  • Driver control

    Tank, arcade, and curvature drive with customizable exponential input curves, deadbands, and minimum outputs.

Where to start

  1. Installation — add Odyssey to a PROS project
  2. Hardware Setup — tracking wheel placement advice
  3. Configuration — describe your robot in code
  4. The Coordinate System — how positions and headings work
  5. Your First Autonomous — make the robot move

Credits