Skip to content
This repository has been archived by the owner on Jan 10, 2025. It is now read-only.

Commit

Permalink
Climber Rework (#23)
Browse files Browse the repository at this point in the history
Co-authored-by: kredcool <[email protected]>
  • Loading branch information
KenwoodFox and kredcool authored Mar 13, 2024
1 parent c7d1934 commit 0d748ea
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 11 deletions.
35 changes: 31 additions & 4 deletions rio/commands/spool.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
import typing
import logging
import commands2

from constants import ClimberConstants

from subsystems.climber import Climber
from subsystems.shooter import Shooter


class Spool(commands2.Command):
def __init__(
self,
_speed,
_speed: typing.Callable[
[],
float,
],
_climber: Climber,
_shooter: Shooter,
):
"""
rotates the climber
Expand All @@ -18,18 +25,38 @@ def __init__(

# local instance of subsystem
self.climber = _climber
self.shooter = _shooter

# local var of speed
self.speed = _speed

# Command requires
self.addRequirements((self.climber))
self.addRequirements((self.climber, self.shooter))

def initialize(self):
self.climber.setServoAngle(ClimberConstants.kservoOpen)
self.climber.setServoAngle(ClimberConstants.kServoLock)

def execute(self):
logging.debug(f"Climb is {self.speed}")

if self.speed == 0 or self.speed >= 0.5:
# Positive numbers imply we're pulling DOWN
self.shooter.currlimit(1)
self.climber.setServoAngle(ClimberConstants.kServoLock)
self.shooter.rotateManual(
-self.speed * ClimberConstants.kClimberShooterForward
)
else:
# Negative numbers imply we're relaxing
self.shooter.currlimit(2)
self.climber.setServoAngle(ClimberConstants.kservoOpen)
self.shooter.rotateManual(
-self.speed * ClimberConstants.kClimberShooterBackward
)

self.climber.setClimberMotorSpeed(self.speed)

def end(self, interrupted: bool):
self.climber.setServoAngle(ClimberConstants.kServoLock)
self.shooter.currlimit(35)
self.climber.setClimberMotorSpeed(0)
self.shooter.rotateManual(0)
4 changes: 2 additions & 2 deletions rio/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,5 +213,5 @@ class ClimberConstants:
kservoOpen = 0.165

# Relationship between climber speed and shooter angle (rough but ugh..)
kClimberShooterForward = 0.3 # Down
kClimberShooterBackward = 0.5 # Up
kClimberShooterForward = 0.4 # Down
kClimberShooterBackward = 0.75 # Up
4 changes: 2 additions & 2 deletions rio/robotcontainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,8 @@ def configureButtonBindings(self) -> None:
self.opController.button(4).whileTrue(manualROT(-0.5, self.shooter))

# climber
self.opController.button(5).whileTrue(Climb(0.2, self.climber, self.shooter))
self.opController.button(7).whileTrue(Spool(-0.1, self.climber))
self.opController.button(5).whileTrue(Spool(0.2, self.climber, self.shooter))
self.opController.button(7).whileTrue(Spool(-0.1, self.climber, self.shooter))

# Cancel all
self.opController.button(8).onTrue(commands2.InstantCommand(self.cancelAll))
Expand Down
4 changes: 2 additions & 2 deletions rio/simgui-window.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"GLOBAL": {
"fps": "120",
"height": "699",
"maximized": "1",
"maximized": "0",
"style": "0",
"userScale": "2",
"width": "1366",
Expand All @@ -18,7 +18,7 @@
"###FMS": {
"Collapsed": "0",
"Pos": "5,540",
"Size": "283,140"
"Size": "169,184"
},
"###Joysticks": {
"Collapsed": "0",
Expand Down
7 changes: 6 additions & 1 deletion rio/subsystems/shooter.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,15 @@ def __init__(self) -> None:

self.rotateMotor.setIdleMode(rev._rev.CANSparkBase.IdleMode.kBrake)

self.rotateMotor.setSmartCurrentLimit(35)

# Burn flymotor configuration
self.flyMotor.burnFlash()
self.rotateMotor.burnFlash()

def periodic(self) -> None:
self.sd.putNumber("Thermals/rotate", self.rotateMotor.getMotorTemperature())
self.sd.putNumber("Thermals/fly", self.flyMotor.getMotorTemperature())
print(self.rotateEncoder.getPosition())

def setFlyWheelSpeed(self, speed):
self.flyMotor.set(speed)
Expand Down Expand Up @@ -141,3 +142,7 @@ def setFlyVelocity(self, velocity):
def setIdleMode(self, mode):
self.rotateMotor.setIdleMode(mode)
self.rotateMotor.burnFlash()

def currlimit(self, currlmt):
self.rotateMotor.setSmartCurrentLimit(currlmt)
self.rotateMotor.burnFlash()

0 comments on commit 0d748ea

Please sign in to comment.