I'm looking into getting the linear velocity of a rover. The rover goes to about 0.5 m/s, maybe a bit more.
It is possible to obtain the linear velocity through integration with an accelerometer, but we have found that it introduces drift that accumulates.
As far as I know there is no "good solution". There is too much noise (which translates to uncertainty and inaccuracy) when acceleration is small. And as you say, those errors accumulate. Just for example, if you decelerate slowly-enough you can't measure it and you can be stopped and not know it.
If you have constraints such as limited distance or limited time, maybe you can get some useful information with acceptably-small errors.
You'll get better results the "old fashion way" with time & distance.
Wheel encoders are very popular to measure position and velocity, but wheels do slip so position will be only approximate. Position updates with external markers are generally required.
Simple, cheap encoders on the wheels do the job quite well. Just a regular encoder, don't use absolute encoders (the absolute position they give is useless function in this context, as what you're after is change in position, usually over multiple turns of the wheels).
Wheels indeed do slip - that accounts for both powered wheels (they tend to move a bit too much) and unpowered wheels (they tend to move a bit too little). When you make turns the outer wheel has to travel more than the inner wheel; in case of a fixed axle at least one of the wheels must slip, possibly both slip.