Source code for robot
import wpilib
import constants
import swerve
import lift
import winch
from teleop import Teleop
from autonomous import Autonomous
from sensors.imu import IMU
[docs]class Robot(wpilib.IterativeRobot):
[docs] def robotInit(self):
constants.load_control_config()
wpilib.CameraServer.launch('driver_vision.py:main')
self.autoPositionSelect = wpilib.SendableChooser()
self.autoPositionSelect.addDefault('Middle', 'Middle')
self.autoPositionSelect.addObject('Left', 'Left')
self.autoPositionSelect.addObject('Right', 'Right')
wpilib.SmartDashboard.putData(
'Robot Starting Position',
self.autoPositionSelect)
self.drivetrain = swerve.SwerveDrive(
constants.chassis_length,
constants.chassis_width,
constants.swerve_config
)
self.lift = lift.ManualControlLift(
constants.lift_ids['left'],
constants.lift_ids['right']
)
self.winch = winch.Winch(
constants.winch_id
)
# self.claw = lift.Claw(
# constants.claw_id
# )
self.imu = IMU(wpilib.SPI.Port.kMXP)
[docs] def disabledInit(self):
# We don't really _need_ to reload configuration in
# every init call-- it's just useful for debugging.
# (no need to restart robot code just to load new values)
self.drivetrain.load_config_values()
[docs] def disabledPeriodic(self):
self.drivetrain.update_smart_dashboard()
self.imu.update_smart_dashboard()
[docs] def autonomousInit(self):
self.drivetrain.load_config_values()
self.auto = Autonomous(self, self.autoPositionSelect.getSelected())
self.auto.periodic()
[docs] def autonomousPeriodic(self):
self.auto.update_smart_dashboard()
self.imu.update_smart_dashboard()
self.drivetrain.update_smart_dashboard()
self.auto.periodic()
[docs] def teleopInit(self):
self.teleop = Teleop(self)
self.drivetrain.load_config_values()
constants.load_control_config()
[docs] def teleopPeriodic(self):
# For now: basic driving
constants.load_control_config()
self.teleop.drive()
self.teleop.buttons()
self.teleop.lift_control()
self.drivetrain.update_smart_dashboard()
self.teleop.update_smart_dashboard()
self.imu.update_smart_dashboard()
if __name__ == "__main__":
wpilib.run(Robot)