Why fix simulation and bother with slippage and drift? Two reasons. First, Gazebo simulator does not always shine. Later in this section you will see that an accelerometer, for example, is terribly wrong unless you turn simulation quality to maximum... in which case even one robot runs slower than realtime.
Similar problems with GPS: the Earth is round while Gazebo world is flat. We can use 3rd party libraries to recalculate lat/lon to x,y, but such libraries are not easy to use and unless you want to program something that travels long distance (like a plane) you don't really need it.
So I wrote simple replacements for some sensors: they will only work in Gazebo, but the thing is, in a real world the sensors will not be that... clumsy.
And there is a second reason. If we have an independent simulator, we do not need to run Gazebo at all in order to test our Kalman filter. It means that instead of waiting for a robot to complete a 20 minutes task, we can run it in 10 seconds! Of course, it has its drawbacks, but for development, it is priceless. Up until now the simulator was available in kalamn.py file but it was very primitive. It was sufficient as a proof on concept, but not as anything more or less accurate. This section fixes the problem.
So in this section I am going to do three things.
1. Create some code that allows simulation of a 4 and 2 wheeled dif. drive
based robot in 2d world (I will make it 3d in future sections) and with
wheels slippage.
2. Create simulated sensors for Gazebo to make a better (accelerometer) or
less complex (GPS) simulation.
3. Fix Kalman filter code and make it fit in this new concept.
Current limitations: will be addressed in future sections.
1. The world is 2d.
2. Landmarks are not supported: to add such support, I have to deside
what landmarks are and how to make the robot aware of them. Most likely,
it will be done by using camera.
There are additional sensors thay I might use, like LIDAR, ultrasound,
aGPS, beacons of all kinds: Ultrasonic Beacons, Infrared Beacons,
Radio Frequency Identification (RFID) Beacons, Bluetooth Low Energy (BLE)
Beacons... Not sure if they are required at all though.