|
Re: Problem with NavX to turn around.
Quote:
Originally Posted by Ether
Let S be your sensor angle reading (in degrees, can be any range, even outside the range +/-360)
Let T be your desired angle position (in degrees, can be any range, even outside the range +/-360)
the angle between them (let's call it ERR) is found by the equation:
ERR = (T-S) - 360*floor(0.5+(T-S)/360);
the above returns a value for ERR between -180 and +180 degrees,
the shortest angle path to the target. Don't believe me? Try it.
So it tells you which direction to rotate as well as how much to rotate.
To use this with a PID, use processVariable = setpoint-ERR
|
This is unnecessary with the NavX and WPILib, as one can simply call AHRS pidGet() (which always ranges from -180 to 180) and ensure that the PIDController object is set to have a continuous range and not have to ever explicitly do any of the math.
__________________
"Mmmmm, chain grease and aluminum shavings..."
"The breakfast of champions!"
Member, FRC Team 449: 2007-2010
Drive Mechanics Lead, FRC Team 449: 2009-2010
Alumnus/Technical Mentor, FRC Team 449: 2010-Present
Lead Technical Mentor, FRC Team 4464: 2012-2015
Technical Mentor, FRC Team 5830: 2015-2016
Last edited by Oblarg : 16-04-2016 at 15:06.
|