Quote:
Originally Posted by MikeE
That was my thinking too - monitor the second derivative of wheel velocity. I'd expect this to be fairly noisy but usable with some filtering. I promise to report back red-faced if it's a dismal failure.
Out in the open field away from carpet, I think we'll be facing the situation where several (all) wheels will slip simultaneously, but many of the standard workarounds seem to assume single wheel slippage. (Obviously at high enough sampling frequency one wheel will be the first to go.) I see an integrated approach (pun intended) as the way to go.
And thanks to all for a very thought provoking thread.
|
I think you meant first derivative of wheel velocity (or second derivative of wheel position). This is your acceleration.
Here's the rub - encoders are digital sensors, with limited resolution. The "derivative" operator is continuous. You can approximate the derivative with the "difference" (i.e. accel = speed - last_speed), but this is only ever an approximation.
Luckily, the straight difference isn't the only way to approximate the derivative. For example:
accel = -last_last_speed + 2*last_speed - speed;
This is a smoother derivative approximation, but it is now time-delayed (since it is centered around the time of last_speed). This is the tradeoff of filtering - with smoothness comes time delay.