Quote:
Originally Posted by Roger
I had fiddled with this off and on years before, but never really worked it out properly or had the time (or a spare robot) during build season. It's nice to see it formalized and posted here.
Just to make it clear (or correct me if I'm wrong), the X and Y are not the actual joystick numbers from the X and Y axis
|
Correct. The X and Y are general variables. You can use this approach for any signal, not just the inputs from a joystick. For a 3-axis joystick, if you wanted to independently adjust the sensitivity for each axis, it would look like this:
X' = a1*X^3 + (1-a1)*X
Y' = a2*Y^3 + (1-a2)*Y
Z' = a3*Z^3 + (1-a3)*Z
Quote:
|
...looking at the graph for f(x)=x^3, in all practicallity the robot motors might not overcome robot weight at all under +/-0.3.
|
Yes, at higher values of the "a" parameter, you may not need to add deadband.
Quote:
|
I wonder what the effect would be if a<0? That is, more power near zero (to overcome the robot weight) and leveling off at higher speeds.
|
Higher gain near zero, lower gain at higher commands. Not recommended under normal circumstances. See the added purple lines in the attached graph*. Also, you'd have to add logic to constrain the output to the range -1/+1.
Quote:
|
In practice this would have to be adjusted to each individual robot; even similar robots (a prototype and competition robot for example) would have different results. Also adjust to the driver, as different drivers like different reactions.
|
Yes, that's the idea.
*for some reason this thread does not allow me to attach the graph