View Single Post
  #1   Spotlight this post!  
Unread 13-06-2009, 01:18
daltore's Avatar
daltore daltore is offline
Electronics/programming/design
AKA: Aaron Osmer
FRC #3529 (ausTIN CANs)
Team Role: Mentor
 
Join Date: Dec 2007
Rookie Year: 2007
Location: San Antonio, TX
Posts: 272
daltore has a spectacular aura aboutdaltore has a spectacular aura aboutdaltore has a spectacular aura about
Send a message via AIM to daltore Send a message via MSN to daltore Send a message via Yahoo to daltore
Re: Crab-drive steering modes?

In answer to your question on point 4, yes you can code a differential. It involves turning radii and scaling, but it shouldn't be TOO difficult. Basically, the equation is angular velocity times the distance of the wheel from the turning centerpoint (the dot on the ground that the robot is rotating around).

Also, your Slalom or Warthog style driving is classically known as 4-wheel Ackermann or all-wheel steering (specifically in cars, note ice racing).

And yes, control is generally the hardest part. Of regular crab drive, where all the wheels point the same direction, control is relatively simple. Just have some sort of closed-loop feedback for angle (pot or encoder), arctangent for angle calculation of the joystick, and Pythagorean theorem for wheel speed. Alternatively, you could have a Y-axis for speed and X-axis for angle, avoiding trig altogether.

The most complex is all-wheel independent swerve drive. That's where each of the 4 wheels has its own turning motor, and you adjust every wheel angle and speed individually to exactly match the overall vector of the robot. This is what we're trying to do for our summer project, and I've got the glorious task of figuring out the math for that, woo hoo!

Your drive train is a hybrid between the two, which cuts the complications of swerve drive in half. To figure out how to get all of the vectors to line up, first figure out the crab steering, the straight-line direction calculation with all the wheels pointing in the same direction. Then add in the rotational vector. Basically, going in a circle counter-clockwise, all the wheels would be pointed sideways with the front two going to the left and the rear two going to the right. Going forward and rotating counter-clockwise, the front two wheels would be pointing at a 45* angle to the left and forward, and the rear two would be pointing 45* to the right and forward. Take specific cases like that and figure out the equation that matches them all up.