Go to Post That little voice in your head is not Ari telling you to keep going. It is your guardian angel telling you to stop! - Al Skierkiewicz [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 19-01-2004, 12:03
Mr. Lim Mr. Lim is offline
Registered User
AKA: Mr. Lim
no team
Team Role: Leadership
 
Join Date: Jan 2004
Rookie Year: 1998
Location: Toronto, Ontario
Posts: 1,125
Mr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond reputeMr. Lim has a reputation beyond repute
Traction Control Algorithm

Looking for some advice.

This may not be so applicable to FIRST since most robots are a little "underpowered," and have their weight bias and drivetrain layouts set-up to prevent wheel-spin.

but,

Would the current sensors be a good indicator for loss of traction? I have heard that the outputs are a little bit noisy, and noticed in the default IR navigation code, an average of the last 10 readings as actually being used to resolve the current current. Is this still fast enough? Would a simple RC circuit smooth things out?

If they are a good indicator of wheel-spin, how do most traction control algorithms react when wheel spin is detected? Would you drop your motor output by a fixed value? to a fixed value? by a fixed percentage? kill the output all together for one cycle?

Then, there's detecting wheelspin in the first place. You could create a look-up table of expected current values for a motor speed, and if it's significantly lower, then, you've got wheelspin.

I'm sure someone has, or is thinking this through too. Post your ideas!
  #2   Spotlight this post!  
Unread 19-01-2004, 14:25
Chris Hibner's Avatar Unsung FIRST Hero
Chris Hibner Chris Hibner is offline
Eschewing Obfuscation Since 1990
AKA: Lars Kamen's Roadie
FRC #0051 (Wings of Fire)
Team Role: Engineer
 
Join Date: May 2001
Rookie Year: 1997
Location: Canton, MI
Posts: 1,488
Chris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond reputeChris Hibner has a reputation beyond repute
Re: Traction Control Algorithm

Quote:
Originally Posted by SlimBoJones
Looking for some advice.

This may not be so applicable to FIRST since most robots are a little "underpowered," and have their weight bias and drivetrain layouts set-up to prevent wheel-spin.

but,

Would the current sensors be a good indicator for loss of traction? I have heard that the outputs are a little bit noisy, and noticed in the default IR navigation code, an average of the last 10 readings as actually being used to resolve the current current. Is this still fast enough? Would a simple RC circuit smooth things out?

If they are a good indicator of wheel-spin, how do most traction control algorithms react when wheel spin is detected? Would you drop your motor output by a fixed value? to a fixed value? by a fixed percentage? kill the output all together for one cycle?

Then, there's detecting wheelspin in the first place. You could create a look-up table of expected current values for a motor speed, and if it's significantly lower, then, you've got wheelspin.

I'm sure someone has, or is thinking this through too. Post your ideas!
This is kind of a lengthy answer, but here it goes...

First, I think it would be beneficial to describe how an automobile typically performs traction control (of course, this is going to be different depending on the system supplier, but here is one generic method that is used):

The first thing you need is the inputs to the algorithm. For automotive traction control this is typically wheel speed (to infer vehicle speed based on wheel angular speed) and an inertially calculated vehicle speed (i.e. integral of acceleration measured with an accelerometer).

The algorithm can then compare the two vehicle speed calculations. If the wheel speed is higher than the inertial speed, you know the wheels are spinning. You can then adjust the motor torque output until the two calculated speeds match.

At first glance, a simple linear (PID or compensator) algorithm appears to fit the job. However, this type of algorithm is typically too slow to do the job well. Instead, a rule-based algorithm is usually used. In other words, the algorithm compares the two calculated speeds to some look-up table, performs some if-then-else logic, and then adjusts the desired motor output based upon the lookup table and the logic. The basis of the tables and logic are usually created by a lot of testing and trial-and-error. Therefore, to answer your questions on what to do, I guess the answer is "everything you mentioned". In other words, you'll probably need to do a lot of trial and error to determine your own set of rules.

Now, back to the robot.

The current that a motor draws is directly proportional to the torque it is producing. Therefore, the current sensors are basically torque sensors. For traction control, you would ideally want to sense the velocity of your wheels. You may be able to estimate velocity given the torque (i.e. current) and the commanded PWM. I don't know if this is feasible or not since I've never deeply studied the problem. The look-up table that you mentioned would do this.

The one thing to keep in mind is that the current draw will also vary somewhat due to the temperature of the motors, and maybe some other outside factors. Therefore, even if you can estimate the velocity given the torque and your commanded PWM, the accuracy may not be good enough for traction control. In order to make this work, you're probably going to have to put a lot of work and research into your solution.

Even if you can accurately determine the wheel speed, you will most likely need another source to determine the robot speed so you can make the comparison. The reason is because your algorithm will not know if the wheels have their current speed because the wheels are slipping or because the robot is moving.

Whatever you end up doing, good luck with it. If you do get it to work, let us all know how it turns out.

-Chris
__________________
-
An ounce of perception is worth a pound of obscure.
  #3   Spotlight this post!  
Unread 19-01-2004, 14:59
KenWittlief KenWittlief is offline
.
no team
Team Role: Engineer
 
Join Date: Mar 2003
Location: Rochester, NY
Posts: 4,213
KenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond repute
Re: Traction Control Algorithm

Its an interesting idea - if the motor was near stall condition, and it started to spin, the wheel rpms would increase suddenly and the current draw would drop

but I dont think it will drop a lot - its still going to take a lot of power to spin a wheel with that much weight on it

so I think what you are looking for is a change in current, a sudden change. That would prevent normal operation, like ramping up to speed quickly from tiggering your traction contol circuit

only thing Im wondering is how usefull this will really be - the kinetic friction of the wheel and the static friction - if they are not that much different, then stopping the motor for an 'instant' to hook-up with the surface again, will it really give you that more pushing power?

in fact, I think you might have the idea backwards - I would think you'd want to use the current sensors to detect when your motors are stalled, drawing 40 amps, and back them off! Seems to me that being able to spin your wheels in a shoving match is what you want - you can keep applying a strong force, but your motors are not spinning at 3 rpm and turning your robot into a moble easy-bake oven :c)

The idea for the RC filter makes sense, except a filter with that low of a cuttoff frequency would have a significant phase delay, so you would be doing the same thing the SW you referred to is doing, it would take a while for the sudden jump (rising edge) to get through the filter - the digital muli-sampling probabally works better - it can tell if a sudden high reading is a noise spike, or if its real (if it persists for several cycles).

Last edited by KenWittlief : 19-01-2004 at 15:02.
  #4   Spotlight this post!  
Unread 20-01-2004, 14:26
Steven Carmain Steven Carmain is offline
Bit Twiddler
FRC #2832
Team Role: Mentor
 
Join Date: Jan 2003
Rookie Year: 2002
Location: Westland, MI
Posts: 92
Steven Carmain will become famous soon enough
Re: Traction Control Algorithm

Past:
In 2002, the Technokats had a "Traction Control System" that we took a light sensor and pointed it at our treads. We still had metal treads and they reflected great. We also had a black and white wheel made of plastic and was painted. Another light sensor was used for the wheel, and we counted the differences in the tracks. A custom circut counted each and when the treads counted 16 (I think?) we sent a digital pin back to the OI. The system had three level of traction based on counts. It worked OK until the free wheel got pinched and we wore off half the wheel.

Today:
Now, you could make an encoder wheel to count your wheel speed for both wheels. You could use a rubber wheel to make a better roller wheel. You also have interrupts to make it super accurate! And you don't need a custom circut board!
__________________
2017 - Team 2832 Mentor
2016 - Team 6013 Mentor
2002-05 - Team 45 Software/Electrical

A robot is like a campfire: it takes a while to bulid it, and then everyone surounds it!
A world without standards is chaos. A world with standards is chaos.
Closed Thread


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
What do you wish you knew about the new control system? Joe Ross Control System 2 09-01-2004 21:47
traction questions AlbertW Rules/Strategy 2 05-01-2003 17:58
Friction, traction, torque - oh my... Gui Cavalcanti Technical Discussion 30 13-08-2002 18:01
more control options smokescreen Technical Discussion 17 05-03-2002 15:41
goals: how much control? Pat Sarmiento Rules/Strategy 2 18-01-2002 19:10


All times are GMT -5. The time now is 15:31.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


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