Package com.pathplanner.lib.config
Class RobotConfig
java.lang.Object
com.pathplanner.lib.config.RobotConfig
Configuration class describing everything that needs to be known about the robot to generate
trajectories
-
Field Summary
Modifier and TypeFieldDescriptionfinal boolean
Is the robot holonomic?final double
The mass of the robot, including bumpers and battery, in KGfinal double
The maximum torque a drive module can apply without slipping the wheelsfinal ModuleConfig
The drive module configfinal Translation2d[]
Robot-relative locations of each drive module in metersfinal double[]
The distance from the robot center to each module in metersfinal double
The moment of inertia of the robot, in KG*M^2final int
Number of drive modulesfinal double
The force of static friction between the robot's drive wheels and the carpet, in Newtons -
Constructor Summary
ConstructorDescriptionRobotConfig
(double massKG, double MOI, ModuleConfig moduleConfig, double trackwidthMeters) Create a robot config object for a DIFFERENTIAL DRIVE robotRobotConfig
(double massKG, double MOI, ModuleConfig moduleConfig, Translation2d... moduleOffsets) Create a robot config object for a HOLONOMIC DRIVE robotRobotConfig
(Mass mass, MomentOfInertia MOI, ModuleConfig moduleConfig, Translation2d... moduleOffsets) Create a robot config object for a HOLONOMIC DRIVE robotRobotConfig
(Mass mass, MomentOfInertia MOI, ModuleConfig moduleConfig, Distance trackwidthMeters) Create a robot config object for a DIFFERENTIAL DRIVE robot -
Method Summary
Modifier and TypeMethodDescriptionchassisForcesToWheelForceVectors
(ChassisSpeeds chassisForces) Convert chassis forces (passed as ChassisSpeeds) to individual wheel force vectorsstatic RobotConfig
Load the robot config from the shared settings file created by the GUIboolean
Checks if this configuration matches the GUI configuration.toChassisSpeeds
(SwerveModuleState[] states) Convert an array of swerve module states to robot-relative chassis speeds.toSwerveModuleStates
(ChassisSpeeds speeds) Convert robot-relative chassis speeds to an array of swerve module states.
-
Field Details
-
massKG
public final double massKGThe mass of the robot, including bumpers and battery, in KG -
MOI
public final double MOIThe moment of inertia of the robot, in KG*M^2 -
moduleConfig
The drive module config -
moduleLocations
Robot-relative locations of each drive module in meters -
isHolonomic
public final boolean isHolonomicIs the robot holonomic? -
numModules
public final int numModulesNumber of drive modules -
modulePivotDistance
public final double[] modulePivotDistanceThe distance from the robot center to each module in meters -
wheelFrictionForce
public final double wheelFrictionForceThe force of static friction between the robot's drive wheels and the carpet, in Newtons -
maxTorqueFriction
public final double maxTorqueFrictionThe maximum torque a drive module can apply without slipping the wheels
-
-
Constructor Details
-
RobotConfig
public RobotConfig(double massKG, double MOI, ModuleConfig moduleConfig, Translation2d... moduleOffsets) Create a robot config object for a HOLONOMIC DRIVE robot- Parameters:
massKG
- The mass of the robot, including bumpers and battery, in KGMOI
- The moment of inertia of the robot, in KG*M^2moduleConfig
- The drive module configmoduleOffsets
- The locations of the module relative to the physical center of the robot. Only robots with 4 modules are supported, and they should be in FL, FR, BL, BR order.
-
RobotConfig
public RobotConfig(Mass mass, MomentOfInertia MOI, ModuleConfig moduleConfig, Translation2d... moduleOffsets) Create a robot config object for a HOLONOMIC DRIVE robot- Parameters:
mass
- The mass of the robot, including bumpers and batteryMOI
- The moment of inertia of the robotmoduleConfig
- The drive module configmoduleOffsets
- The locations of the module relative to the physical center of the robot. Only robots with 4 modules are supported, and they should be in FL, FR, BL, BR order.
-
RobotConfig
Create a robot config object for a DIFFERENTIAL DRIVE robot- Parameters:
massKG
- The mass of the robot, including bumpers and battery, in KGMOI
- The moment of inertia of the robot, in KG*M^2moduleConfig
- The drive module configtrackwidthMeters
- The distance between the left and right side of the drivetrain, in meters
-
RobotConfig
public RobotConfig(Mass mass, MomentOfInertia MOI, ModuleConfig moduleConfig, Distance trackwidthMeters) Create a robot config object for a DIFFERENTIAL DRIVE robot- Parameters:
mass
- The mass of the robot, including bumpers and batteryMOI
- The moment of inertia of the robotmoduleConfig
- The drive module configtrackwidthMeters
- The distance between the left and right side of the drivetrain
-
-
Method Details
-
toSwerveModuleStates
Convert robot-relative chassis speeds to an array of swerve module states. This will use differential kinematics for diff drive robots, then convert the wheel speeds to module states.- Parameters:
speeds
- Robot-relative chassis speeds- Returns:
- Array of swerve module states
-
toChassisSpeeds
Convert an array of swerve module states to robot-relative chassis speeds. This will use differential kinematics for diff drive robots.- Parameters:
states
- Array of swerve module states- Returns:
- Robot-relative chassis speeds
-
chassisForcesToWheelForceVectors
Convert chassis forces (passed as ChassisSpeeds) to individual wheel force vectors- Parameters:
chassisForces
- The linear X/Y force and torque acting on the whole robot- Returns:
- Array of individual wheel force vectors
-
fromGUISettings
public static RobotConfig fromGUISettings() throws IOException, org.json.simple.parser.ParseExceptionLoad the robot config from the shared settings file created by the GUI- Returns:
- RobotConfig matching the robot settings in the GUI
- Throws:
IOException
- if an I/O error occursorg.json.simple.parser.ParseException
- if a JSON parsing error occurs
-
hasValidConfig
public boolean hasValidConfig()Checks if this configuration matches the GUI configuration. Loads the GUI config and compares all properties, setting alerts for any mismatches.- Returns:
- true if all configuration matches GUI config, false if any are invalid or GUI config cannot be loaded
-