I've been working on a project where I'm supposed to design a vehicle that carries antennas to perform SAR (Synthetic-aperture radar) imaging. This vehicle has 3 wheels which 2 of them steered by a DC motor. In order to accurately perform SAR imaging algorithm, I need to know how much my car moved from its last location. There are several methods I've looked up so far, However there are problems with each of that:
GPS: Using GPS, I can do some calculations to see how much my car moved. However, since GPS locations are off about 4-5 meters, calculations that I'll make won't be accurate at all.
Ultrasonic Sensor: The problem about this way is limited distance range. (As I know 5-10 meters)
Accelerometer: Even though it seems mathematically possible to calculate distance traveled using instant acceleration, the errors occurring over time makes this calculation meaningless. There are some proposed ways like Kalman filtering to increase accuracy of these calculations.
Computer Vision: Using CV, I can track something on the vehicle and calculate its distance from the camera. I don't have much experience about this, therefore I can't estimate its accuracy.
Encoder: This way consists an encoder to track how much the wheels have turned. This seems to be a good way however I don't know if I can be accurate with this method.
I'm aiming for at least ±5cm accuracy. The total distance may reach dozens of meters.
In above ways or others, what would be a good possible solution to overcome this?