Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Mechanum with XBox Controller (http://www.chiefdelphi.com/forums/showthread.php?t=132265)

jszipszky 09-01-2015 09:04

Re: Mechanum with XBox Controller
 
Quote:

Originally Posted by Ethan_P (Post 1423605)
for mechanum wheels, our team also uses a Xbox controller. We have the right joystick axis mapped to the linear movement of the robot, and the the left joystick x axis mapped to the rotation.
Here's a simplified version of our code:

//FLMotor = Front Left Motor
//FRMotor = Front Right Motor
//BLMotor = Back Left Motor
//BRMotor = Back Right Motor
//x = right joystick, x axis
//y = right joystick, y axis
//yaw = left joystick, x axis

FLMotor = y + x + yaw
FRMotor = y - x - yaw
BLMotor = y - x + yaw
BRMotor = y + x - yaw

The values will have to be limited, other-wise it will go beyond the accepted values (-1 to 1). Make sure the wheels are set up properly, and good luck!

We do something very similar to this. I don't want to hijack this thread but how are you limiting the values? Right now in our rough code we have a mess of if-elses determining if the values are over 1. I imagine that there is a better way to do this?

LFRobotics 09-01-2015 09:06

Re: Mechanum with XBox Controller
 
Okay thanks guys! Ill let you know if I can get it to work;)

Jalerre 10-01-2015 22:39

Re: Mechanum with XBox Controller
 
Our team uses mecanum with a Logitech F310 gamepad. The way we map the controls is that we use tank drive with the joysticks to control forwards, backwards, and rotation. For strafing we use the back triggers because they are analog. I believe they translate to twist on the flight sticks. Hope this helps.

Ether 17-01-2015 13:06

Re: Mechanum with XBox Controller
 
Quote:

Originally Posted by jszipszky (Post 1424889)
I don't want to hijack this thread but how are you limiting the values? Right now in our rough code we have a mess of if-elses determining if the values are over 1. I imagine that there is a better way to do this?

You don't need any "elses"

Code:


max=fabs(s1);
if (fabs(s2)>max) max=fabs(s2);
if (fabs(s3)>max) max=fabs(s3);
if (fabs(s4)>max) max=fabs(s4);
if (max>1) {s1/=max; s2/=max; s3/=max; s4/=max;}




All times are GMT -5. The time now is 13:03.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi