DifferentialDrivetrainSim

class wpilib.simulation.DifferentialDrivetrainSim(*args, **kwargs)

Bases: pybind11_builtins.pybind11_object

Overloaded function.

  1. __init__(self: wpilib.simulation._simulation.DifferentialDrivetrainSim, plant: wpimath._controls._controls.system.LinearSystem_2_2_2, trackWidth: meters, driveMotor: wpimath._controls._controls.plant.DCMotor, gearingRatio: float, wheelRadius: meters, measurementStdDevs: List[float[7]] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) -> None

Create a SimDrivetrain.

Parameters
  • drivetrainPlant – The LinearSystem representing the robot’s drivetrain. This system can be created with LinearSystemId#createDrivetrainVelocitySystem or LinearSystemId#identifyDrivetrainSystem.

  • trackWidth – The robot’s track width.

  • driveMotor – A {@link DCMotor} representing the left side of the drivetrain.

  • gearingRatio – The gearingRatio ratio of the left side, as output over input. This must be the same ratio as the ratio used to identify or create the drivetrainPlant.

  • wheelRadiusMeters – The radius of the wheels on the drivetrain, in meters.

  • measurementStdDevs – Standard deviations for measurements, in the form [x, y, heading, left velocity, right velocity, left distance, right distance]^T. Can be omitted if no noise is desired. Gyro standard deviations of 0.0001 radians, velocity standard deviations of 0.05 m/s, and position measurement standard deviations of 0.005 meters are a reasonable starting point.

  1. __init__(self: wpilib.simulation._simulation.DifferentialDrivetrainSim, driveMotor: wpimath._controls._controls.plant.DCMotor, gearing: float, J: kilogram_square_meters, mass: kilograms, wheelRadius: meters, trackWidth: meters, measurementStdDevs: List[float[7]] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) -> None

Create a SimDrivetrain.

Parameters
  • driveMotor – A {@link DCMotor} representing the left side of the drivetrain.

  • gearing – The gearing on the drive between motor and wheel, as output over input. This must be the same ratio as the ratio used to identify or create the drivetrainPlant.

  • J – The moment of inertia of the drivetrain about its center.

  • mass – The mass of the drivebase.

  • wheelRadius – The radius of the wheels on the drivetrain.

  • trackWidth – The robot’s track width, or distance between left and right wheels.

  • measurementStdDevs – Standard deviations for measurements, in the form [x, y, heading, left velocity, right velocity, left distance, right distance]^T. Can be omitted if no noise is desired. Gyro standard deviations of 0.0001 radians, velocity standard deviations of 0.05 m/s, and position measurement standard deviations of 0.005 meters are a reasonable starting point.

class KitbotGearing

Bases: pybind11_builtins.pybind11_object

Represents a gearing option of the Toughbox mini. 12.75:1 – 14:50 and 14:50 10.71:1 – 14:50 and 16:48 8.45:1 – 14:50 and 19:45 7.31:1 – 14:50 and 21:43 5.95:1 – 14:50 and 24:40

k10p71 = 10.71
k12p75 = 12.75
k5p95 = 5.95
k7p31 = 7.31
k8p45 = 8.45
class KitbotMotor

Bases: pybind11_builtins.pybind11_object

DualCIMPerSide = <wpimath._controls._controls.plant.DCMotor object>
DualMiniCIMPerSide = <wpimath._controls._controls.plant.DCMotor object>
SingleCIMPerSide = <wpimath._controls._controls.plant.DCMotor object>
SingleMiniCIMPerSide = <wpimath._controls._controls.plant.DCMotor object>
class KitbotWheelSize

Bases: pybind11_builtins.pybind11_object

kEightInch = 0.2032
kSixInch = 0.1524
kTenInch = 0.254
class State

Bases: pybind11_builtins.pybind11_object

kHeading = 2
kLeftPosition = 5
kLeftVelocity = 3
kRightPosition = 6
kRightVelocity = 4
kX = 0
kY = 1
clampInput(u: numpy.ndarray[numpy.float64[2, 1]])numpy.ndarray[numpy.float64[2, 1]]

Clamp the input vector such that no element exceeds the given voltage. If any does, the relative magnitudes of the input will be maintained.

Parameters
  • u – The input vector.

  • maxVoltage – The maximum voltage.

Returns

The normalized input.

static createKitbotSim(*args, **kwargs)

Overloaded function.

  1. createKitbotSim(motor: wpimath._controls._controls.plant.DCMotor, gearing: float, wheelSize: meters, measurementStdDevs: List[float[7]] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) -> wpilib.simulation._simulation.DifferentialDrivetrainSim

Create a sim for the standard FRC kitbot.

Parameters
  • motor – The motors installed in the bot.

  • gearing – The gearing reduction used.

  • wheelSize – The wheel size.

  • measurementStdDevs – Standard deviations for measurements, in the form [x, y, heading, left velocity, right velocity, left distance, right distance]^T. Can be omitted if no noise is desired. Gyro standard deviations of 0.0001 radians, velocity standard deviations of 0.05 m/s, and position measurement standard deviations of 0.005 meters are a reasonable starting point.

  1. createKitbotSim(motor: wpimath._controls._controls.plant.DCMotor, gearing: float, wheelSize: meters, J: kilogram_square_meters, measurementStdDevs: List[float[7]] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) -> wpilib.simulation._simulation.DifferentialDrivetrainSim

Create a sim for the standard FRC kitbot.

Parameters
  • motor – The motors installed in the bot.

  • gearing – The gearing reduction used.

  • wheelSize – The wheel size.

  • J – The moment of inertia of the drivebase. This can be calculated using frc-characterization.

  • measurementStdDevs – Standard deviations for measurements, in the form [x, y, heading, left velocity, right velocity, left distance, right distance]^T. Can be omitted if no noise is desired. Gyro standard deviations of 0.0001 radians, velocity standard deviations of 0.05 m/s, and position measurement standard deviations of 0.005 meters are a reasonable starting point.

dynamics(x: numpy.ndarray[numpy.float64[7, 1]], u: numpy.ndarray[numpy.float64[2, 1]])numpy.ndarray[numpy.float64[7, 1]]
getCurrentDraw()amperes

Returns the currently drawn current.

getGearing()float

Returns the current gearing reduction of the drivetrain, as output over input.

getHeading()wpimath.geometry.Rotation2d

Returns the direction the robot is pointing.

Note that this angle is counterclockwise-positive, while most gyros are clockwise positive.

getLeftCurrentDraw()amperes

Returns the currently drawn current for the left side.

getLeftPosition()meters

Get the left encoder position in meters.

Returns

The encoder position.

getLeftPositionFeet()feet
getLeftPositionInches()inches
getLeftVelocity()meters_per_second

Get the left encoder velocity in meters per second.

Returns

The encoder velocity.

getLeftVelocityFps()feet_per_second
getPose()wpimath.geometry.Pose2d

Returns the current pose.

getRightCurrentDraw()amperes

Returns the currently drawn current for the right side.

getRightPosition()meters

Get the right encoder position in meters.

Returns

The encoder position.

getRightPositionFeet()feet
getRightPositionInches()inches
getRightVelocity()meters_per_second

Get the right encoder velocity in meters per second.

Returns

The encoder velocity.

getRightVelocityFps()feet_per_second
setGearing(newGearing: float)None

Sets the gearing reduction on the drivetrain. This is commonly used for shifting drivetrains.

Parameters

newGearing – The new gear ratio, as output over input.

setInputs(leftVoltage: volts, rightVoltage: volts)None

Sets the applied voltage to the drivetrain. Note that positive voltage must make that side of the drivetrain travel forward (+X).

Parameters
  • leftVoltage – The left voltage.

  • rightVoltage – The right voltage.

setPose(pose: wpimath.geometry.Pose2d)None

Sets the system pose.

Parameters

pose – The pose.

setState(state: numpy.ndarray[numpy.float64[7, 1]])None

Sets the system state.

Parameters

state – The state.

update(dt: seconds)None

Updates the simulation.

Parameters

dt – The time that’s passed since the last update() call.