Skip to content

Commit 0072a3a

Browse files
author
NewtonCrosby
committed
Made PR requested changes as well as mypy detected errors
1 parent ce75329 commit 0072a3a

File tree

1 file changed

+42
-47
lines changed

1 file changed

+42
-47
lines changed

commands2/ramsetecommand.py

Lines changed: 42 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# the WPILib BSD license file in the root directory of this project.
44
from __future__ import annotations
55

6-
from typing import Callable, Union
6+
from typing import Callable, Union, Optional
77
from wpimath.controller import (
88
PIDController,
99
RamseteController,
@@ -48,10 +48,10 @@ def __init__(
4848
kinematics: DifferentialDriveKinematics,
4949
outputVolts: Callable[[float, float], None],
5050
*requirements: Subsystem,
51-
feedforward: SimpleMotorFeedforwardMeters | None = None,
52-
leftController: PIDController | None = None,
53-
rightController: PIDController | None = None,
54-
wheelSpeeds: Callable[[], DifferentialDriveWheelSpeeds] | None = None,
51+
feedforward: Optional[SimpleMotorFeedforwardMeters],
52+
leftController: Optional[PIDController],
53+
rightController: Optional[PIDController],
54+
wheelSpeeds: Optional[Callable[[], DifferentialDriveWheelSpeeds]],
5555
):
5656
"""Constructs a new RamseteCommand that, when executed, will follow the provided trajectory. PID
5757
control and feedforward are handled internally, and outputs are scaled -12 to 12 representing
@@ -82,20 +82,16 @@ def __init__(
8282
"""
8383
super().__init__()
8484

85-
self.timer = Timer()
85+
self._timer = Timer()
8686

8787
# Store all the requirements that are required
88-
self.trajectory: Trajectory = trajectory
88+
self.trajectory = trajectory
8989
self.pose = pose
90-
self.follower: RamseteController = controller
90+
self.follower = controller
9191
self.kinematics = kinematics
92-
self.output: Callable[[float, float], None] = outputVolts
93-
self.leftController = None
94-
self.rightController = None
95-
self.feedforward = None
96-
self.wheelspeeds = None
92+
self.output = outputVolts
9793
self.usePID = False
98-
# Optional requirements checks. If any one of the optionl parameters are not None, then all the optional
94+
# Optional requirements checks. If any one of the optional parameters are not None, then all the optional
9995
# requirements become required.
10096
if feedforward or leftController or rightController or wheelSpeeds is not None:
10197
if feedforward or leftController or rightController or wheelSpeeds is None:
@@ -109,78 +105,77 @@ def __init__(
109105
self.wheelspeeds: Callable[[], DifferentialDriveWheelSpeeds] = wheelSpeeds
110106
self.feedforward: SimpleMotorFeedforwardMeters = feedforward
111107
self.usePID = True
112-
self.prevSpeeds = DifferentialDriveWheelSpeeds()
113-
self.prevTime = -1.0
108+
self._prevSpeeds = DifferentialDriveWheelSpeeds()
109+
self._prevTime = -1.0
114110

115111
self.addRequirements(*requirements)
116112

117113
def initialize(self):
118-
self.prevTime = -1
114+
self._prevTime = -1
119115
initial_state = self.trajectory.sample(0)
120-
initial_speeds = self.kinematics.toWheelSpeeds(
116+
self._prevSpeeds = self.kinematics.toWheelSpeeds(
121117
ChassisSpeeds(
122118
initial_state.velocity,
123119
0,
124120
initial_state.curvature * initial_state.velocity,
125121
)
126122
)
127-
self.prevSpeeds = initial_speeds
128-
self.timer.restart()
123+
self._timer.restart()
129124
if self.usePID:
130125
self.leftController.reset()
131126
self.rightController.reset()
132127

133128
def execute(self):
134-
cur_time = self.timer.get()
135-
dt = cur_time - self.prevTime
129+
curTime = self._timer.get()
130+
dt = curTime - self._prevTime
136131

137-
if self.prevTime < 0:
132+
if self._prevTime < 0:
138133
self.output(0.0, 0.0)
139-
self.prevTime = cur_time
134+
self._prevTime = curTime
140135
return
141136

142-
target_wheel_speeds = self.kinematics.toWheelSpeeds(
143-
self.follower.calculate(self.pose(), self.trajectory.sample(cur_time))
137+
targetWheelSpeeds = self.kinematics.toWheelSpeeds(
138+
self.follower.calculate(self.pose(), self.trajectory.sample(curTime))
144139
)
145140

146-
left_speed_setpoint = target_wheel_speeds.left
147-
right_speed_setpoint = target_wheel_speeds.right
141+
leftSpeedSetpoint = targetWheelSpeeds.left
142+
rightSpeedSetpoint = targetWheelSpeeds.right
148143

149144
if self.usePID:
150-
left_feedforward = self.feedforward.calculate(
151-
left_speed_setpoint, (left_speed_setpoint - self.prevSpeeds.left) / dt
145+
leftFeedforward = self.feedforward.calculate(
146+
leftSpeedSetpoint, (leftSpeedSetpoint - self._prevSpeeds.left) / dt
152147
)
153148

154-
right_feedforward = self.feedforward.calculate(
155-
right_speed_setpoint,
156-
(right_speed_setpoint - self.prevSpeeds.right) / dt,
149+
rightFeedforward = self.feedforward.calculate(
150+
rightSpeedSetpoint,
151+
(rightSpeedSetpoint - self._prevSpeeds.right) / dt,
157152
)
158153

159-
left_output = left_feedforward + self.leftController.calculate(
160-
self.wheelspeeds().left, left_speed_setpoint
154+
leftOutput = leftFeedforward + self.leftController.calculate(
155+
self.wheelspeeds().left, leftSpeedSetpoint
161156
)
162157

163-
right_output = right_feedforward + self.rightController.calculate(
164-
self.wheelspeeds().right, right_speed_setpoint
158+
rightOutput = rightFeedforward + self.rightController.calculate(
159+
self.wheelspeeds().right, rightSpeedSetpoint
165160
)
166161
else:
167-
left_output = left_speed_setpoint
168-
right_output = right_speed_setpoint
162+
leftOutput = leftSpeedSetpoint
163+
rightOutput = rightSpeedSetpoint
169164

170-
self.output(left_output, right_output)
171-
self.prevSpeeds = target_wheel_speeds
172-
self.prevTime = cur_time
165+
self.output(leftOutput, rightOutput)
166+
self._prevSpeeds = targetWheelSpeeds
167+
self._prevTime = curTime
173168

174-
def end(self, interrupted):
175-
self.timer.stop()
169+
def end(self, interrupted: bool):
170+
self._timer.stop()
176171

177172
if interrupted:
178173
self.output(0.0, 0.0)
179174

180175
def isFinished(self):
181-
return self.timer.hasElapsed(self.trajectory.totalTime())
176+
return self._timer.hasElapsed(self.trajectory.totalTime())
182177

183178
def initSendable(self, builder: SendableBuilder):
184179
super().initSendable(builder)
185-
builder.addDoubleProperty("leftVelocity", lambda: self.prevSpeeds.left, None)
186-
builder.addDoubleProperty("rightVelocity", lambda: self.prevSpeeds.right, None)
180+
builder.addDoubleProperty("leftVelocity", lambda: self._prevSpeeds.left, lambda *float: None)
181+
builder.addDoubleProperty("rightVelocity", lambda: self._prevSpeeds.right, lambda *float: None)

0 commit comments

Comments
 (0)