I’m starting to develop some sketches of a crab drive for a future robot and I’ve been putting quite a bit of thought into the joystick configuration.
What’s the most common setup you’ve seen? I’ve thought about a single joystick for translational control with a left/right joystick for rotational control.
What else have you seen at the competitions? I admit to not having paid much attention to what the experienced crab teams like Stangs do, so I’m hoping to get some ideas of how it’s handled.
Suggestions on our team have ranged from a single joystick plus a dial control for orientation to twin joysticks that act in a way soas to mimic skid steering (to a degree).
2052 uses two sticks like the setup you mentioned, but with rotation on the forward/backward stick (like traditional arcade style skid steer) and strafe on the second stick. Its very intuitive to drive.
we use two joysticks to control the robot. One joystick controls one-third of the steering and speed, the other controls the other two thirds. If they are both used, 100% of the steering and speed is used. It works excellent because it allows for fine tuning without compromising function. We use translational control as the default, and once either of the triggers is used, the robot uses the rotational coordinated steering.
Malhon
this year we used 1 single ch flightstick for all of our swerve functions. the joystick heading was translated in to degrees 0-360 and the amplitude from the center is how much power to the wheels. but to activate the drive wheels you have to pull the trigger which then allows passive resistance to sit still. then with the button on top puts the robot in “tank mode” which changes the front of our robot to the long side and allows us to drive around in 1-stick tank mode.
We sprung for the USB adapter so we could use an X-Box controller. We used one of the joysticks for translating and one for rotating. Driving like a video game and using fingers instead of wrists made it a lot more intuitive for the driver and gave him a lot more control.
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
We used a single Logitech 3D joystick, connected via USB Chicklet. Translation was controlled by the X and Y axes, and rotation was controlled by the twist axis.
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.
We have used the same basic crab control on all of our robots since 2002 (I wasn’t on the team prior to that, so I don’t know how those were controlled).
The X-axis of the left stick controls the crab angle. Since we use a closed loop system, when the joystick is centered, the wheels point straight ahead.
The right stick is where the interesting stuff happens. If we are trying to crab (based on the value of crab stick X), only the Y-axis of the right stick is used, and it becomes our throttle. When we aren’t trying to crab, the right stick acts as a single stick differential drive.
This setup is similar to a FPS video game control except we don’t attempt to strafe and rotate at the same time.
What we planned to do on a theoretical crab that we haven’t built yet (we’ve only built one, and it was uncontrollable…) is have a single joystick with only the y axis enabled for throttle, and have a pot with a handle on an outstretched bar for pointing the wheels. The scoring mechanism would be on a turret, so translating as well as crab steering wouldn’t really be necessary.