|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
tank drive mecanum algorithm
Here's a way to program tank drive on mecanum bot so that you can tune the joystick sensitivity to all three motions (fwd/rev, turn, stafe) independently:
Let Kf, Kt, and Ks be the tuning parameters (0 to +1) for the forward/reverse, turn, and strafe motions, respectively. Let X1 and Y1 represent the joystick outputs for the driver's left-hand joystick; Let X2 and Y2 represent the joystick outputs for the driver's right-hand joystick. When each joystick is pushed forward, its Y output should be positive. When the joystick is pushed to the right, its X output should be positive. If not, add code to invert the sign if necessary. Let W1, W2, W3, and W4 be the front left, front right, rear left, and rear right wheels, respectively. ("left" and "right" in this context means "port" and "starboard", respectively) Calculate the following: Yf = (Y1 + Y2)/2 Yt = (Y1 - Y2)/2 Now calculate the four wheel speed commands: W1 = Kf*Yf + Kt*Yt + Ks*X1 W2 = Kf*Yf - Kt*Yt - Ks*X1 W3 = Kf*Yf + Kt*Yt - Ks*X1 W4 = Kf*Yf - Kt*Yt + Ks*X1 Now normalize the wheel speed commands: Let Wmax be the maximum absolute of the four wheel speed commands. If Wmax is greater than 1, then divide each of the four wheel speed commands by Wmax. Finally, send each of the four normalized wheel speed commands to the respective wheels. |
|
#2
|
|||
|
|||
|
Re: tank drive mecanum algorithm
I'm not trying to judge or anything, but why have a tank drive mecanum?
I guess if you are using joysticks that don't have twist this would be nice, but don't the kit joysticks have twist? Joystick 2's only purpose is to provide twist input (unless you count the average for forward). Joy1 gets used for strafe input. I think the sensitivity vars are nice, but can be used for single joystick input just as well. |
|
#3
|
||||
|
||||
|
Re: tank drive mecanum algorithm
Quote:
Quote:
Quote:
With a 3-axis joystick this isn't necessary since the normal mapping of 3-axis joystick functions to robot motions is already separated. ~ |
|
#4
|
||||||
|
||||||
|
Re: tank drive mecanum algorithm
Quote:
|
|
#5
|
||||
|
||||
|
Re: tank drive mecanum algorithm
Quote:
For a tank-drive non-mecanum robot with only 2 drive motors (one for the left wheels and 1 for the right wheels), this certainly makes sense. But for a robot with 4 mecanum wheels (and 1 motor per wheel), "pure motor=joystick" would require 4 joystick inputs. I seriously doubt if any driver has developed the mental agility to individually and directly control each wheel command for a mecanum-wheeled robot. That is why I presented the mapping of the 2 standard tank-drive joystick commands, plus 1 additional joystick command for strafe, to the 4 mecanum wheels via 3 intermediate variables which separate out the 3 robot degrees of freedom (fwd/rev, strafe, turn), so they can be tuned independently. ~ |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Tank Drive vs. Omni Directional Drive | jamie_1930 | General Forum | 9 | 24-01-2010 22:50 |
| crab drive vs. mecanum drive system | superbotman | Technical Discussion | 33 | 06-01-2010 03:09 |
| Tank Drive | Sauce | Programming | 1 | 05-01-2009 18:50 |
| pic: Jester Drive:Mecanum Wheel Drive Train | Ken Delaney 357 | Technical Discussion | 64 | 29-03-2006 22:16 |