# Mech Wheel Programing

This year we would like to try mech drive with 1 joystick. this joystick has x,y and z(twist) on the stick and t for speed.
i have no clue how to do mech programing and would really like some help with it .
we would like strafe with the x axis and turn with the z axis.
also we would like speed control with the t axis
how would we go about doing this in easyc?

While it’s not easyC, check here: http://www.chiefdelphi.com/forums/showthread.php?t=51528&highlight=mechanum+drive+code

The basic idea for either an omnidirection or mechanum drive train, each wheel will have a certain speed that it needs to be driven to contribute to the desired combination of f/b motion, strafing, and turning. You calculate these for each wheel, and sum them up.

``````
fr_pwm = speed-turn+strafe;
fl_pwm = speed+turn-strafe;
br_pwm = speed-turn-strafe;
bl_pwm = speed+turn+strafe;

``````

You may have to reverse some of these due to how your motors are installed, and you would be best to do a lot of bounds checking and be careful with variable types to make sure you don’t have wraparound errrors.

What Kaszeta said is correct; however, our team decided we also wanted to scale the values. What we came up with was to take the initial inputs, change the range to (-127)-(127), add them together, then scale the sum by a factor:

The factor = Max ( |speed|, |turn|, |strafe|) / (|speed| + |turn| + |strafe|)

We used this code last year, and it seemed to work pretty well.

Being new to "real’ C programing (have a knowledge of BASIC) I really would like to have a .ecp file to look at. thanks for the other links!

http://www.chiefdelphi.com/forums/showthread.php?t=51704 should take care of this.

Good luck.

THANKS!!!