View Single Post
  #9   Spotlight this post!  
Unread 04-07-2016, 23:06
virtuald's Avatar
virtuald virtuald is offline
RobotPy Guy
AKA: Dustin Spicuzza
FRC #1418 (), FRC #1973, FRC #4796, FRC #6367 ()
Team Role: Mentor
 
Join Date: Dec 2008
Rookie Year: 2003
Location: Boston, MA
Posts: 1,041
virtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant future
Re: Why won't this PID loop stop?

Quote:
Originally Posted by team-4480 View Post
So if I did a state machine for that setSetpoint like this:

Code:
if state == 1:
    setSetpoint(90)
    state = 2
elif state ==2:
    if onTarget():
        state=3
Would that solve the issue?
That seems to be a bit more complex than necessary. First, don't ignore the other suggestions on this thread -- proper tuning will go a long way also. But, if you want onTarget to work, then a simpler solution is:

Code:
self.last = None
...


if self.last is None or abs(self.last - target) > 0.001:
    self.pid_controller.setSetpoint(target)
    self.last = target
__________________
Maintainer of RobotPy - Python for FRC
Creator of pyfrc (Robot Simulator + utilities for Python) and pynetworktables/pynetworktables2js (NetworkTables for Python & Javascript)

2017 Season: Teams #1973, #4796, #6369
Team #1418 (remote mentor): Newton Quarterfinalists, 2016 Chesapeake District Champion, 2x Innovation in Control award, 2x district event winner
Team #1418: 2015 DC Regional Innovation In Control Award, #2 seed; 2014 VA Industrial Design Award; 2014 Finalists in DC & VA
Team #2423: 2012 & 2013 Boston Regional Innovation in Control Award


Resources: FIRSTWiki (relaunched!) | My Software Stuff

Last edited by virtuald : 05-07-2016 at 15:45. Reason: Rename input -> target
Reply With Quote