Just wondering wich gamepad or joystick other teams are using drive mecnum. Also what are the control layouts that teams use.
In the past, 857 has used a three-axis joystick for mecanum drive.
Last year 461 used 2 joysticks. One joystick was just the translation and the other was rotation.
We did mecanum drive on an off-season project once. We used a Logitech Dual Action controller (an older version of the F310, and basically equivalent to it).
The control scheme we used was:
Left stick y-axis: speed forward/backward
Left stick x-axis: strafe left/right
Right stick x-axis: rotate left/right
In other words, we used RobotDrive::MecanumDrive_Cartesian (in WPILib), with LeftY, LeftX and RightX for the x, y and rotation arguments. So it’s the simplest/laziest control scheme, but it seemed to work well, and it’s intuitive for the driver.
I’m curious to see what controls teams with more mecanum experience prefer.
We used a three axis Logitech joystick to control our field oriented mecanum drive last year. I liked having it on one stick, but we had to put a deadband on the rotation axis to keep it from turning too much by accident.
this is what we have used in the past.
But this year i would like to atleast try the gamepad with left stick for strafing and right stick for rotation
We had a good experience using an Xbox controller. Strafing was the left joystick, rotation the x-axis of the right joystick, and we ignored the final axis.
1246 used to do custom programming on a single joystick. Normal 4 wheel drive for front and back quadrants (up to 45 degrees on the joystick). Full left and full right would be 100% strafe steering. In between, a blend for strafe steering.
4215 has experimented with 2 driving styles. Both use 2 2-axis joysticks. The first has one joystick for arcade driving and one just for strafing. The other is a tank drive with one of the sticks being able to strafe.
Being the driver, and liking tank style, I requested that we control (not drive) our robot with tank-style controls. We used an Xbox controller and had the left-y control the left side forward/backwards and the right-y for the right side. The strafing was controlled by the triggers, which were analog on the controller that we used. If we do it again, I would use two joysticks in a tank formation and modify the triggers to be analog (or use the x-axis of one of them for strafing).
The trick was averaging in the strafing at the same time, which our amazing programmer had a true “Eureka!” moment when she figured it out. Her method provides a more “natural” way (if you naturally like tank-style controls) for mecanum the full mobility of mecanum still retained.
I’ll try to find the algorithm and put it here soon.
I meant to say arcade until the stick gets to 45 degrees. I’m pretty sure our programmer just used a linear proportion to give the driver strafe “steering”. As you know, sideways steering is pretty inexact anyway.
Last year we used an Xbox controller and controlled it call of duty style. I liked that setup a lot and want to do it again, but my team this year wants tobdo a 3 axis joystick because it has more resolution
Here’s a common way to do it:
Forward = (Y[sub]left[/sub] + Y[sub]right[/sub]) / 2
RotateCW = (Y[sub]left[/sub] - Y[sub]right[/sub]) / 2
Then feed the Forward and RotateCW values into the Y and Rotation inputs, respectively, to the MecanumDrive_Cartesian method1 in WPILib (or LabVIEW). Use a joystick X axis or something else for the X (strafe) input.
1void RobotDrive::MecanumDrive_Cartesian(float x, float y, float rotation, float gyroAngle)
The way our team hypotheses to drive it was to use an x-box controller with the left stick be the forward back left and right and the triggers to rotate left and right.
If you could possibly post the code for that, that would be fantastic. I’ve been looking for a tank drive solution for mecanums and have yet to find code for a setup like it.
Take a look at post#13 in this thread.
Ask for further explanation if needed.
Ah didn’t notice that earlier. Thanks for the help! I post again if I need more help.
Our team has used an xbox controller for all of our functions with one driver since at least 2011. 3 of the years we used mecanum and we would have the left joystick/gamepad control forward-back and side-side sliding motion. We then would use the 2 triggers to control an angular turn around the center of our chassis. This was REALLY easy to use and I was able to drive like a pro my first time with the robot on the ground.
We use 2 joysticks. One for each side of the robot like tank drive. However we use the sum of x axis as the strafe. To rotate you just have a difference in y axis.
We also have an option to divide both axis inputs from the joysticks by 2 to give more careful fine control when pressing the triggers.