Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Technical Discussion (http://www.chiefdelphi.com/forums/forumdisplay.php?f=22)
-   -   Tank Drive VS Arcade Drive on a Skid-Steer Platform (http://www.chiefdelphi.com/forums/showthread.php?t=137502)

wireties 13-06-2015 21:15

Re: Tank Drive VS Arcade Drive on a Skid-Steer Platform
 
So "Cheezy Drive" is really just split arcade like a lot of game controllers (where normal arcade Y is on one joystick and normal arcade X is on a second joystick)? I suspect they also do something special when Y input is zero and X non-zero to spin in place?

BTW, tank drive is also two joysticks where one joystick moves the left side wheels and second joystick moves the right side wheels.

Thanks

Rachel Lim 14-06-2015 00:46

Re: Tank Drive VS Arcade Drive on a Skid-Steer Platform
 
Quote:

Originally Posted by Ether (Post 1486692)
It's the other way around.

That's what I get for posting on a phone and not double checking what I write...thanks for correcting that.

Quote:

Originally Posted by wireties (Post 1486694)
So "Cheezy Drive" is really just split arcade like a lot of game controllers (where normal arcade Y is on one joystick and normal arcade X is on a second joystick)? I suspect they also do something special when Y input is zero and X non-zero to spin in place?

As far as I know, yes. I believe the similarity to FPS games is one of the reasons many people like it--this is just what I've heard though, as I'm not our driver. If I remember correctly, in 2014 (we didn't do WCD this year) we used one of the buttons on the joysticks for turning in place. Trying to turn without pressing that button didn't do anything unless you were also going forward or backward.

Jalerre 14-06-2015 01:02

Re: Tank Drive VS Arcade Drive on a Skid-Steer Platform
 
Quote:

Originally Posted by Ether (Post 1486664)
I would hope it's not simply tank or arcade. That would kinda defeat the purpose of mecanum.

There do however exist driver interfaces which use a supplemented tank or arcade with mecanum.

For example, you could use the (normally unused) tank joystick X axes for strafe.

Or you could use a second joystick with arcade for strafing.

Or you could use Joystick1 for fwd/rev and strafe right/left, and Joystick2 for turning.



In the past we have used the joysticks for tank drive and the triggers for strafing. This year however we used arcade with a flightstick.

AustinSchuh 14-06-2015 01:28

Re: Tank Drive VS Arcade Drive on a Skid-Steer Platform
 
Quote:

Originally Posted by wireties (Post 1486694)
So "Cheezy Drive" is really just split arcade like a lot of game controllers (where normal arcade Y is on one joystick and normal arcade X is on a second joystick)? I suspect they also do something special when Y input is zero and X non-zero to spin in place?

What you described is split arcade. Arcade is where X (or Y, I always get them mixed up) controls the power to apply to both sides, and the other axis controls the difference in power to apply to the wheels.

Code:

Vl = throttle + steering;
Vr = throttle - steering;

Cheezy Drive is split arcade on steroids. It can best be described as making your robot drive like a car. This has the side effect of not letting you turn in place, so there is a button that when held bypasses the car steering part and switches back to split arcade. This button is called 'Quick Turn'.

Code:

adjusted_wheel = SensitivityRemap(wheel);
Vl = throttle + adjusted_wheel * abs(throttle) + inertia compensation terms;
Vr = throttle - adjusted_wheel * abs(throttle) - inertia compensation terms;

The end result is that when the robot is tuned properly, it feels consistent through a wide range of motions. The robot reacts the same to the joystick inputs at high and low speeds. Arcade has the problem that when you want to drive in an arc at slower speeds, you end up over-steering since you need to only use a small range of stick movements to get the turns you want. The inertia compensation terms add extra power to start the robot turning and stop it again when the wheel angle changes. This helps the robot feel 'psychic' and start turning as the driver starts demanding a turn, not after.

Thad House 14-06-2015 03:05

Re: Tank Drive VS Arcade Drive on a Skid-Steer Platform
 
Quote:

Originally Posted by AustinSchuh (Post 1486724)
What you described is split arcade. Arcade is where X (or Y, I always get them mixed up) controls the power to apply to both sides, and the other axis controls the difference in power to apply to the wheels.

Code:

Vl = throttle + steering;
Vr = throttle - steering;

Cheezy Drive is split arcade on steroids. It can best be described as making your robot drive like a car. This has the side effect of not letting you turn in place, so there is a button that when held bypasses the car steering part and switches back to split arcade. This button is called 'Quick Turn'.

Code:

adjusted_wheel = SensitivityRemap(wheel);
Vl = throttle + adjusted_wheel * abs(throttle) + inertia compensation terms;
Vr = throttle - adjusted_wheel * abs(throttle) - inertia compensation terms;

The end result is that when the robot is tuned properly, it feels consistent through a wide range of motions. The robot reacts the same to the joystick inputs at high and low speeds. Arcade has the problem that when you want to drive in an arc at slower speeds, you end up over-steering since you need to only use a small range of stick movements to get the turns you want. The inertia compensation terms add extra power to start the robot turning and stop it again when the wheel angle changes. This helps the robot feel 'psychic' and start turning as the driver starts demanding a turn, not after.

One thing to note is that some teams, including us, have actually made it so if the throttle is in a certain deadzone it automatically turns on QuickTurn. For instance, we use the xbox controller, which has a 0.2 deadzone anyway. So we just have it if the throttle is within that deadzone, QuickTurn is on. That way turning in place doesn't change compared to arcade drive.

GeeTwo 14-06-2015 10:37

Re: Tank Drive VS Arcade Drive on a Skid-Steer Platform
 
Quote:

Originally Posted by AustinSchuh (Post 1486724)
Cheezy Drive is split arcade on steroids.

Code:

adjusted_wheel = SensitivityRemap(wheel);
Vl = throttle + adjusted_wheel * abs(throttle) + inertia compensation terms;
Vr = throttle - adjusted_wheel * abs(throttle) - inertia compensation terms;


Not knowing the details of SensitivityRemap(wheel), or even what "wheel" is in this context, I can't be certain, but it sounds similar the 3-axis joystick control I did for a tiny swerve drive robot a few years back. The X/Y joystick controlled translational motion. The Z "twist" axis controlled rotation -- not in terms of angular speed (RPM), but in terms of curvature. That is, the radius of curvature was inversely proportional to the amount of twist on the joystick. I did not use any inertia compensation terms.

This setup also had an override for spinning, as Thad decribes. When both X and Y were in the dead band, Z was interpreted in terms of desired angular speed.


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

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