Core functionality and API of Road Runner.

Various utilities for working with angles.

Constraint limiting angular velocity.

Easy-to-use builder for creating Trajectory instances.

Constant heading interpolator used for arbitrary holonomic translations.

Trajectory marker that is triggered when the specified displacement passes.

A progression of values of type `Double`

.

Abstraction for generic robot drive motion and localization. Robot poses are specified in a coordinate system with positive x pointing forward, positive y pointing left, and positive heading measured counter-clockwise from the x-axis.

Signal indicating the commanded kinematic state of a drive.

Exception thrown when empty path segments are requested.

Guiding vector field for effective path following described in section III, eq. (9) of 1610.04391.pdf. Implementation note: 2D parametric curves are used to describe paths instead of implicit curves of the form f(x,y) = 0 as described in the paper (which dramatically affects the cross track error calculation).

State-of-the-art path follower based on the GuidingVectorField.

Interpolator for specifying the heading for holonomic paths.

Traditional PID controller with feedforward velocity and acceleration components to follow a trajectory. More specifically, the feedback is applied to the components of the robot's pose (x position, y position, and heading) to determine the velocity correction. The feedforward components are instead applied at the wheel level.

A collection of methods for various kinematics-related tasks.

Linear heading interpolator for time-optimal transitions between poses.

Parametric representation of a line.

Generic interface for estimating robot pose over time.

Various math utilities.

This class provides the basic functionality of a mecanum drive using MecanumKinematics.

Mecanum drive kinematic equations. All wheel positions and velocities are given starting with front left and proceeding counter-clockwise (i.e., front left, rear left, rear right, front right). Robot poses are specified in a coordinate system with positive x pointing forward, positive y pointing left, and positive heading measured counter-clockwise from the x-axis.

Mecanum-specific drive constraints that also limit maximum wheel velocities.

Composite constraint representing the minimum of its constituent acceleration constraints.

Composite constraint representing the minimum of its constituent velocity constraints.

Trapezoidal motion profile composed of motion segments.

Easy-to-use builder for creating motion profiles.

Motion profile generator with arbitrary start and end motion states and either dynamic constraints or jerk limiting.

Segment of a motion profile with constant acceleration.

Kinematic state of a motion profile at any given time.

Clock interface with nanosecond precision and no guarantee about its origin (that is, this is only suited for measuring relative/elapsed time).

Parametric curve with two components (x and y). These curves are reparameterized from an internal parameter (t) to the arc length parameter (s).

Path composed of a list of parametric curves and heading interpolators.

Easy-to-use builder for creating Path instances.

Exception thrown by PathBuilder.

Exception thrown when PathBuilder methods are chained illegally. This commonly arises when switching from non-tangent interpolation back to tangent interpolation and when splicing paths.

Generic Path follower for time-independent pose reference tracking.

Path segment composed of a parametric curve and heading interpolator.

Proportional, integral, and derivative (PID) gains used by PIDFController.

PID controller with various feedforward components.

Class for representing 2D robot poses (x, y, and heading) and their derivatives.

Constraint limiting profile acceleration.

Quintic polynomial interpolated according to the provided derivatives.

Combination of two quintic polynomials into a 2D quintic spline. See this short paper for some motivation and implementation details.

Time-varying, non-linear feedback controller for nonholonomic drives. See equation 5.12 of Ramsete01.pdf.

Builder for trajectories with *static* constraints.

Trajectory marker that is triggered when the trajectory passes the specified point.

Spline heading interpolator for transitioning smoothly between headings without violating continuity (and hence allowing for integration into longer profiles).

This class provides the basic functionality of a swerve drive using SwerveKinematics.

Swerve drive kinematic equations. All wheel positions and velocities are given starting with front left and proceeding counter-clockwise (i.e., front left, rear left, rear right, front right). Robot poses are specified in a coordinate system with positive x pointing forward, positive y pointing left, and positive heading measured counter-clockwise from the x-axis.

Mecanum-specific drive constraints that also limit maximum wheel velocities.

Tangent (system) interpolator for tank/differential and other nonholonomic drives.

This class provides the basic functionality of a tank/differential drive using TankKinematics.

Tank drive kinematic equations based upon the unicycle model. All wheel positions and velocities are given in (left, right) tuples. Robot poses are specified in a coordinate system with positive x pointing forward, positive y pointing left, and positive heading measured counter-clockwise from the x-axis.

Traditional PID controller with feedforward velocity and acceleration components to follow a trajectory. More specifically, one feedback loop controls the path displacement (that is, x in the robot reference frame), and another feedback loop to minimize cross track (lateral) error via heading correction (overall, very similar to HolonomicPIDVAFollower except adjusted for the nonholonomic constraint). Feedforward is applied at the wheel level.

Tank-specific drive constraints that also limit maximum wheel velocities.

Trajectory marker that is triggered when the specified time passes.

Localizer based on three unpowered tracking omni wheels.

Trajectory backed by a Path and a MotionProfile.

Builder for trajectories with *dynamic* constraints.

Configuration describing a basic trajectory (a simpler frontend alternative to BaseTrajectoryBuilder).

Class containing methods for saving (loading) trajectory configurations to (from) YAML files.

Generic Trajectory follower for time-based pose reference tracking.

Trajectory generator for creating trajectories with dynamic and static constraints from paths.

Configuration describing constraints and other robot-specific parameters that are shared by a group of trajectories.

Trajectory marker that is triggered when the specified time passes.

Constraint limiting translational velocity.

Localizer based on two unpowered tracking omni wheels and an orientation sensor.

Exception thrown when no velocity or acceleration combination exists that satisfies the constraint.

Class for representing 2D vectors (x and y).

Heading interpolator that wraps another interpolator and adds sinusoidal oscillations ("wiggles") while preserving continuity. More specifically, the wiggle function is composed of a sine wave with a quintic spline on either end.