Quote:
Originally Posted by BRosser314
469 had 2 joysticks, one for translation and one for the rotation, this setup was very simple, even for me which just drove the joysticks for about 3 minutes, and i thought it was simple
|
To start with a concept: The robot is always rotating around an imaginary point, somewhere. Putting the point at infinity causes the robot to go straight.
To be a little more in depth about our controls, we used one stick to control the magnitude and direction of translations. The other one controlled the magnitude of rotations. We use both the X and Y axis on translation, and only the X axis for rotation.
Through a direct ratio of the 2 sticks (since the robot can only be outputting 100% power at any time, therefore it cannot be rotating at 100% and translating at 100% at the same time), the "imaginary point" was decided via software. The point was placed along a line, generated by the angle of the translation stick, and the exact point being dictated by the magnitude of the rotation stick. If the rotating stick stayed at 127, then the point is off at "infinity" (or actually 1618 feet or something, due to software limits on handling large numbers (we needed to square that number)). The further the rotation stick moved away from 127 the closer the "imaginary point" got to the robot.
Now, we draw an imaginary line from the "imaginary point" to each of the wheels, and draw another line perpendicular to that first line. The second line is where the wheels should be pointing to achieve the desired translation/rotation/combination of both.
For example, if the translation stick is at 127, and the rotation stick is at 255, the imaginary point would be placed in the center of the robot, and the wheels will be placed perpendicular the the line between that point and the wheel (via closed loop PID control). Since only the rotation stick is being used, 100% of the power output of the robot will be dedicated to rotations.
Now, lets say the rotation stick is at 127 and the translation stick is at (0,127) which is completely left. The point will be placed infinitely far in front of the robot (infinitely being 1618 feet) away from the robot, and put the wheels perpendicular to the line leading from the point the each of the wheels. Then, 100% of the drive power is devoted to translating (which is actually not true, it's devoted to rotating about a point VERY far away).
The advantage of this system is that it's capable of both translating, rotating, and both at the same time, with relative ease (well that's a lie... it's hard to program)
By the way, this is only possible for 4 independently steered wheels. I have no idea how to do it if you use linked. I guess the easiest way is to use 1 stick purely for translations, and one purely for rotations, skid stearing. With translations, it's easy, point in that direction, and move. With rotations, I would say point them all forward and turn... like a normal 4wd system.
If you want to know more feel free to PM me and i'll explain the system to the best of my knowledge.