Jump to content

Traction control ?


plcarmel

Recommended Posts

I know that @Freestylermodified the firmware of the Begode Wheels to support PWM tiltback. Does anybody know how hard it would be to modify the firmware to support traction control?

Before calling me dumb, I do know that there is a limit to how much traction control can be achieved on an EUC, as it makes the wheel lose its balance. In a lot of circumstances though, that loss of balance will be temporary, and the rider will not fall. At least that's my hope.

There would be many benefits:

  • Instead of the wheel having to rely on a given angle to stop spinning after a fall, traction control could take care of that.
  • It would make it safer when jumping, as traction control would make sure the tire speed match the speed of the wheel in the air.
  • On soft terrain, especially during climbs, it would prevent the wheel from digging a hole and getting stuck there. It would also prevent wheels from damaging trails.

A draft of the way it would work:

  1. The controller detects that the tire speed doesn't match the speed as calculated from the accelerometer.
    1. It does that by detecting a sudden change in (speed as computed from the accelerometer) / (tire angular speed)
  2. The controller reduces the speed of the tire until the speed of the tire matches the one deduced from the accelerometer.
  3. The controller then tries to accelerate to bring the wheel back to its normal angle.

The feeling for the rider would be the same as if it had overpowered the wheel, except that the wheel would get its power back if it regained traction.

What do you think?

Link to comment
Share on other sites

8 hours ago, plcarmel said:

What do you think?

The few instances traction control would have helped me, it was needed to sideways direction. I've never loosen traction in front-back axis and it is the only axis where this is technically possible.

I think that when traction control would kick in, it could make the ride jerky and unbalanced for the rider.

Your proposed solution relies in calculated velocity from accelerometer. To my experience this integration process is prone to errors, especially drift. It should be backed up with GPS speed.

Link to comment
Share on other sites

I experience traction loss on very bad terrain, like soft snow or mountain bike trails. When climbing mountain bike trails, it happens all the time though, and it is very annoying.

You are right about the fact that the drift would be an issue if we integrate the acceleration to get the speed.

I think I found a solution to avoid having to do that.

How to remove the need to integrate over acceleration over a long period of time

We are looking for a change in (speed as computed from the accelerometer) / (tire angular speed). So, we can get the absolute value of the derivative and wait for the value to rise above a given threshold.

a(t): true acceleration at time t
v(t): true speed at time t.
ω(t): Angular speed of the tire at time t.
f(t): Distance traveled per revolution of the tire at time t.

f(t) = v(t) / ω(t)
There is traction loss when |f'(t)| > Δ where Δ is a small number that accounts for natural changes and imprecisions in the measurements.
It means that there is a traction loss when there is a change in the relation between the true speed and the angular speed of the tire.

f'(t) = (v'(t) * ω(t) - v(t) * ω'(t)) / ω(t)2
f'(t) = (a(t) * ω(t) - v(t) * ω'(t)) / ω(t)2

However, v(t) = f(t) * ω(t), so

f'(t) = (a(t) * ω(t) - f(t) * ω(t) * ω'(t)) / ω(t)2
f'(t) = ω(t) * (a(t) - f(t) * ω'(t)) / ω(t)2
f'(t) = (a(t) - f(t) * ω'(t)) / ω(t)

There is traction loss when | a(t) - f(t) * ω'(t) | > Δ * ω(t)
It means that there is a traction loss when the true acceleration is different from the acceleration computed from the tire angular velocity. Also, the faster the wheel spins, the more tolerant we are. 

We know that f(t) doesn't change a whole lot, so we can use an approximation. One way to compute it would be to integrate the acceleration for a small amount of time after a standstill, assuming no traction loss occurs during that time (previously computed value can be used to detect if there has been a traction loss). 0 km/h is the only speed we are absolutely certain about because it corresponds to an angular velocity of 0 as well. That way, we eliminate drift.

Note

Of course, traction adds complexity, so it should be something that can be turned on only when it is needed.

Link to comment
Share on other sites

8 hours ago, plcarmel said:

I experience traction loss on very bad terrain, like soft snow or mountain bike trails. When climbing mountain bike trails, it happens all the time though, and it is very annoying.

You are right about the fact that the drift would be an issue if we integrate the acceleration to get the speed.

I think I found a solution to avoid having to do that.

How to remove the need to integrate over acceleration over a long period of time

We are looking for a change in (speed as computed from the accelerometer) / (tire angular speed). So, we can get the absolute value of the derivative and wait for the value to rise above a given threshold.

a(t): true acceleration at time t
v(t): true speed at time t.
ω(t): Angular speed of the tire at time t.
f(t): Distance traveled per revolution of the tire at time t.

f(t) = v(t) / ω(t)
There is traction loss when |f'(t)| > Δ where Δ is a small number that accounts for natural changes and imprecisions in the measurements.
It means that there is a traction loss when there is a change in the relation between the true speed and the angular speed of the tire.

f'(t) = (v'(t) * ω(t) - v(t) * ω'(t)) / ω(t)2
f'(t) = (a(t) * ω(t) - v(t) * ω'(t)) / ω(t)2

However, v(t) = f(t) * ω(t), so

f'(t) = (a(t) * ω(t) - f(t) * ω(t) * ω'(t)) / ω(t)2
f'(t) = ω(t) * (a(t) - f(t) * ω'(t)) / ω(t)2
f'(t) = (a(t) - f(t) * ω'(t)) / ω(t)

There is traction loss when | a(t) - f(t) * ω'(t) | > Δ * ω(t)
It means that there is a traction loss when the true acceleration is different from the acceleration computed from the tire angular velocity. Also, the faster the wheel spins, the more tolerant we are. 

We know that f(t) doesn't change a whole lot, so we can use an approximation. One way to compute it would be to integrate the acceleration for a small amount of time after a standstill, assuming no traction loss occurs during that time (previously computed value can be used to detect if there has been a traction loss). 0 km/h is the only speed we are absolutely certain about because it corresponds to an angular velocity of 0 as well. That way, we eliminate drift.

Note

Of course, traction adds complexity, so it should be something that can be turned on only when it is needed.

I suspect some search in the scientific literature on this topic may provide you with even better ideas, and with observations when and how some of them fail.

Edited by Mono
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...