Moving toward better driver control

We updated the comparison document to split out the Xbox One controllers. The higher resolutions they have across each axis seems to differentiate them.

How did you evaluate the feel of the controllers with resolution > 8 bit. Was it with a robot?

We hooked the controllers into this webpage http://html5gamepad.com/ to test the values.

The students test feel of accuracy by hitting certain numbers then trying to get back to the same number. Also, it depended on how easy it was to hold to a single number without any noise or jumping around in values. There is a balance between the quality of the gimbal pots and the resolution of the ADC in the controller.

Some of these tests started to see if we were even getting different numbers to the robot through the controller. We were surprised at the variation between the controller options.

Way back in 2014, freshman me loved playing GTA V and programmed our practice robot that year to drive using almost that exact setup. It was definitely good, but looking back, I’m not 100% sure whether I’d prefer that or arcade drive on an Xbox controller. Ultimately, it’s the exact same, it just comes down to whether the drive prefers using the left stick or triggers for power. I can say that it felt much easier to throw the robot into high speed turns, but again, that could just be time clouding my memory.

I find it a lot easier to maintain full speed, (or the exact speed that I want), using triggers than with using one stick for everything. Triggers allow me to just hold it down all the way which guarantees full speed, and how much I want to turn is independent on the left stick.

But with a single stick arcade control, if I want to go forward and turn right at full speed, I would have to have the stick (referring to the angles in a unit circle) at exactly 45 degrees. That (IMO) require more concentration than just pushing my right pointer finger all the way down on the right trigger, and pushing my left thumb on the left stick all the way to the right.

I could not agree more with these two pieces of advice. Unfortunately, I’ve found it to be a bit of a struggle to convince people of the importance of this, though 449 seems to have (thankfully) come around over the past two years.

Another important benefit of arcade drive with mechanically-separate throttle and rotation is that it makes it far easier to use a gyro to stabilize your robot when you don’t want to be turning (as it’s much easier to judge when the driver does not intend to be turning, since you can rely on the turning input being rigorously 0 at those times). By the same token, it makes it easy to detect when the driver wants to turn in place, which is also something which you often would want to handle differently than ordinary driving.

I’ll throw my opinion into the hat since everyone seems to be on the anti-tank drive.

4476 has always used tank drive, and I really don’t think we will be going anywhere else anytime soon.

Firstly it’s not for everyone. I’m still a pretty firm believer in driver choice. If you are a god at driving arcade and want to drive like that, we will let them. It’s a steep learning curve to learn to drive tank, and in the end I confidently believe you get a marginal increase in performance over some of the other drive methods.

It’s not that hard to drive in a straight line with some practice and some proper teaching. The main reason why we use it is because it forces my kids to not drive linearly. Sweeping arcs and controlled movement is useful in evading defense and getting from point A to point B in the most efficient way possible. Keep moving, conserve momentum, and (almost) never stop to turn.

Teaching well helps a lot. High standards and knowing exactly what kind of movement I want, and how to get them to learn the methods. Drills are nice. Our current drivers the first time they touched the joysticks definitely couldn’t drive in a straight line. Now I would consider him top 5 in Ontario. (Shoutout to 3683’s driver with that clear 1 spot there)

Video of high performing tank driven robot

We have a pretty good solution to this on our team. We have a button to drive straight and then we use the gyro to help correct.

The issue with tank drive driving straight is separate from this. This isn’t about a robot tracking straight when given a straight input - this is about how it is hard for a human to apply equal pressure to both joysticks in order for the robot to have equal input on both sides. It’s too easy to apply too much pressure to one side and too little pressure to another.

As for the above comments about tank drive - to be frank, I don’t think tank has a ā€œhigher ceilingā€. I think any drive given enough practice can be great, but there is no manuver that ā€œonlyā€ a tank drive can do, and the manuvers tank drive makes easier are less common and less important than the manuvers arcade drive (2-stick) or ā€œgtaā€ drive (triggers and stick) makes easier.

Lots of great drivers insist they are better at tank drive and that arcade is wrong… and then they drive arcade for 10 minutes…

Do, in refining the systems that you currently use. Do you drivers experiment with non-linear response from the sticks? There seems to be three types of changing the response.

  1. The sticks can be adjusted to be more responsive closer to center.
  2. There sensitivity can be adjusted based on speed.
  3. The 254 code can adjust based on instantaneous dissection of the stick movement.

Can all these systems benefit from a more adaptive response?

The idea that there is an ā€œendā€ or a ceiling is absurd in and of itself. In FRC timespans (hours, and if they’re lucky, days of driving), drivers just keep getting better.

Very true. I saw a post above that said tank drive makes turning in large sweeping motions, or large curves much easier. But imo, thats not right at all. With arcade or ā€œgtaā€ drive, doing a large sweeping turn just involves pressing the trigger to the wanted forwards speed, and then pushing the turning stick left of right. How much you push it results in a large turn or a quick turn. Much like driving a car, if you want to turn quickly you turn the steering wheel all the way to the right (or push the stick all the way to the right), while pushing the gas pedal (trigger) all the way down. If you want to make a large sweeping turn you turn the steering wheel (turning stick) only half way to the right, and push the gas pedal (trigger) to the wanted forwards speed.

For a driver to figure out exactly how much both sides of the robot should be moving is much harder, and imo just not efficient at all. A driver should be able to just tell how hard he/she wants to turn, and how fast he/she wants to go (much like driving an actual car), and the bot should figure out how much power to apply to both sides.

There is a reason games like gta or forza or any racing game, separate the turning stick from the throttle (generally triggers) it is much more natural that way, you don’t tell a car how much power to apply to both sides (ignoring the fact that a car cant give different power to both sides)

HAHAHAHAHAHAHAHAHA, and more like 5 minutes :smiley: :smiley:

You know why he’s number one? Because he doesn’t use tank drive! /s :wink:
(It’s actually because at this point he has probably been driving longer than any other drivers in Ontario. Practice makes perfect.)

This is fair, it’s a lot easier to start off with basically any other driving method other than tank. For some driving styles this is fine. 100% controlled sweeping motions aren’t easier to execute with tank drive per say, but you do have a very linear, simple, and clear understanding of how your actions directly impact the driving. Why I like tank so much is you can do 30%/60% or 20%/30% or insert any percentage here. You have a very good understanding of exactly how the robot will behave, as well as control what speed you will drive at. In my mind GTA/RC/Airplane whatever you wanna call it isn’t bad at all. I just find the exact sweeping motion harder to predict since you can’t mentally like mental math it out easily, since the curve comes depending on how much you put on with your fwd/backward stick.

It’s all about your standards, and the way you drive too. I absolutely hate the drive forward -> turn -> drive forward -> turn -> Drive forward -> turn loop that people do when they could have just done an arc. It’s easy to defend against, and is slower.

This is probable. Most people that drive tank don’t drive to our standards/don’t have techniques to mitigate error, or correct over/underturns. I actually really really dislike arcade due to it’s overwhelming tendency to promote what I consider as poor driving habits, and that’s really why we use tank. It forces my kids to fix these habits, or they will just be bad. That being said I would never force a driver into any control scheme. If they have a strong opinion on one method over the other and they can prove that they can execute on that one better, i’m all for it. There is no ā€œrightā€ control system as long as you can execute to whatever your team’s standards are.

If you wanna drive the robot using a DDR pad and wiimotes, I won’t stop you as long as you can execute to my standards.

That’s fair. People do have semi ceilings however where they slump until they really change something up.

It is harder, but I would argue for most people who want to drive at a level I expect it is more efficient. You still have obvious power control, power to both sides. Want to slow down? Let up on the joysticks. Speed up? Pushem up! It takes effort to learn sure, but the output is better in my experience.

Cars aren’t controlled that way, so yeah. It makes no sense that a video game would use some tank drive style control system for racing. Your example is like saying forks are useless and bad because you wouldn’t eat soup with it. There are many examples of high maneuverability vehicles that use tank drive (FRC you need high maneuverability) Tanks, lawnmowers, some construction vehicles.

Yeah you are right, pretty sure he drives GTA/RC/whatever you wanna call it. That’s really what make sense, practice makes perfect. Top two in Ontario from what I would consider Danny (3683) and Sam (2056) they have a ton of practice, and that’s obviously a huge part of what makes a good driver.

1 Like

Well, I will again refer to the car example. Sure you won’t be able to tell how big or small the turning curve is the first time you drive a car. But once a driver drives a car for a couple of times, he/she knows by muscle memory (without having to think about it) exactly how much to turn the steering wheel depending on how hard they want to turn.

And ya, at the end of the day, it just comes down to what makes a driver good. It doesn’t matter what they use to drive, its just all about practice.

I just wish that new drivers were exposed to all sorts of driving methods before they pick what drive type they like, I know too many teams/drivers that just say ā€œoh ya we use tank because we’ve done that forever, and the previous drivers used tankā€ without the new drivers actually ever trying different types of drive like arcade or gta drive (and viceversa, some drivers say arcade is the best without trying tank).