|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools |
Rating:
|
Display Modes |
|
|
|
#1
|
||||||
|
||||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Quote:
When I looked at it years ago, I wasn't happy with a 5th order polynomial approximation. We used the following lookup table below with the IFI system (input range 0-254, output range 0-254). It wasn't perfect, but greatly improved over nothing. Code:
0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 12 12 12 12 12 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 16 16 17 17 17 17 17 18 18 18 18 18 18 19 19 19 19 19 19 20 20 20 20 20 20 20 21 21 22 22 23 23 23 23 24 24 24 25 26 26 27 27 28 29 29 30 30 31 32 33 33 34 35 36 37 38 39 41 43 45 47 48 51 52 55 59 66 68 73 79 84 92 127 127 143 144 144 144 144 144 145 145 145 145 145 145 145 145 145 145 146 146 146 146 146 146 146 146 146 146 146 146 147 147 147 147 147 147 147 148 148 148 148 149 149 149 149 149 149 149 149 150 150 150 150 150 150 150 150 151 151 151 151 151 151 151 151 152 152 152 152 154 154 154 154 155 155 155 156 156 155 157 157 157 157 157 157 157 159 159 159 159 160 160 160 161 162 163 163 164 164 164 165 166 167 168 169 169 170 171 172 173 174 175 176 177 178 179 182 183 188 191 192 193 196 203 207 211 220 229 254 Last edited by Joe Ross : 17-11-2011 at 17:10. |
|
#2
|
||||
|
||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Thanks guys.
In the end, I kind of expected some derivation-based way of doing this as opposed to brute force best-fit-line equations, but this makes it easier for me. By removing the 'tail' of the victor response down at the intermediate pulse widths that generally fall within the deadband of robot motion due to friction, I was able to get a very nice fit on a couple of 6th order polynomials. I'll poke through the rest of it tonight. I WISH I trusted the jaguars enough to use them on our drivetrain. Perhaps I'm being paranoid, but I still worry about them burning out on fast full-reverse to full-forward transitions. The voltage mode and their linearity looks wonderful! |
|
#3
|
|||||
|
|||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
You and me both. The 2011 hardware beta test teams have been experimenting with a new version of the Jaguar firmware that implements an "output ramp" function in both PWM and CAN modes to help deal with this case, so hopefully that will help.
|
|
#4
|
||||
|
||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Yeah, we've been playing with it, but the practical side of me screams that I don't want that tiny delay between full back and full forward. The delay is infintesimal and practically we wouldn't ever see it..... it's just the engineer in me crying out to fix the problem and not the symptom.
|
|
#5
|
||||
|
||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Quote:
I got a pretty nice fit using just 2 cubics by splitting the curve into 2 sections. See attached screenshot. Cells A2-A21 and C2-C21 are pulse and volts data from the link you provided. I normalized that data to the range +/-1 for command and output in cells B2-B21 and D2-D21. I copied the positive half of the curve to cells A27-B38, reversing the cmd & out to get the inverse function, and divided it into 2 sections: cells E27-F33 and E35-F41. Then I fit a cubic to each section. The equations are in the two graphs at the bottom. I spliced the 2 cubics together and you can see the net result at the top. It's a pretty nice fit, and for not much math. To use it, test your desired (positive) command. If it's less than 0.842 use the first cubic, otherwise use the second. If it's zero, use zero. You could use the same cubics for the negative half of the curve, or create new curves for that half. Last edited by Ether : 17-11-2011 at 18:00. Reason: typo |
|
#6
|
||||
|
||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Thanks guys. It's been a long time since I've had one of those AH HA! moments.....
I guess I never realized how far from linear the Victors can be. We've used joystick input modification VI's in the past to make the bots easier to drive, but I never put 2 and 2 together and realized a huge portion of that issue is caused by the Victor's response. We noticed last year that the logitech dual action game pad (at least one of them) had a hokey joystick that wasn't even close to linear. We threw that one away, but after modeling the cim response like this, I'm almost tempted to do the same to the game pad joysticks so I can linearize them too. Here's my final result using a single 6th order polynomial. Darn do I love learning. (Note: The numbers between .08 and -.08 are not representative in this graph - those are our dead band and will be modified to zero output). Last edited by Tom Line : 17-11-2011 at 19:25. |
|
#7
|
|||||
|
|||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Pertinent response RE: 5th and 7th order polynomials here: http://www.chiefdelphi.com/forums/sh...t=98267&page=2
|
|
#8
|
||||
|
||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
The Victor data from the link Joe provided: Code:
pulse volts 1.04 -12 1.07 -11.99 1.12 -11.7 1.27 -11.27 1.36 -10.12 1.41 -8.52 1.46 -3.8 1.48 -0.8 1.49 0 1.55 0 1.56 0.8 1.58 2.8 1.6 5.4 1.65 8.9 1.7 10.1 1.75 10.87 1.8 11.25 1.85 11.55 1.9 11.8 2 12 Code:
cmd out -1 -1 -0.9375 -0.999166667 -0.833333333 -0.975 -0.520833333 -0.939166667 -0.333333333 -0.843333333 -0.229166667 -0.71 -0.125 -0.316666667 -0.083333333 -0.066666667 -0.0625 0 0.0625 0 0.083333333 0.066666667 0.125 0.233333333 0.166666667 0.45 0.270833333 0.741666667 0.375 0.841666667 0.479166667 0.905833333 0.583333333 0.9375 0.6875 0.9625 0.791666667 0.983333333 1 1 (to get inverse function for linearization) and select only the positive commands: Code:
out cmd 0 0.0625 0.066666667 0.083333333 0.233333333 0.125 0.45 0.166666667 0.741666667 0.270833333 0.841666667 0.375 0.905833333 0.479166667 0.9375 0.583333333 0.9625 0.6875 0.983333333 0.791666667 1 1 Fit a rational function model to the data: Code:
(p1*x^4+p2*x^3+p3*x^2+p4*x+p5) / (x^2+p6*x+p7) Code:
-0.43231217703332, 1.136975493080563, -1.043577770662604, 0.26894582879701, 0.069994693624, -2.151432791900253, 1.151458861241842 |
|
#9
|
|||||
|
|||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Here is an interesting post from the old IFI Robotics forum that describes what is going on "under the hood" of a Victor.
http://www.ifirobotics.com/forum/viewtopic.php?t=317 Note that there are only 94 discrete output states in each direction. This would make a look-up table a pretty attractive solution. Also, "Be aware that it may take 3 or 4 input steps before the Victor changes its Output." EDIT: Although this post seems to contradict the last bit about latency: http://www.ifirobotics.com/forum/viewtopic.php?t=375 Last edited by Jared Russell : 21-11-2011 at 10:04. |
|
#10
|
||||
|
||||
|
Re: Autonomous: Mixing Drive Distance PID's with Turn Angle PID's.
Quote:
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|