I've made a robot controlled by Arduino and Processing, which moves in a room by rotating itself (like a sphere).
What I need is to be able to get the new location once it moves on the floor (let's say within a 3m x 3m room). I'm using a 9DOF sensor (3 axes of accelerometer data, 3 axes gyroscopic, and 3 axes of magnetic data) to determine its roll, pitch and yaw and also its direction.
How is it possible to identify accurately the location of the robot in Cartesian (x,y,z) coordinates relative to its starting position? I cannot use a GPS since the movement is less than 20cm per rotation and the robot will be used indoors.
I found some indoor ranging and 3D positioning solutions like POSIX or by using a fixed camera. However, I need it to be cost-efficient.
Is there any way to convert the 9DOF data to get the new location or any other sensor to do that? Any other solution such as an algorithm?