forked from ApesofWrath/python-example
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrobot.py
More file actions
69 lines (54 loc) · 2.75 KB
/
robot.py
File metadata and controls
69 lines (54 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# standard python imports
import typing
# project imports
import robotcontainer
# wpi imports
import commands2
import commands2.cmd
from wpilib.interfaces import GenericHID
class MyRobot(commands2.TimedCommandRobot):
"""
Command v2 robots are encouraged to inherit from TimedCommandRobot, which
has an implementation of robotPeriodic which runs the scheduler for you
"""
def robotInit(self) -> None:
"""
This function is run when the robot is first started up and should be used for any
initialization code.
"""
self.autonomousCommand: typing.Optional[commands2.Command] = None
# Instantiate our RobotContainer. This will perform all our button bindings,
# and put our autonomous chooser on the dashboard.
self.container = robotcontainer.RobotContainer()
def disabledInit(self) -> None:
"""This function is called once each time the robot enters Disabled mode."""
def disabledPeriodic(self) -> None:
"""This function is called periodically when disabled"""
def autonomousInit(self) -> None:
"""This autonomous runs the autonomous command selected by your RobotContainer class."""
self.autonomousCommand = self.container.getAutonomousCommand()
# schedule the autonomous command (example)
if self.autonomousCommand is not None:
self.autonomousCommand.schedule()
else:
print("no auto command?")
def autonomousPeriodic(self) -> None:
"""This function is called periodically during autonomous"""
def teleopInit(self) -> None:
# This makes sure that the autonomous stops running when teleop starts
# running. If you want the autonomous to continue until interrupted by
# another command, remove this line or comment it out.
self.container.climb.unspool(129.2).schedule()
if self.autonomousCommand is not None:
self.autonomousCommand.cancel()
def teleopPeriodic(self) -> None:
"""This function is called periodically during operator control"""
# Runs the Scheduler. This is responsible for polling buttons, adding newly-scheduled
# commands, running already-scheduled commands, removing finished or interrupted commands,
# and running subsystem periodic() methods. This must be called from the robot's periodic
# block in order for anything in the Command-based framework to work.
commands2.CommandScheduler.getInstance().run()
self.container.driverController.setRumble(GenericHID.RumbleType.kBothRumble, self.container.limelight.tag_seen)
def testInit(self) -> None:
# Cancels all running commands at the start of test mode
commands2.CommandScheduler.getInstance().cancelAll()