-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Welcome to the RobotPy community!
I was looking over your code and noticed an issue you're probably going to want to address. Referring to this bit of code, you have code that looks like this:
@state()
def drive_forward_towards_ball(self) :
while (self.drive.lfencoder.getDistance() + self.drive.rfencoder.getDistance()) <= 16 :
self.drive.xboxTankDrive(0.4, 0.4)
self.next_state(self.swerve_away_from_ball)
The hidden problem here is that if the encode values never goes past 16 (for example, if a wire in the encoder becomes unplugged), your code will never exit autonomous mode. Instead, remember that there's already a while loop running somewhere that will call this function over and over again, so you just need to use an if statement:
@state()
def drive_forward_towards_ball(self) :
if (self.drive.lfencoder.getDistance() + self.drive.rfencoder.getDistance()) <= 16 :
self.drive.xboxTankDrive(0.4, 0.4)
else:
self.next_state(self.swerve_away_from_ball)
Hope that helps!
Also, self.next_state accepts a string, not a function argument (though, I'll change that soon).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels