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.
DriveSignal is the output value returned by Follower.update(). It carries five scalar components — robot-frame forward velocity, strafe velocity, forward acceleration, strafe acceleration, and a heading correction turn — that MecanumDrive.drive() converts into per-wheel motor powers using kS/kV/kA feedforward with voltage compensation.
Package: org.firstinspires.ftc.teamcode.odyssey.follower
Constructor
final — DriveSignal is immutable once constructed. Follower creates a new instance on every update() call.
Robot-frame forward velocity in mm/s. Positive values command forward motion; negative values command reverse motion.
Robot-frame strafe velocity in mm/s. Positive values command rightward lateral motion; negative values command leftward lateral motion.
Feedforward acceleration in the forward direction (mm/s²). Combined with
kA in MecanumDrive to reduce velocity lag during acceleration and deceleration phases of the profile.Feedforward acceleration in the strafe direction (mm/s²). Combined with
kA in MecanumDrive. Non-zero on curved path segments where the centripetal acceleration vector has a lateral component in the robot frame.Output of the heading PID controller. Used directly as an angular velocity command —
MecanumDrive scales it against k = lX + lY when distributing it to the four wheels.Methods
Robot-frame forward velocity component (mm/s). Mapped to all four wheels in equal measure by
MecanumDrive.drive().Robot-frame strafe velocity component (mm/s). Flips sign for front vs. back wheels to produce lateral motion via the mecanum rollers.
Heading PID output used as the angular velocity command.
MecanumDrive applies it as ±k·w per wheel, where k = lX + lY (sum of the robot’s half-track widths).Feedforward acceleration in the forward direction (mm/s²). Added to each wheel’s power computation as
kA · a.Feedforward acceleration in the strafe direction (mm/s²). Flips sign across front/back wheel pairs, mirroring the same layout as strafe velocity.
How MecanumDrive uses DriveSignal
MecanumDrive.drive() decomposes the signal into per-wheel velocities and accelerations, then applies kS/kV/kA feedforward with real-time voltage compensation:
1.0, all four powers are normalized by the maximum so the ratio between wheels is preserved.
Stop signal
To bring the robot to an immediate halt, send a zeroDriveSignal. All motors will receive setPower(0) and, because MecanumDrive configures motors with ZeroPowerBehavior.BRAKE, the robot will lock in place:
