Thanks again for your help, and for the spreadsheet. As discussed I have obtained a sample of the robotic test data. The robot is a good quality industrial pick and place device. The person who did the test described it as follows:
The instructions given to the robot to move the odometer were pretty simple. I had the robot start from one position, wait 10 minutes, then move 100mm in (roughly) the odometer’s x axis. The robot waits 10 minutes, then continues along the same line another 100mm, and so on, up to a total of 500mm travelled, after which it moves back linearly to the starting position.
The graph shows the odometer data for this movement. The red x on the right is the starting point. As you can observe, the position data shows 5 straight lines with sharp angles between them. The straight paths correspond to the 100mm movements, and the corners are positions where the robot was instructed to wait for 10 minutes. The final long straight line corresponds to the 500mm movement back to the start.*
Ideally, the position data should be a straight line. The data presented here indicates a drift in the rotation angle measurement of the odometer, as the expected straight line is instead curved, and furthermore, the end point is not identical to the start point. Since the corners are strongly defined, there doesn’t appear to be any significant drift in the x or y measurements over the course of 10 minutes. (This was also tested and verified by measuring odometer data for 10 minutes without moving it at all.) Furthermore, from the figure and the rotational data from the corresponding log, the odometer drift appears to not be fixed but slowly increase.
The base data for this is here:
I looking at the data I tend to agree that the basic device is probably doing what its supposed to, the issue looks like level drift in the gyro.
Looking at the calibration process, this is an option for us, and we will have a look to see how we can do using an appropriate rail like surface.