I need to code an odometer (a way to determine the position of a robot) from scratch. I am using an Elisa-3 robot (information about it can be found HERE).
The specs of the robot state that a speed value of 10 (on a scale of 0-127) equates to an actual speed of 50mm/s. While this is inaccurate (the actual speed is somewhat less and seems to vary based on the input value, but I'll leave that aside for now), I have tried using these values with the mathematical formulae listed HERE (a simpler version of the same can be found HERE), but to no avail (the problem being that the robot thinks it's rotated 360 degrees immediately and tries to stop, even if I program it to wait after it moves for the first time).
I have since tried a simpler code, making the robot move forward and back at one second intervals while adding its +ve and -ve velocities to a counter, yet the robot never reaches "0" (i.e. it moves forward and then back to its starting position); it just goes forward and back continuously.
I have looked at the inbuilt functions of the Elisa-3 library, but they are useless. The "computeAngle" function is supposed to the robot's orientation and position, yet neither it nor the initAccelerometer function work. (In fact, computeAngle computes its angle in the z axis instead.)
Which brings me back to my question: is there a better way to code an odometer from scratch? Also, are functions that set the speed of a robot universal (i.e. could I use a different library's "setSpeed" function with the Elisa-3)?
P.S. The wheels of the robot aren't identical: I need to set the speed of the right wheel to 9/10ths the speed of the left for it to move in a straight line. While this is an easy adjustment to make (or outright ignore) when it comes to calculations, I felt it was worth mentioning nevertheless.
Thank you in advance.