Driving: Tank, Arcade or FPS?

This morning, before our programming mentor arrived, I suggested to some of the students that they see if they could get the robot running by themselves, and play around with it. After a while we got to discussing how to control it, whether to use tank drive, or arcade drive, with a game pad, or a joystick. A couple of them described the typical video game setup, where one joystick on a gamepad is used for turning, the other for forward/back. Something about “first person shooter”. Anyways, after a while (and after the programming mentor arrived), they got it figured out, and now have FPS control of the robot…several students tried it, and were quite pleased with how easy it is to drive now.

I wonder, why it took us so long to figure this out? :o

Cheesy Drive is based off of this. Ask 254 for more info :slight_smile:

We refer to this as split arcade drive, and absolulty love it. Once you try it you’ll never go back. We use it exclusively when we use skid steer drivetrains.

It’s really a driver preference thing. I’ve always preferred tank, but I know other drivers prefer different setups.

Anyone have experience with GTA style?

Can you clarify what that means?

Oddly enough, we call it the Kaj drive, since I believe that it was Kaj from 188 that introduced it to us.

Grand Theft Auto?

Sorry I got side tracked.
It would be button inputs dictate direction freeing up the full range of a joystick to setting the percent or throttle

What does “dictate direction” mean? Could you please describe in more detail?

e.g :

while ButtonX is pushed bot rotates at rateX?

push and release ButtonX, bot rotates at rateX until another button is pushed?

push and release ButtonX, bot rotates Xdegrees from where it was?

push and release ButtonX, bot rotates to field-oriented headingX?

etc etc etc
*
*

So in a standard WCD set left trigger to forward and right trigger to reverse essentially like shifting in a car. Then using a joystick or dial to adjust the speed you are going
eh ill just include an image.

I think we’re going with a simple tank drive using the now pointless omni wheels and using an Xbox controller. Anyone else think that this will be the first year mecanums will be on Einstein? I feel like good maneuverability is one of the main keys to being successful in this years game.

A lot of people do. :rolleyes:

Now that I am not doing a billion things at once I will go over more in depth what I am talking about.
So generally speaking video game developers sink a lot of time into control systems when they make a game. When playing a game the controls should be either engaging and fun to use (like in the case of the original Wii it was supposed to be fun and involving to do those motion things) or to make it feel like there is no controller you are just plugged directly into the character you have. When you have a poor control system in a video game it really shows. When moving if you get stuck on objects its frustrating. When the inputs are delayed you feel sluggish and clumsy. When the control system is your enemy the game isn’t difficult because its challenging its because the game is not responding the way you want it.
That is where GTA drive tackles a number of issues, the original GTA’s were 2D top down so they don’t count and can go away in this discussion. But as soon as GTA went 3D it faced this wall of problems. With top down games your vision is done for you and it moves with the character so you don’t need any controller input. When you move to 3D there is no way to have a character see in a 3rd person perspective and still see the entire world. It is just not possible, that being said this forces one of the vision controls onto the joysticks (keeping in mind most console controllers have 2 joysticks*). With only one joystick remaining lets look at the other tasks that need to be accomplished in order to fully control your character in a 3D environment. Now that we can see the world we can navigate through it. Most navigation is done with the other Joystick on a controller because it provides movement in all directions, its a simple obvious solution. But that is if you are controlling something that can move in all directions.
Remember grand theft auto is done in cars a lot… That is the Auto part, in this aspect you don’t actually need to move left or right because most cars don’t strafe, instead you need to turn in a car. This makes putting movement on one joystick detrimental because of the zones of control on the joystick. When a joystick is in its neutral state most games treat it as dead. This means you get no input. The cardinal directions are just as simple you are either moving forward or backward, or in a position where you are turning. It is the diagonals that get sketchy. Since you are limited to a circle on most joysticks when combining forward and left you get these fuzzy zones where you can only move so fast while turning. This isn’t actually ideal because this ties the speed and turning together in a way where you lose a lot of control.
To tackle this issue (and make it feel more like driving a car) the developers of GTA said “Well what if when driving a car instead of having to push forward to drive forward and backwards to drive backwards we switched those to buttons.” That is the basis of GTA drive that you have one button for forward and one button for backwards and now your speed and your turning are never tied together. Since it is also supposed to emulate driving it is more like that because the button for forward and backwards is used to accelerate to desired speed but I digress.
Translating GTA drive to robotics we can start off with the same thing. Take a standard kitbot, and on the controller have one button be forward and one button be backwards. So if we take the left joystick and make it at its neutral state make the robot go (when pressed with a forward or backward button) at a set speed of say 50% of its total. As you tilt the stick forward you slowly increase the speed until you are at 100% and when you tilt it back you decrease the speed. The difference between this and movement being on one stick is that controllers are really limited on inputs. When you take only the forward tilt on a joystick as forward and backwards as backwards you only have a small area to define your speed**. With GTA drive in theory you have a larger area for controlling speed.

  • yes I know the N64 had one joystick but were talking about good controller design
    ** There is a work around to that but I don’t want to ruin the surprise yet

Our team is trying the tank drive this year instead of the single joystick. So far it is working out great!

As a (relatively) old-school driver I liked single-stick arcade control for FRC robots. This typically works best with a real gimbal’d joystick, where the driver can ‘feel’ center on the stick. Most common joysticks are not gimbal and thus lose a lot of the ‘on-center’ feeling that makes this control scheme beloved by many.

In recent years we’ve used game pads with single-stick arcade that I found easy to drive, and I liked it a lot. This takes some modest drive transforms to fine-tune to the driver’s taste, but nothing complex. These transforms help address the ‘on center’ feeling and let the robot drive forward even if the thumb-stick is off-centered slightly.

I’ve got an RC car with ‘dual stick’ arcade that I like to drive and find very easy to control. The divorced axes for f/r and l/r are really nice and lets one send precisely the inputs they want.

I have raced a lot of Forza (car simulation game) which uses one thumb-stick for turning and two triggers for throttle/brake (forward/reverse on a robot) and like that too. The f/r and l/r axes are divorced, which is nice, and the forward/reverse axes are also divorced. For the extra-fine control required for a semi-realistic car sim it is great to be able to apply both the throttle and the brake, and I imagine it would work well for an FRC robot as well, but perhaps only marginally better than ‘dual stick’ arcade.

I absolutely cannot stand ‘tank drive’ where two joysticks are used. It forces the driver to do the drive ‘math’ in their head, something a computer is MUCH better suited to do. I never felt that it was intuitive, fluid, or an efficient use of controllers. I know some people/teams have been successful with it, but I can only imagine how much more successful they could have been with any of the controls described above.

The FPS configuration is the same as a traditional RC car controller, but instead of a trigger for the throttle and a steering wheel, it uses the right joystick Y axis for throttle, and left joystick X axis for steering.

Which makes it even stranger that we never figured this out, because we used an RC car controller to drive our robot in 2008 and 09.

When we don’t have a holonomic drive, we still prefer the RC car controllers to FPS drive on a gamepad. We find the larger range of motion of the axes allows for more precise control of the robot than the tiny thumbsticks on a gamepad.

My personal favorite way to drive a tank drivetrain is to use 2 single axis joysticks for tank drive control scheme. The removal of the degrees of freedom of the joysticks allows you way better feedback and control. This is because if you are off straight on a double-axis joystick, your hands will feel a different travel distance than the controls are being sent.

Agreed, it just doesn’t seem natural, since the two sides are often driving in contradicting directions (I.e when you want to turn).