{"version":1,"pages":[{"id":"JsKd452Nu8XTrHz68zaF","title":"Yet Another Mechanism System","pathname":"/","siteSpaceId":"sitesp_YQJNC","description":"Yet Another Mechanism System: the mechanism library built from years of FRC experience. Describe your mechanism once, and get the commands, simulation, telemetry, and live tuning.","breadcrumbs":[{"label":"Home","icon":"house"}]},{"id":"LThc2RqOxBKU56Qt3TMy","title":"Welcome","pathname":"/documentation","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"hand-wave","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"}]},{"id":"wMSrYET1G256h2WriILB","title":"Why YAMS?","pathname":"/documentation/why-yams","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"rocket","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"}]},{"id":"BgyCN07KWZLEPjzrOvnO","title":"Upgrading from 2026 to 2027","pathname":"/documentation/upgrading-from-2026-to-2027","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"arrow-up-right-dots","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"}]},{"id":"hcFofW42fZN78yOs3C45","title":"Create a project and install YAMS","pathname":"/documentation/tutorials/project-setup","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Make the robot project that every tutorial starts from.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"}]},{"id":"ppE3TCrQO1xJacC1pgJ2","title":"Arm","pathname":"/documentation/tutorials/arm","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Learn how to program an Arm.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"}]},{"id":"6B2QxgQnippP57ywAUhX","title":"Step 1: The motor controller","pathname":"/documentation/tutorials/arm/motor-controller","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Configure the SparkMax and wrap it in a SmartMotorController.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Arm"}]},{"id":"JJzpqHfkgAfnUV0cdkNw","title":"Step 2: The arm","pathname":"/documentation/tutorials/arm/mechanism","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Describe the arm and create the Arm mechanism.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Arm"}]},{"id":"vQap3OeeeAVdy3yNdJYM","title":"Step 3: Commands and buttons","pathname":"/documentation/tutorials/arm/commands","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Make commands from the Arm and bind them to controller buttons.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Arm"}]},{"id":"3B0Hosig0enC0Sqkoptr","title":"Step 4: Simulate it","pathname":"/documentation/tutorials/arm/simulate","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Run the arm in simulation and drive it with a controller.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Arm"}]},{"id":"RhJlo1xUTVtZdtHe1vXT","title":"Elevator","pathname":"/documentation/tutorials/elevator","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Learn how to program an Elevator.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"}]},{"id":"njRycrFACu8nY2dWQLxu","title":"Step 1: The motor controller","pathname":"/documentation/tutorials/elevator/motor-controller","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Configure the SparkMax and wrap it in a SmartMotorController.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Elevator"}]},{"id":"2fa4bH4hDgVOIl9BStBB","title":"Step 2: The elevator","pathname":"/documentation/tutorials/elevator/mechanism","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Describe the elevator and create the Elevator mechanism.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Elevator"}]},{"id":"dq6OSDfoMGwkx86keO1X","title":"Step 3: Commands and buttons","pathname":"/documentation/tutorials/elevator/commands","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Make commands from the Elevator and bind them to controller buttons.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Elevator"}]},{"id":"PqzURA6j456jujPQCPkA","title":"Step 4: Simulate it","pathname":"/documentation/tutorials/elevator/simulate","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Run the elevator in simulation and drive it with a controller.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Elevator"}]},{"id":"ci1fSsNzdujaO8nvitiC","title":"Shooter/FlyWheels","pathname":"/documentation/tutorials/shooter-flywheels","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"We will learn how to program a Shooter!","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"}]},{"id":"2p68Y7F1ldiBr8algPgW","title":"Step 1: The motor controller","pathname":"/documentation/tutorials/shooter-flywheels/motor-controller","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Configure the SparkMax and wrap it in a SmartMotorController.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Shooter/FlyWheels"}]},{"id":"I0he1S6CS8PPmiBek9YU","title":"Step 2: The flywheel","pathname":"/documentation/tutorials/shooter-flywheels/mechanism","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Describe the flywheel and create the FlyWheel mechanism.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Shooter/FlyWheels"}]},{"id":"DufbWlz2CcngqC2KN1nP","title":"Step 3: Commands and buttons","pathname":"/documentation/tutorials/shooter-flywheels/commands","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Make commands from the FlyWheel and bind them to controller buttons.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Shooter/FlyWheels"}]},{"id":"NxUmSLVYZ68CqjI3aSfY","title":"Step 4: Simulate it","pathname":"/documentation/tutorials/shooter-flywheels/simulate","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Run the flywheel in simulation and drive it with a controller.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Shooter/FlyWheels"}]},{"id":"nDWq5CeW88dcuRvYsYQN","title":"Double FlyWheel","pathname":"/documentation/tutorials/double-flywheel","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"We will learn how to program a Double FlyWheel shooter!","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"}]},{"id":"GZlHRYN26oSCHs25FDNO","title":"Step 1: Two motor controllers","pathname":"/documentation/tutorials/double-flywheel/motor-controllers","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"One config and one SmartMotorController for each flywheel.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Double FlyWheel"}]},{"id":"jtov3lRB4BIdBKkuRMeM","title":"Step 2: Commands and buttons","pathname":"/documentation/tutorials/double-flywheel/commands","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"One command sets both flywheel speeds. Presets give no spin, backspin or topspin.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Double FlyWheel"}]},{"id":"Oa6AsgfKYi2eeS7ny1qD","title":"Step 3: Spin control and followers","pathname":"/documentation/tutorials/double-flywheel/spin-and-followers","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"A spin ratio between the two flywheels, and what to do when they share a shaft.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Double FlyWheel"}]},{"id":"n6wyZcdHavEPIz1YKXWT","title":"Swerve Drive","pathname":"/documentation/tutorials/swerve-drive","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Learn how to program a Swerve Drive.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"}]},{"id":"tnXog6ptBX5PLKS6U26e","title":"Step 1: The module motors","pathname":"/documentation/tutorials/swerve-drive/module-motors","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"A SmartMotorControllerConfig for the drive motors and one for the azimuth motors.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Swerve Drive"}]},{"id":"9SqPfbM2y2MqwRdH2vg0","title":"Step 2: The modules and the drive","pathname":"/documentation/tutorials/swerve-drive/modules-and-drive","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Build four SwerveModules, add the gyro, and create the SwerveDrive.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Swerve Drive"}]},{"id":"eT7pIhRnkufsTcQiqH95","title":"Step 3: Driving","pathname":"/documentation/tutorials/swerve-drive/driving","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Drive commands, a SwerveInputStream for the sticks, and the bindings.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Tutorials"},{"label":"Swerve Drive"}]},{"id":"csMX61Y2BabKsCL0d2Li","title":"How to set an Arm's target Angle?","pathname":"/documentation/how-to-mechanisms/how-to-set-an-arms-target-angle","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"lgov1ETurmXvT0ley21C","title":"How to set an Elevator's target Height?","pathname":"/documentation/how-to-mechanisms/how-to-set-an-elevators-target-height","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"jrWHdjLxCQTJ60JPgSIO","title":"How to shoot with a Shooter?","pathname":"/documentation/how-to-mechanisms/how-to-shoot-with-a-shooter","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"Agrf4aO5kjnr8EusMIzH","title":"How do I shoot on the move?","pathname":"/documentation/how-to-mechanisms/how-do-i-shoot-on-the-move","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Where to learn shooting on the move, and how the ideas in those sources apply to YAMS.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"k3nFK0ZEsunXj6xMWuAA","title":"How do I use absolute encoders on my Arm?","pathname":"/documentation/how-to-mechanisms/how-do-i-use-absolute-encoders-on-my-arm","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"uAhPW5k8RL5SG6oTPnyZ","title":"How do I home a mechanism with limit switches?","pathname":"/documentation/how-to-mechanisms/how-do-i-home-a-mechanism-with-limit-switches","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"ycmCxcsPfZuRDxskhl9D","title":"How do I control a mechanism that carries a game piece?","pathname":"/documentation/how-to-mechanisms/how-do-i-control-a-mechanism-that-carries-a-game-piece","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"A game piece makes a mechanism heavier, and can move its center of mass, which changes the feedforward and feedback gains it needs.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"t9iP4VQyzosExhaowrTj","title":"How do I control a Mechanism without a Mechanism Class?","pathname":"/documentation/how-to-mechanisms/how-do-i-control-a-mechanism-without-a-mechanism-class","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Control each SmartMotorController yourself, such as when the motors of one mechanism need different setpoints.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Mechanisms"}]},{"id":"E4ZF9olGkwyjbJkLfrdA","title":"How do I use a vendor hardware config?","pathname":"/documentation/how-to-motor-controllers-and-sensors/how-do-i-use-a-vendor-hardware-config","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Motor controllers and sensors"}]},{"id":"9GvD6E5OCpG9JfdrkGEO","title":"How do I use a DCMotor that isn't in WPILib?","pathname":"/documentation/how-to-motor-controllers-and-sensors/how-do-i-use-a-dcmotor-that-isnt-in-wpilib","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Motor controllers and sensors"}]},{"id":"fuwSTpDItiM3IJKg1pYp","title":"How to find your mechanism circumference?","pathname":"/documentation/how-to-motor-controllers-and-sensors/how-to-find-your-mechanism-circumference","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Motor controllers and sensors"}]},{"id":"HnowKzQoqAroqjTfh15d","title":"How do I use exponential profiles?","pathname":"/documentation/how-to-motor-controllers-and-sensors/how-do-i-use-exponential-profiles","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Motor controllers and sensors"}]},{"id":"SaS01EUn40MtQMNc4g3G","title":"How to disable linear closed loop control?","pathname":"/documentation/how-to-motor-controllers-and-sensors/how-to-disable-linear-closed-loop-control","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Motor controllers and sensors"}]},{"id":"QvjutKJzgegWc0jtzyxP","title":"How do I sense activity based off of the current?","pathname":"/documentation/how-to-motor-controllers-and-sensors/how-do-i-sense-activity-based-off-of-the-current","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Motor controllers and sensors"}]},{"id":"Pn8CWYRtdjoupwTC4zbY","title":"How do I use a gyro mounted on its side?","pathname":"/documentation/how-to-motor-controllers-and-sensors/how-do-i-use-a-gyro-mounted-on-its-side","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Motor controllers and sensors"}]},{"id":"07IaFhpW8rMn5lqY7Q3E","title":"How do I enable battery discharge simulation?","pathname":"/documentation/how-to-simulation-and-logging/how-do-i-enable-battery-discharge-simulation","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Simulation and logging"}]},{"id":"4E2fb8gukJOro3IWVIvm","title":"How do I run a high fidelity simulation?","pathname":"/documentation/how-to-simulation-and-logging/how-do-i-run-a-high-fidelity-simulation","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Step the simulated physics every millisecond from a Notifier, so a closed loop running on the motor controller sees a fresh measurement on every run.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Simulation and logging"}]},{"id":"R7feQcP0xULotinqSTRH","title":"How do I view my DataLog in AdvantageScope?","pathname":"/documentation/how-to-simulation-and-logging/how-do-i-view-my-datalog-in-advantagescope","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Simulation and logging"}]},{"id":"nGVGe3gCdWRDPhFMskkS","title":"How do I show my mechanisms on a 3D robot model?","pathname":"/documentation/how-to-simulation-and-logging/how-do-i-show-my-mechanisms-on-a-3d-robot-model","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"Publish each mechanism's Pose3d, so AdvantageScope moves the matching part of your robot's CAD model as the real mechanism moves.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"How-to: Simulation and logging"}]},{"id":"pWXfWV5bTXgRWbTXM5eX","title":"Organizing configs in constants","pathname":"/documentation/understanding/config-organization","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"folder-tree","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"5XC285qjfdKAZP7irWuM","title":"Battery simulation","pathname":"/documentation/understanding/battery-simulation","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"car-battery","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"i73g4LZQanoLj7XtSO18","title":"Smart motor controllers","pathname":"/documentation/understanding/editor","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"gear","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"SECMJVDmesOrFNxF0gKR","title":"SmartMotorControllerConfig","pathname":"/documentation/understanding/editor/config","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"sliders","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"}]},{"id":"hGfT3oT3ATcvngcJCZbf","title":"Motor basics","pathname":"/documentation/understanding/editor/config/motor-basics","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"power-off","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"4CNuWoTQ1oW5qyiZs0Mk","title":"Gearing and units","pathname":"/documentation/understanding/editor/config/gearing-and-units","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"gears","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"UBfjPek9T83tS4KAh1Ly","title":"Closed loop control","pathname":"/documentation/understanding/editor/config/closed-loop-control","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"arrows-spin","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"nQhUNmBY2lzVnobOGJXP","title":"Feedforward","pathname":"/documentation/understanding/editor/config/feedforward","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"forward","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"tiGa5Rtc4MYz185gSBhU","title":"Motion profiles","pathname":"/documentation/understanding/editor/config/motion-profiles","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"chart-line","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"M4FrmNbhHnKj1Y1rlcqA","title":"Limits and protection","pathname":"/documentation/understanding/editor/config/limits-and-protection","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"shield-halved","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"qIPNEQ25GbOjvFXFROEY","title":"Encoders","pathname":"/documentation/understanding/editor/config/encoders","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"compass-drafting","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"IPrybSFLfGS4ukpGWMWc","title":"Followers","pathname":"/documentation/understanding/editor/config/followers","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"people-arrows","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"O0R7YKh94sHDtqha1IGi","title":"Simulation","pathname":"/documentation/understanding/editor/config/simulation","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"flask","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"},{"label":"SmartMotorControllerConfig","icon":"sliders"}]},{"id":"VC4f2LARpS73Tl9N9YPI","title":"Motor controller feature matrix","pathname":"/documentation/understanding/editor/feature-matrix","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"table-cells","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"}]},{"id":"MFPO8xLsq64De24ZUOvw","title":"Simulation-only PID + feedforward","pathname":"/documentation/understanding/editor/simulation-only-pid-+-feedforward","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"robot","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"}]},{"id":"og32XrjOv8p7QioP26dc","title":"Limiting power consumption","pathname":"/documentation/understanding/editor/limiting-power-consumption","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"bolt-lightning","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"}]},{"id":"6OBxgjQewngOQHvwl7P8","title":"Exponential profiles","pathname":"/documentation/understanding/editor/exponential-profiles","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"chart-line","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"}]},{"id":"USF97RZYPt5mlLGZpTSD","title":"LQR controllers","pathname":"/documentation/understanding/editor/lqr-controllers","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"chart-line","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Smart motor controllers","icon":"gear"}]},{"id":"cFYbxwV5bMQgKoPmyb6I","title":"Mechanism configs","pathname":"/documentation/understanding/mechanism-configs","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"sitemap","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"8pYnBy7V9H2YrpTgywru","title":"Shared options","pathname":"/documentation/understanding/mechanism-configs/shared-options","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"share-nodes","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Mechanism configs","icon":"sitemap"}]},{"id":"ujKQ1atE6vmYpVaCqUFG","title":"Sensors","pathname":"/documentation/understanding/sensors","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"lightbulb-exclamation-on","description":"YAMS Supports simulation really well, but my sensors don't.","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"IE0YMersbsclVUUXvOie","title":"Arms","pathname":"/documentation/understanding/arms","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"hand-fist","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"vbnEMpTF3GQO0KzQFTC1","title":"ArmConfig","pathname":"/documentation/understanding/arms/arm-config","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"hand-fist","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Arms","icon":"hand-fist"}]},{"id":"2Zpjcn3bDnmdfsOUwrxX","title":"Elevators","pathname":"/documentation/understanding/elevators","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"elevator","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"hwwEqaFWR1pFOG60xpeh","title":"ElevatorConfig","pathname":"/documentation/understanding/elevators/elevator-config","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"elevator","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Elevators","icon":"elevator"}]},{"id":"owKpp9fWetXascok7HKk","title":"Turrets/Wrists","pathname":"/documentation/understanding/turrets-wrists","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"rotate","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"yx6FX4Yrdqb2LcMhbf3n","title":"PivotConfig","pathname":"/documentation/understanding/turrets-wrists/pivot-config","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"rotate","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Turrets/Wrists","icon":"rotate"}]},{"id":"dLIz9T5FtRbD4ZzPSmp6","title":"Shooters","pathname":"/documentation/understanding/shooters","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"fan","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"f3gAT0e88sNhCJVYq4XE","title":"FlyWheelConfig","pathname":"/documentation/understanding/shooters/flywheel-config","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"fan","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Shooters","icon":"fan"}]},{"id":"c2iR1tYW4dBdBFukXJyS","title":"Swerve Drive","pathname":"/documentation/understanding/swerve-drive","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"car-side","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"RtOFGnKMLybtrfvrGwfz","title":"SwerveDriveConfig","pathname":"/documentation/understanding/swerve-drive/swerve-drive-config","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"arrows-up-down-left-right","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Swerve Drive","icon":"car-side"}]},{"id":"av5Up0mGCAxzLj3ogd3i","title":"Swerve Module","pathname":"/documentation/understanding/swerve-drive/swerve-module","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"gear","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Swerve Drive","icon":"car-side"}]},{"id":"JceknYFzw2Wq6Zqc4EGR","title":"SwerveModuleConfig","pathname":"/documentation/understanding/swerve-drive/swerve-module/swerve-module-config","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"gear","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Swerve Drive","icon":"car-side"},{"label":"Swerve Module","icon":"gear"}]},{"id":"Iy207bx7aJmLMZhMXUfv","title":"Swerve Input Stream","pathname":"/documentation/understanding/swerve-drive/swerve-input-stream","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"gamepad","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Swerve Drive","icon":"car-side"}]},{"id":"vvAPk4Gg42uyBw1ZhizP","title":"run() vs runTo() Commands","pathname":"/documentation/understanding/run-vs-runto","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"play","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"MbYrrWtRhJL7HBnq35lY","title":"Setpoint Methods vs Command Helpers","pathname":"/documentation/understanding/setpoint-methods","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"sliders","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"ULmoXhthX9AEP6aH6ZSe","title":"Telemetry","pathname":"/documentation/understanding/telemetry","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"hand-pointer","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"B4HWiEcKoEORfZ84P3z3","title":"DataLog best practices","pathname":"/documentation/understanding/datalog-best-practices","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"database","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"lWdZgI2P4YIODQ7uazsl","title":"Live tuning","pathname":"/documentation/understanding/live-tuning","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"plug-circle-plus","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"bYMZC9KJu6ywGL0vzRNW","title":"TunerX in simulation","pathname":"/documentation/understanding/live-tuning/tunerx-in-simulation","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"microchip","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"Live tuning","icon":"plug-circle-plus"}]},{"id":"dgq1TAbxR1Qx9gFp43S0","title":"EasyCRT","pathname":"/documentation/understanding/easycrt","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"simplybuilt","description":"Chinese Remainder Theorem! Made easy by 6911","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"dU5oJiPqw7CmrRKCOAAE","title":"AdvantageKit Integration","pathname":"/documentation/understanding/advantagekit-integration","siteSpaceId":"sitesp_jYtm7","lang":"en","icon":"database","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"}]},{"id":"i1Q54gqywSZDdMnihUdk","title":"Step 1: Define the IO interface","pathname":"/documentation/understanding/advantagekit-integration/io-interface","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"AdvantageKit Integration","icon":"database"}]},{"id":"faNrzwioHXH6WY0HxPzr","title":"Step 2: Implement the IO class","pathname":"/documentation/understanding/advantagekit-integration/io-implementation","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"AdvantageKit Integration","icon":"database"}]},{"id":"BGK6RphCNk9LbUX8WScY","title":"Steps 3 and 4: The subsystem and RobotContainer","pathname":"/documentation/understanding/advantagekit-integration/subsystem-and-robotcontainer","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"AdvantageKit Integration","icon":"database"}]},{"id":"pC8QEioTdG1zQqLh0u4l","title":"Log replay","pathname":"/documentation/understanding/advantagekit-integration/log-replay","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"AdvantageKit Integration","icon":"database"}]},{"id":"HAk1T32tvGw8OIK5BayR","title":"Swerve drive with AdvantageKit","pathname":"/documentation/understanding/advantagekit-integration/swerve-drive","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"AdvantageKit Integration","icon":"database"}]},{"id":"RJBBzegGQ3Ais5qlhUnf","title":"Without an IO layer","pathname":"/documentation/understanding/advantagekit-integration/direct-subsystem","siteSpaceId":"sitesp_jYtm7","lang":"en","description":"","breadcrumbs":[{"label":"Documentation","icon":"book-blank"},{"label":"Understanding"},{"label":"AdvantageKit Integration","icon":"database"}]},{"id":"trLwwmumlaofzMKwR3fr","title":"Overview","pathname":"/api-reference","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"}]},{"id":"bQ5GL6MnHEAwonDqDrBg","title":"Getting started","pathname":"/api-reference/getting-started","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"}]},{"id":"MTVokYktDo5epFSr2wfa","title":"Overview","pathname":"/api-reference/java-reference/java","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"BwzTVTCcleLz42gYXjsM","title":"Mechanisms","pathname":"/api-reference/java-reference/mechanisms","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"oi1WnWPqFaQbly2Z82g4","title":"Arm","pathname":"/api-reference/java-reference/mechanisms/arm","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Mechanisms"}]},{"id":"bDfFQrvAd3VjvnKeoNgV","title":"Elevator","pathname":"/api-reference/java-reference/mechanisms/elevator","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Mechanisms"}]},{"id":"Qoz8iAZFYBrjtK3o022I","title":"Pivot","pathname":"/api-reference/java-reference/mechanisms/pivot","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Mechanisms"}]},{"id":"UQOrRcMAAfYAVmbggBZp","title":"FlyWheel","pathname":"/api-reference/java-reference/mechanisms/flywheel","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Mechanisms"}]},{"id":"NkC3WAEiqyhX1pfo2oIN","title":"DoubleJointedArm","pathname":"/api-reference/java-reference/mechanisms/double-jointed-arm","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Mechanisms"}]},{"id":"lYRErmqx3xnINbROff23","title":"DifferentialMechanism","pathname":"/api-reference/java-reference/mechanisms/differential-mechanism","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Mechanisms"}]},{"id":"FY8vrOVFHE2RKcbOWAjm","title":"Configuration","pathname":"/api-reference/java-reference/config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"0QLe69dDq6HtxIm0cYwm","title":"ArmConfig","pathname":"/api-reference/java-reference/config/arm-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Configuration"}]},{"id":"WUWjJIfE73QjGCtubrzw","title":"ElevatorConfig","pathname":"/api-reference/java-reference/config/elevator-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Configuration"}]},{"id":"zyCFVCsxh2zlipMkMU9w","title":"PivotConfig","pathname":"/api-reference/java-reference/config/pivot-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Configuration"}]},{"id":"azx3atCpS9tFcMdbutVX","title":"FlyWheelConfig","pathname":"/api-reference/java-reference/config/flywheel-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Configuration"}]},{"id":"O5s7togDSdtQonFAeQss","title":"DifferentialMechanismConfig","pathname":"/api-reference/java-reference/config/differential-mechanism-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Configuration"}]},{"id":"wYbVAPaLsI7cPgFFdQlV","title":"MechanismPositionConfig","pathname":"/api-reference/java-reference/config/mechanism-position-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Configuration"}]},{"id":"YkTKhlBPz1kHQFVI5H4a","title":"SensorConfig","pathname":"/api-reference/java-reference/config/sensor-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Configuration"}]},{"id":"WHuWUI82ObtuWN1u2Bpz","title":"Motor Controllers","pathname":"/api-reference/java-reference/motor-controllers","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"IZfNSAk9AOu73KYpQvXk","title":"SmartMotorController","pathname":"/api-reference/java-reference/motor-controllers/smart-motor-controller","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Motor Controllers"}]},{"id":"UVI25ysQdqjCc14BZYKw","title":"SmartMotorControllerConfig","pathname":"/api-reference/java-reference/motor-controllers/smart-motor-controller-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Motor Controllers"}]},{"id":"ROmaHYgs8EtBS35jxgAb","title":"SmartMotorControllerTelemetryConfig","pathname":"/api-reference/java-reference/motor-controllers/smart-motor-controller-telemetry-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Motor Controllers"}]},{"id":"26OnZlhgEMsyTLzuUhxj","title":"SparkWrapper","pathname":"/api-reference/java-reference/motor-controllers/spark-wrapper","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Motor Controllers"}]},{"id":"VoLa8ixhDqaPnhz3HtOT","title":"NovaWrapper","pathname":"/api-reference/java-reference/motor-controllers/nova-wrapper","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Motor Controllers"}]},{"id":"xIhGt6g2ZIfW6Q2pRZKM","title":"Talon Wrapper","pathname":"/api-reference/java-reference/motor-controllers/talonfx-wrapper","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Motor Controllers"}]},{"id":"GWoyAX8mRYzo9qp0tUUi","title":"Swerve Drive","pathname":"/api-reference/java-reference/swerve","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"NV3asj1KWSYRn68E1pK9","title":"SwerveDrive","pathname":"/api-reference/java-reference/swerve/swerve-drive","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Swerve Drive"}]},{"id":"Wj4diGEDoM1dTAQm4HWH","title":"SwerveModule","pathname":"/api-reference/java-reference/swerve/swerve-module","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Swerve Drive"}]},{"id":"jLnELoJgsLvEG1bLsBsY","title":"SwerveDriveConfig","pathname":"/api-reference/java-reference/swerve/swerve-drive-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Swerve Drive"}]},{"id":"XLwmR6LPuMyFrQp3Swvf","title":"SwerveModuleConfig","pathname":"/api-reference/java-reference/swerve/swerve-module-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Swerve Drive"}]},{"id":"4Cov7oja7wnfpLIBWMDs","title":"SwerveInputStream","pathname":"/api-reference/java-reference/swerve/swerve-input-stream","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Swerve Drive"}]},{"id":"osKG7vpUk3k23jP6v6dx","title":"Gearing","pathname":"/api-reference/java-reference/gearing","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"2NslCD3MvB1b6Ehxk8PP","title":"GearBox","pathname":"/api-reference/java-reference/gearing/gearbox","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Gearing"}]},{"id":"EeMWxozp6zGcFRx21v98","title":"Sprocket","pathname":"/api-reference/java-reference/gearing/sprocket","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Gearing"}]},{"id":"QpEt3LrMvWwUOvVlNoou","title":"MechanismGearing","pathname":"/api-reference/java-reference/gearing/mechanism-gearing","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Gearing"}]},{"id":"LQ6XTXdCODCaUblY7kZn","title":"Math & Control","pathname":"/api-reference/java-reference/math","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"f0cIb5SHwwIde430voYY","title":"SmartMath","pathname":"/api-reference/java-reference/math/smart-math","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Math & Control"}]},{"id":"LQlNcnbNmesnzdczwWvB","title":"ExponentialProfilePIDController","pathname":"/api-reference/java-reference/math/exponential-profile-pid-controller","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Math & Control"}]},{"id":"92GHO1BuJ83aFmgRMjFU","title":"LQRConfig","pathname":"/api-reference/java-reference/math/lqr-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Math & Control"}]},{"id":"mpHo0T3JZzA7iQoJfRHz","title":"LQRController","pathname":"/api-reference/java-reference/math/lqr-controller","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Math & Control"}]},{"id":"crFnXppEW0BvbgG74FlF","title":"DerivativeTimeFilter","pathname":"/api-reference/java-reference/math/derivative-time-filter","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Math & Control"}]},{"id":"6Yb59kDkOo8IPHez88LM","title":"Units & Utilities","pathname":"/api-reference/java-reference/units","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"dluPpuQYR6bBiSNEcG7V","title":"YUnits","pathname":"/api-reference/java-reference/units/yunits","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Units & Utilities"}]},{"id":"8iib38amQiJXvLSNLMr1","title":"EasyCRT","pathname":"/api-reference/java-reference/units/easy-crt","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Units & Utilities"}]},{"id":"fGiHySy0pA7UQzNzspgv","title":"Simulation","pathname":"/api-reference/java-reference/sensor","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"sULDpw0rMRxjUk8vaboJ","title":"BatterySim","pathname":"/api-reference/java-reference/sensor/battery-sim","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"},{"label":"Simulation"}]},{"id":"mVTK9xt41mLTLHWoMTkV","title":"Exceptions","pathname":"/api-reference/java-reference/exceptions","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Java Reference"}]},{"id":"9lLyuKQYSrDRvJFrj3TL","title":"Overview","pathname":"/api-reference/c++-reference/cpp","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"su1CF3c84eWktn9C3ifw","title":"Mechanisms","pathname":"/api-reference/c++-reference/mechanisms","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"Jf0MCj8KX9amA7SC8Aos","title":"Arm","pathname":"/api-reference/c++-reference/mechanisms/arm","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Mechanisms"}]},{"id":"orWWG13hB2FaKQeHqVIl","title":"Elevator","pathname":"/api-reference/c++-reference/mechanisms/elevator","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Mechanisms"}]},{"id":"rlCmRouEuAuWi2yiJtfC","title":"Pivot","pathname":"/api-reference/c++-reference/mechanisms/pivot","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Mechanisms"}]},{"id":"kkg9ynJtYTa8YNODduQy","title":"FlyWheel","pathname":"/api-reference/c++-reference/mechanisms/flywheel","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Mechanisms"}]},{"id":"IRSWIBonKyr4QrCDnHnJ","title":"Configuration","pathname":"/api-reference/c++-reference/config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"DDBHkl4ooeJ566Z6IRTX","title":"ArmConfig","pathname":"/api-reference/c++-reference/config/arm-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Configuration"}]},{"id":"n71uDGnT6cZNZCA4sRH1","title":"ElevatorConfig","pathname":"/api-reference/c++-reference/config/elevator-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Configuration"}]},{"id":"75MGnV9zaFYr61mDCT9G","title":"PivotConfig","pathname":"/api-reference/c++-reference/config/pivot-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Configuration"}]},{"id":"W0AaLyEhStZKkhuNsx2s","title":"FlyWheelConfig","pathname":"/api-reference/c++-reference/config/flywheel-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Configuration"}]},{"id":"qS9SE9nQHTjLNtrq9vnB","title":"MechanismPositionConfig","pathname":"/api-reference/c++-reference/config/mechanism-position-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Configuration"}]},{"id":"ewiQu1yGpkJznldK0aZ3","title":"SensorConfig","pathname":"/api-reference/c++-reference/config/sensorconfig","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Configuration"}]},{"id":"AA5ZtTaYrWcngWUXtEr7","title":"SimSensorConfig","pathname":"/api-reference/c++-reference/config/sim-sensor-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Configuration"}]},{"id":"1Qst9exr9iGCF9OhM34b","title":"Motor Controllers","pathname":"/api-reference/c++-reference/motor-controllers","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"chSjYJrn7mBk9TlGN4g5","title":"SmartMotorController","pathname":"/api-reference/c++-reference/motor-controllers/smart-motor-controller","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Motor Controllers"}]},{"id":"KXGRnfNR0UFyAhMP3lYv","title":"SmartMotorControllerConfig","pathname":"/api-reference/c++-reference/motor-controllers/smart-motor-controller-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Motor Controllers"}]},{"id":"LU0KTbxMkBN5bTLX6K6P","title":"SmartMotorControllerTelemetryConfig","pathname":"/api-reference/c++-reference/motor-controllers/smart-motor-controller-telemetry-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Motor Controllers"}]},{"id":"PegBcK1pfQd1ffZi4YFq","title":"TalonFXWrapper / TalonFXSWrapper","pathname":"/api-reference/c++-reference/motor-controllers/talonfx-wrapper","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Motor Controllers"}]},{"id":"fPeLb75hSgLDJGGtDQ6V","title":"SparkWrapper","pathname":"/api-reference/c++-reference/motor-controllers/spark-wrapper","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Motor Controllers"}]},{"id":"oAcHT3C7ti2qUUqkoczx","title":"NovaWrapper","pathname":"/api-reference/c++-reference/motor-controllers/nova-wrapper","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Motor Controllers"}]},{"id":"f3c9KUdeIDgZfhxzeNpo","title":"Swerve Drive","pathname":"/api-reference/c++-reference/swerve","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"WhDDC98YvVSOOnfZh3ja","title":"SwerveDrive","pathname":"/api-reference/c++-reference/swerve/swerve-drive","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Swerve Drive"}]},{"id":"gcC3gDEGaiq902qYer9i","title":"SwerveModule","pathname":"/api-reference/c++-reference/swerve/swerve-module","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Swerve Drive"}]},{"id":"uxOXCzzmu3ziKXP2jTfC","title":"SwerveDriveConfig","pathname":"/api-reference/c++-reference/swerve/swerve-drive-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Swerve Drive"}]},{"id":"UIIytszjzX7uHToUODqs","title":"SwerveModuleConfig","pathname":"/api-reference/c++-reference/swerve/swerve-module-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Swerve Drive"}]},{"id":"tD6BcX7NJ9IheMp0UhQe","title":"SwerveInputStream","pathname":"/api-reference/c++-reference/swerve/swerve-input-stream","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Swerve Drive"}]},{"id":"MEWVOZVmsXna0ezMefFb","title":"Gearing","pathname":"/api-reference/c++-reference/gearing","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"x7JH4ylKVIq7j9pU8jtx","title":"GearBox","pathname":"/api-reference/c++-reference/gearing/gearbox","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Gearing"}]},{"id":"JsuFfRN1ccluX0DVdiVm","title":"Sprocket","pathname":"/api-reference/c++-reference/gearing/sprocket","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Gearing"}]},{"id":"uiFCEJayNzugAF4QMvbV","title":"MechanismGearing","pathname":"/api-reference/c++-reference/gearing/mechanism-gearing","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Gearing"}]},{"id":"vhGdljBZK8fweIR8LKlL","title":"Math & Control","pathname":"/api-reference/c++-reference/math","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"6fVtCVwXG11sX9A5vUsp","title":"LQRConfig","pathname":"/api-reference/c++-reference/math/lqr-config","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Math & Control"}]},{"id":"DtSEiNtvr8tfGc0fM9wS","title":"LQRController","pathname":"/api-reference/c++-reference/math/lqr-controller","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Math & Control"}]},{"id":"5deaEL0pYw6zOl5JrgrA","title":"DerivativeTimeFilter","pathname":"/api-reference/c++-reference/math/derivative-time-filter","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Math & Control"}]},{"id":"LTr6SptCSzcyZpBCXRg2","title":"Units & Utilities","pathname":"/api-reference/c++-reference/units","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"12ulkIFHMKMLce6GvHfN","title":"EasyCRT","pathname":"/api-reference/c++-reference/units/easy-crt","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Units & Utilities"}]},{"id":"rQT4AGd2RtQWseT2aG05","title":"Simulation","pathname":"/api-reference/c++-reference/sensor","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"CtsFdVgwMq5V0RuUaA3J","title":"BatterySim","pathname":"/api-reference/c++-reference/sensor/battery-sim","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"},{"label":"Simulation"}]},{"id":"xYDEb6vLyZzmPpjMODrd","title":"Exceptions","pathname":"/api-reference/c++-reference/exceptions","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"C++ Reference"}]},{"id":"qwU2eaRM4ZWxKcKq938x","title":"Overview","pathname":"/api-reference/guides/guides","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"j1UvTXWiUzegEpbDbjNO","title":"Configuring a motor controller","pathname":"/api-reference/guides/configuring-a-motor","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"dzVS8xm87ZTEh6JuRALf","title":"Building an arm subsystem","pathname":"/api-reference/guides/building-an-arm","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"QnN68NMRhBLfI8FPofRD","title":"Building an elevator subsystem","pathname":"/api-reference/guides/building-an-elevator","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"yZaeoXgHt32qlhbmX8y2","title":"Building a flywheel subsystem","pathname":"/api-reference/guides/building-a-flywheel","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"pFiCdoxMSKCxoekVctx0","title":"Setting up Swerve Drive","pathname":"/api-reference/guides/setting-up-swerve","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"CVlx5CsjcUXXAJr1f2W0","title":"Building positional mechanisms (C++)","pathname":"/api-reference/guides/building-mechanisms-cpp","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"NIdMWk8KMify6aq3t6GG","title":"Building a flywheel subsystem (C++)","pathname":"/api-reference/guides/building-a-flywheel-cpp","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"RgShTIMe1dmUPhYUI70a","title":"Setting up Swerve Drive (C++)","pathname":"/api-reference/guides/setting-up-swerve-cpp","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"GlEBqo4TppphMyk0HelV","title":"Using YAMS sensors","pathname":"/api-reference/guides/using-yams-sensors","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"CimRiOrMjWAc7jlsizIy","title":"Simulation","pathname":"/api-reference/guides/simulation","siteSpaceId":"sitesp_cIspj","description":"","breadcrumbs":[{"label":"API Reference","icon":"terminal"},{"label":"Guides"}]},{"id":"xSKACgaFjsHdWkvrL7EZ","title":"Changelog","pathname":"/changelog","siteSpaceId":"sitesp_2hwr9","icon":"clock-rotate-left","description":"New updates and improvements","breadcrumbs":[{"label":"Changelog","icon":"clock-rotate-left"}]}]}