33# the WPILib BSD license file in the root directory of this project.
44from __future__ import annotations
55
6- from typing import Callable , Union
6+ from typing import Callable , Union , Optional
77from 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