Skip to content

Commit 8a0edbb

Browse files
authored
Merge pull request #414 from thedropbears/redo_climber_sm
2 parents 78d7b48 + d2f1108 commit 8a0edbb

File tree

4 files changed

+20
-51
lines changed

4 files changed

+20
-51
lines changed

components/climber.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class ClimberComponent:
1919

2020
def __init__(self) -> None:
2121
self.START_ANGLE = -30.0
22-
self.PRE_CLIMB_ANGLE = -20.0
2322
self.DEPLOY_ANGLE = 16.0
2423
self.RETRACT_ANGLE = -52.0
2524

@@ -79,9 +78,6 @@ def set_angle(self, angle: float) -> None:
7978
def go_to_neutral(self) -> None:
8079
self.set_angle(math.radians(self.START_ANGLE))
8180

82-
def go_to_pre_climb(self) -> None:
83-
self.set_angle(math.radians(self.PRE_CLIMB_ANGLE))
84-
8581
def go_to_deploy(self) -> None:
8682
self.set_angle(math.radians(self.DEPLOY_ANGLE))
8783

components/led_component.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -168,18 +168,6 @@ def climber_deploying(self, left_okay: bool, right_okay: bool) -> None:
168168
)
169169
self.keep_alive()
170170

171-
def climber_pre_climb(self, left_okay: bool, right_okay: bool) -> None:
172-
self.pattern = LEDPattern.blink(
173-
LEDPattern.steps(
174-
[
175-
(0.0, Color.kGreen if left_okay else Color.kRed),
176-
(self.halfway_split, Color.kGreen if right_okay else Color.kRed),
177-
]
178-
),
179-
0.125,
180-
)
181-
self.keep_alive()
182-
183171
def climber_retracting(self) -> None:
184172
colour = Color.kRed if is_red() else Color.kBlue
185173
steps = []

controllers/climber.py

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import math
22

3-
from magicbot import StateMachine, state
3+
from magicbot import StateMachine, feedback, state
44

55
from components.chassis import ChassisComponent
66
from components.climber import ClimberComponent
@@ -15,33 +15,42 @@ class ClimberStateMachine(StateMachine):
1515

1616
def __init__(self):
1717
self.has_deployed = False
18+
self.seen_left = False
19+
self.seen_right = False
1820
self.heading_to_cage = 0.0
1921
self.should_localize = True
2022

2123
def on_disable(self) -> None:
22-
self.has_deployed = False
2324
super().on_disable()
2425

2526
def deploy(self, *, localize: bool = True) -> None:
2627
self.should_localize = localize
28+
self.has_deployed = False
29+
self.seen_right = False
30+
self.seen_left = False
2731
self.engage("deploying", force=True)
2832

2933
def deploy_without_localization(self) -> None:
3034
self.deploy(localize=False)
3135

3236
def retract(self) -> None:
33-
if self.has_deployed:
37+
if self.has_deployed and self.is_ready_to_climb():
3438
self.engage("retracting", force=True)
3539

3640
@state(first=True, must_finish=True)
3741
def deploying(self, initial_call) -> None:
38-
self.status_lights.climber_deploying(
39-
left_okay=self.climber.is_left_engaged(),
40-
right_okay=self.climber.is_right_engaged(),
41-
)
4242
if initial_call:
4343
self.climber.go_to_deploy()
4444

45+
if self.climber.is_left_engaged():
46+
self.seen_left = True
47+
if self.climber.is_right_engaged():
48+
self.seen_right = True
49+
self.status_lights.climber_deploying(
50+
left_okay=self.seen_left,
51+
right_okay=self.seen_right,
52+
)
53+
4554
if self.climber.is_deployed():
4655
self.climber.stop_pid_update()
4756
self.has_deployed = True
@@ -65,21 +74,9 @@ def deploying(self, initial_call) -> None:
6574
)
6675
self.chassis.snap_to_heading(self.heading_to_cage)
6776

77+
@feedback
6878
def is_ready_to_climb(self) -> bool:
69-
return self.climber.is_left_engaged() and self.climber.is_right_engaged()
70-
71-
def pre_climb(self) -> None:
72-
self.engage("pre_climbing", force=True)
73-
74-
@state(must_finish=True)
75-
def pre_climbing(self) -> None:
76-
self.status_lights.climber_pre_climb(
77-
left_okay=self.climber.is_left_engaged(),
78-
right_okay=self.climber.is_right_engaged(),
79-
)
80-
self.climber.start_pid_update()
81-
self.chassis.stop_snapping()
82-
self.climber.go_to_pre_climb()
79+
return self.seen_left and self.seen_right
8380

8481
@state(must_finish=True)
8582
def retracting(self) -> None:

robot.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -246,13 +246,7 @@ def teleopPeriodic(self) -> None:
246246
if self.gamepad.getYButton():
247247
self.climber_state_machine.deploy()
248248
if self.gamepad.getAButton():
249-
if (
250-
self.climber_state_machine.current_state == "pre_climbing"
251-
and self.climber_state_machine.is_ready_to_climb()
252-
) or self.climber_state_machine.current_state == "retracting":
253-
self.climber_state_machine.retract()
254-
else:
255-
self.climber_state_machine.pre_climb()
249+
self.climber_state_machine.retract()
256250

257251
if self.gamepad.getBButton():
258252
self.reef_intake.done()
@@ -315,13 +309,7 @@ def testPeriodic(self) -> None:
315309
self.climber_state_machine.deploy_without_localization()
316310

317311
if self.gamepad.getAButton():
318-
if (
319-
self.climber_state_machine.current_state == "pre_climbing"
320-
and self.climber_state_machine.is_ready_to_climb()
321-
) or self.climber_state_machine.current_state == "retracting":
322-
self.climber_state_machine.retract()
323-
else:
324-
self.climber_state_machine.pre_climb()
312+
self.climber_state_machine.retract()
325313

326314
if self.gamepad.getXButton():
327315
self.coral_depositor_component.deposit()

0 commit comments

Comments
 (0)