Su problema se hace un poco más difícil al seleccionar una superficie que no refleje bien el IR ni el ultrasonido.
Los acelerómetros son casi totalmente inútiles para la retroalimentación de posición.
Realmente podríamos obtener más información sobre su configuración. Parece que ha intentado abstraer los detalles para que sea más fácil de responder, pero la información de fondo suele ser útil.
Las posibles soluciones incluyen:
- Una cámara sobre tu "objeto" que lo rastrea con OpenCV o similar. (No está claro si esto es factible)
- Si hay una pared detrás de tu objeto que no es negra y suave, mide la distancia desde esta pared en su lugar
- Si su "objeto" es compatible con USB, entonces un mouse óptico arrastrado sobre el suelo le dará una odometría bastante precisa
- Si su objeto está sobre ruedas, coloque un codificador en las ruedas para medir su rotación
- Un patrón de rayas negras / blancas alternas en el piso que se puede medir con un par de fotosensores (uno frente al otro, más espaciados que el ancho de la banda) para determinar el movimiento
La mejor solución para usted depende de los detalles de su proyecto.