Motor Commands
NextFTC has a bunch of motor commands so that you don't have to write your own!
RunToPosition
RunToPosition
is likely the most common motor command you will use. It takes a Controllable
(like a MotorEx
or a MotorGroup
), a Controller
, and a target. It finishes once the motor is in a tolerable distance of the target.
RunToPosition(motor, target, controller, setOf(subsystems))
// or in a subsystem:
RunToPosition(motor, target, controller, this)
The tolerance of the controller can be set with controller.setPointTolerance
as follows:
controller.setPointTolerance(20.0) // default is 10
HoldPosition
HoldPosition
holds a motor at the position it was at when the command was scheduled.
HoldPosition(motor, controller, setOf(subsystems))
It is mostly commonly used as the default command in a subsystem, which means it will run when no other command is being run.
override val defaultCommand: Command
get() = HoldPosition(motor, controller, this)
SetPower
SetPower
is very simple: it sets the power and ends instantly.
SetPower(motor, power, setOf(subsystems))
// or in a subsystem:
SetPower(motor, power, this)
RunToVelocity
RunToVelocity
uses a controller on a motor until it reaches a set velocity and then depowers the motor.
RunToVelocity(motor, velocity, controller, setOf(subsystems))
// or in a subsystem:
RunToVelocity(motor, velocity, controller, this)
Optionally, you can pass the condition when it ends as well.
RunToVelocity(
motor,
velocity,
controller,
setOf(subsystems),
{ abs(motor.velocity) - velocity < 10 } // this is the default
)
HoldVelocity
HoldVelocity
is like a combination of RunToVelocity
and HoldPosition
: it keeps a motor at the velocity it was at when the command was scheduled.
HoldVelocity(motor, controller, setOf(subsystems))
Like HoldPosition
, HoldVelocity
is most commonly used as the default command in a subsystem. This is useful for something like a flywheel. You can have RunToVelocity
commands that bring it to a velocity (spinning or stopped), and the HoldVelocity
command will run when those stop to keep it at that velocity.
override val defaultCommand: Command
get() = HoldVelocity(motor, controller, this)
ResetEncoder
ResetEncoder
does exactly what it sounds like: it resets the encoder.
ResetEncoder(motor, setOf(subsystems))
// or in a subsystem:
ResetEncoder(motor, this)
NOTE
See the controllables reference for more information.