Documentation Index
Fetch the complete documentation index at: https://mintlify.com/saquer916/odyssey/llms.txt
Use this file to discover all available pages before exploring further.
odyssey-gui is a JavaFX desktop application that renders a single cubic Bézier curve over a 650×650 px FTC field image. You drag four colour-coded handles to shape the curve visually, then read the resulting mm coordinates directly from the handle positions and paste them into your BezierCurve constructor calls. It removes the guesswork of choosing control point positions by hand in code.
Running the editor
Theodyssey-gui module is a standard Gradle Java application. From the repository root:
Editor interface
The editor opens a 650×650 px window titled “Odyssey Path Editor” showing the FTC field image scaled to fill the canvas. Four draggable handles appear on top:Green circles — endpoints
p0 (start) and p3 (end). The curve passes through these points exactly. Drag them to your desired start and finish positions on the field.Blue circles — handles
p1 and p2. These are the interior control points that shape the curve. The curve is attracted toward them but does not pass through them. Drag them to control the curvature of each half of the segment.Coordinate system
The editor usesFieldCoordinates to convert between pixel positions and millimetres. The FTC field is 3657.5 mm × 3657.5 mm scaled to 650 px:
FieldCoordinates helper used internally:
Reading coordinates after dragging
After placing the handles where you want them, the underlyingVector2d fields (p0–p3) in Main.java hold the converted mm values. The simplest way to read them is to add a telemetry print or System.out.println call inside drawCurve():
BezierCurve constructor:
Multi-segment paths
The current GUI visualises a single curve at a time. For a multi-segment autonomous routine, run the editor once per segment:Design segment 1
Place handles for the first
BezierCurve. Note the coordinates of all four handles — especially p3, which will become p0 of the next segment.Design segment 2
Relaunch the editor (or move the green handles to the new start/end positions). The starting green handle
p0 of this run should be placed at the same position as p3 from the previous run to ensure geometric continuity.