plcarmel Posted August 24, 2023 Share Posted August 24, 2023 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: The controller detects that the tire speed doesn't match the speed as calculated from the accelerometer. It does that by detecting a sudden change in (speed as computed from the accelerometer) / (tire angular speed) The controller reduces the speed of the tire until the speed of the tire matches the one deduced from the accelerometer. 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? Quote Link to comment Share on other sites More sharing options...
Eucner Posted August 24, 2023 Share Posted August 24, 2023 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. Quote Link to comment Share on other sites More sharing options...
plcarmel Posted August 24, 2023 Author Share Posted August 24, 2023 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. Quote Link to comment Share on other sites More sharing options...
plcarmel Posted August 24, 2023 Author Share Posted August 24, 2023 Note to self: f(t) would also depend on the side angle because the tire can have any profile. It would be more like f(α, t). The controller would have to model the profile of the tire. Quote Link to comment Share on other sites More sharing options...
Mono Posted August 24, 2023 Share Posted August 24, 2023 (edited) 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 August 24, 2023 by Mono 1 Quote Link to comment Share on other sites More sharing options...
alcatraz Posted August 28, 2023 Share Posted August 28, 2023 I think it's only a matter of time before we'll have this. And no, I do not want to be the guy with the first wheel with this feature. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.