Why does a rover with a compass weave at all?

I would have posted this in the v2.45 sub-forum, but that seems closed to new posts for some reason.

My rover is built on an Exceed RC Mad Torque crawler, but I use a better ESC and a 4S battery so I can get >1 m/s out of the thing. It weaves a LOT on its way to waypoints, and I can’t seem to tune it out.

I’m having a great deal of trouble understanding why the ardurover code should place GPS course-over-ground with a higher weight than magnetic heading. There are lots of parameters to tweak to tune out weaving behavior, but to me it seems roundabout.

If I know where I am, where I need to go to, and what my current heading is, I should be able to generate a steering command without the weaving, i.e., without the hypersenstivity to the GPS receiver’s COG/SOG algorithms. Is there someone who can explain why GPS+inertial is a better primary sensor for a rover’s navigation? Thanks.

At very low speeds, such as your ~1m/s, I have noticed that the rover steering does dither somewhat and that causes weaving at such a low speed. The weaving only tends to go away at 3m/s and above unfortunately.
TCIII ArduRover2 Developer