EASY traction control?

During our driver tryout period, most of them experienced the same problem, so I switched the traction control from automatically enabled to automatically disabled. It works well for accelerating and smooth curves when you’re not colliding into other robots but, once you hit something, the system gets thrown off. Personally, I found it splendid to use until it was thrown off (and when I drove, I used it often, for what it was designed for), but our other drivers had other preferences.

Having a disable/enable feature is a good idea.

On our team we realized that traction control wasn’t very important, our drivers just need good self control. Especially if you have a low center of gravity like our robot Otis

yea i read all that stuff on traction control and its some heavy stuff to grasp…
so yea like most teams…

we just set the values on the controller putting different speed options, so like on the logitech kit controller, button 3 would be a set slower value to avoid slippage and trigger would be max value speed… so its up to the driver to figure out what speeds to use and when…

Well, we decided traction control was not necessary by default… i.e. the encoders were inop so the driver learned fast to take advantage of our maneuverability to do a kind of self induced pit maneuver to spin the trailer around and avoid a pursuer. So a short wheel base and a “squared” stick transfer function seemed to work well.

We actually had the software/encoders for a three level traction control.

The first level was a backup and just the rate limited stick which others have mentioned. It does limit accel but drivers complain of sluggishness. This is caused by the rate limit being upstream of the motor lag. The motor follows the rate limited stick but its response is delayed about .4 sec. This delayed acceleration response is noticeable by the drivers. Also even though the wheels are not slipping, the delay reduces the benefits over a slipping robot.

The second level was a motor torque limiter. This was achieved by limiting difference between motor speed and commanded speed (effectively a current limiter). Only motor encoders are necessary for this and several teams were very successful with this approach.

The third level was real time adjustment of the motor torque limit value based upon wheel slip speed. The wheel slip speed requires reference wheels with encoders. V_slip = V_wheel-V_ref. If V_slip>0 then the limit was reduced by some factor.

I wrote a small ppt paper to introduce the subject of traction control for the software group early on in the project. I offer it as an addition source of confusion for you:)

Traction Control 2.zip (74.5 KB)


Traction Control 2.zip (74.5 KB)

Here’s a time-based VI for you, so you don’t have to worry about inconsistant execution rate.
(again, you wire the dbl value (orange wire) through it)
I found that the drivers complained of sluggishness mainly because of the slow ramp-down. Because the ramp-down didn’t seem to be neccessary (you can turn out of the way, you can turn sideways, etc), I made it optional to disclude it.
It’s a polymorphic VI, in this case meaning you can use it for an array of dbl or a scalar dbl.
The ‘setpoint’ is your input.

It’s under “ramp” at
http://kamocat.com/programming.html#control

I’m still working on something that describes robot movement in turn radius, forward speed, and sideways slip.

This is going to be the easiest thing to program for the beginner.
We did a similar thing with 2 multipliers to the Axis Value depending on the button.

In our set up we used only the Y-Axis for the Value. We had a Trigger and a Pinkie Button, so the Trigger was a (y*.65) Value. The driver with the trigger depressed could use the slower speed in addition to the fact he would creep up to the full value on the axis. The Pinkie finger would be another value… depending on what you needed.

It isn’t an elegant solution to the problem, but it worked for us. We didn’t use a standard Tank drive system so Spinning Out was not as much of an issue for us.

And if your driver complains about using this method go tell him to program what he wants :wink:

I attached our code… and you get to witness my Worst photoshop job ever…

control.jpg


control.jpg

:ahh:
This is a terrible way to run your programming. Being a driver and a programmer, i know that the programming group should do their best to build controls the way the drive team needs it, even if it’s not the easiest to do. Even if you were kidding/being sarcastic its not very good teamwork…:cool:

I didn’t realize I would offend someone. Sorry I guess…

to clarify I am the only programmer and the assistant Driver. I am always asking the main driver with how he can best drive the robot, is the crab drive correcting too fast, what feels most responsive, etc…

thank you for clarifying. just putting my two cents in too fast i guess, sorry for snapping at you textually.