@@ -36,6 +36,9 @@ void ClimbStep::Initialize() {
36
36
// Prevent drive team from activating ClimbStep before ReadyCreeperArm
37
37
// runs. Otherwise, the climb arm may swing into the cargo-intake.
38
38
m_HasPrerequisites = Robot::GetCreeperClimb ().IsArmAtPosition (" arm-ready" );
39
+ m_Segment = Segment::Initialize;
40
+
41
+ Robot::GetCreeperClimb ().SetOutputRange (-0.7 , 0.7 );
39
42
}
40
43
41
44
void ClimbStep::Execute () {
@@ -45,55 +48,67 @@ void ClimbStep::Execute() {
45
48
}
46
49
47
50
switch (m_Segment) {
48
- case 0 :
51
+ case Segment::Initialize: // Initialization, runs once
49
52
Robot::GetCreeperClimb ().RotateArmToPosition (" arm-climb" );
50
53
51
54
Robot::GetCreeperClimb ().SetSolenoidDescend (false );
52
55
Robot::GetCreeperClimb ().SetSolenoidAscend (true );
53
56
54
- // if (Robot::GetCreeperClimb().GetSolenoidSwitch() == true) {
55
- // Robot::GetCreeperClimb().SetSolenoidDescend(true);
56
- // Robot::GetCreeperClimb().SetSolenoidAscend(false);
57
- // }
57
+ m_Segment = Segment::CheckSwitch;
58
58
break ;
59
- case 1 :
60
- /*
61
- Robot::GetCreeperClimb().SetArmWheels(true); // wheels need to be SLOWED!!
62
- Robot::GetDriveTrain().Drive(0.2, 0.2); // move robot wheels slow
63
- */
59
+ case Segment::CheckSwitch:
60
+ if (Robot::GetCreeperClimb ().GetSolenoidSwitch ()) {
61
+ Robot::GetCreeperClimb ().SetSolenoidDescend (true );
62
+ Robot::GetCreeperClimb ().SetSolenoidAscend (true );
63
+
64
+ m_Segment = Segment::CheckArm;
65
+ }
64
66
break ;
65
- case 2 :
66
- /*
67
- Robot::GetCreeperClimb().SetSolenoidDescend(false);
68
- Robot::GetCreeperClimb().SetSolenoidAscend(true);
69
- */
67
+ case Segment::CheckArm:
68
+ if (Robot::GetCreeperClimb ().IsArmAtPosition (" arm-climb" )) {
69
+ m_Segment = Segment::RollCreeper;
70
+ }
71
+ case Segment::RollCreeper:
72
+ Robot::GetCreeperClimb ().SetArmWheels (true );
73
+ m_Delay.Start ();
74
+
75
+ m_Segment = Segment::StopCreeper;
76
+ break ;
77
+ case Segment::StopCreeper:
78
+ if (m_Delay.IsDone ()) {
79
+ m_Delay.Stop ();
80
+ Robot::GetCreeperClimb ().SetArmWheels (false );
81
+ m_Segment = Segment::RaiseSolenoids;
82
+ }
70
83
break ;
71
- case 3 :
72
- /*
73
- Robot::GetDriveTrain().Drive(0.2, 0.2); // move robot wheels slow
74
- */
84
+ case Segment::RaiseSolenoids:
85
+ Robot::GetCreeperClimb ().RotateArmToPosition (" home" );
86
+ Robot::GetCreeperClimb ().SetSolenoidDescend (true );
87
+ Robot::GetCreeperClimb ().SetSolenoidAscend (false );
88
+ m_Segment = Segment::End;
89
+ break ;
90
+ case Segment::End:
75
91
break ;
76
92
default :
77
93
cout << " Unknown segment in ClimbStep! (segment:" << m_Segment << " )" << endl;
78
94
}
79
95
80
- if (Robot::m_OI.GetOperatorJoystick ().GetAButtonPressed ()) {
81
- m_Segment++; // next segment every A button press
82
- } else if (Robot::m_OI.GetOperatorJoystick ().GetBButtonPressed ()) {
83
- m_Segment--; // let operator go back a segment in case of a mis-press
84
- }
96
+ cout << " segment: " << m_Segment << endl;
97
+ Robot::GetDriveTrain ().ArcadeDrive (0 , 0 );
85
98
}
86
99
87
100
bool ClimbStep::IsFinished () {
88
- return ! m_HasPrerequisites;
101
+ return !m_HasPrerequisites || m_Segment == Segment::End ;
89
102
}
90
103
91
104
void ClimbStep::End () {
92
105
// Make sure rollers are stopped.
93
106
Robot::GetCreeperClimb ().StopArmWheels ();
107
+ Robot::GetCreeperClimb ().SetOutputRange (-1 , 1 );
94
108
}
95
109
96
110
void ClimbStep::Interrupted () {
97
111
// Make sure rollers are stopped.
98
112
Robot::GetCreeperClimb ().StopArmWheels ();
113
+ Robot::GetCreeperClimb ().SetOutputRange (-1 , 1 );
99
114
}
0 commit comments