# # Copyright (c) FIRST and other WPILib contributors. # Open Source Software; you can modify and/or share it under the terms of # the WPILib BSD license file in the root directory of this project. # import typing import commands2 from subsystems.drivetrain import Drivetrain class ArcadeDrive(commands2.Command): def __init__( self, drive: Drivetrain, forward: typing.Callable[[], float], rotation: typing.Callable[[], float], ) -> None: """Creates a new ArcadeDrive. This command will drive your robot according to the velocity supplier lambdas. This command does not terminate. :param drivetrain: The drivetrain subsystem on which this command will run :param forward: Callable supplier of forward/backward velocity :param rotation: Callable supplier of rotational velocity """ self.drive = drive self.forward = forward self.rotation = rotation self.addRequirements(self.drive) def execute(self) -> None: self.drive.arcadeDrive(self.forward(), self.rotation())