Creating your first Autonomous Mode
Rapidly develop and test new Autonomous programs for your robot with the Volt library.
What is an AutonomousMode?
An AutonomousMode allows you to “assemble” a sequence of Actions to run without any user input.
Creating an AutonomousMode
Create a new Kotlin class in the TeamCode/src/main/kotlin/org/firstinspires/ftc/teamcode/opmodes/autonomous
package that inherits the AutonomousMode class.
The AutonomousMode class contains:
- A robot
- A list of actions
- The function
execute()
that is called when the OpMode begins
class ExampleAuto : AutonomousMode() { override val robot = SimpleRobotWithMecanumDrive(hardwareMap, Pose2d( Vector2d(0.0, 0.0), Math.toRadians(0.0) // Make sure to use radians! ))
init { // Initialize }}
(Coming Soon)
Add an action
Create a function
Create a new private function that returns a SequentialAction
.
class ExampleAuto : AutonomousMode() { override val robot = SimpleRobotWithMecanumDrive(hardwareMap, Pose2d( Vector2d(0.0, 0.0), Math.toRadians(0.0) ))
init { // Initialize }
private fun doAnAction(): Action { return SequentialAction( robot.turnTo(90.0), robot.strafeTo(Vector2d(24.0, 0.0)) ) }}
(Coming Soon)
Add the function to the action sequence
In init
, add the action to the action sequence.
class ExampleAuto : AutonomousMode() { override val robot = SimpleRobotWithMecanumDrive(hardwareMap, Pose2d( Vector2d(0.0, 0.0), Math.toRadians(0.0) ))
init { actionSequence.add { doAnAction() } // Lambda function }
private fun doAnAction(): Action { return SequentialAction( robot.turnTo(90.0), robot.strafeTo(Vector2d(24.0, 0.0)) ) }}
(Coming Soon)
Make it an OpMode
Add the @Autonomous
annotation to the class definition.
@Autonomous(name = "Example", group = "Examples")class ExampleAuto : AutonomousMode() { override val robot = SimpleRobotWithMecanumDrive(hardwareMap, Pose2d( Vector2d(0.0, 0.0), Math.toRadians(0.0) ))
init { actionSequence.add { doAnAction() } // Lambda function }
private fun doAnAction(): Action { return SequentialAction( robot.turnTo(90.0), robot.strafeTo(Vector2d(24.0, 0.0)) ) }}
(Coming Soon)
Result
package org.firstinspires.ftc.teamcode.opmodes.autonomous
import com.acmerobotics.roadrunner.*import com.qualcomm.robotcore.eventloop.opmode.Autonomousimport dev.kingssack.volt.autonomous.AutonomousModeimport dev.kingssack.volt.robot.SimpleRobotWithMecanumDrive
@Autonomous(name = "Example", group = "Examples")class ExampleAuto : AutonomousMode() { override val robot = SimpleRobotWithMecanumDrive(hardwareMap, Pose2d( Vector2d(0.0, 0.0), Math.toRadians(0.0) ))
init { actionSequence.add { doAnAction() } // Lambda function }
private fun doAnAction(): Action { return SequentialAction( robot.turnTo(90.0), robot.strafeTo(Vector2d(24.0, 0.0)) ) }}
(Coming Soon)