la detección óptica que se encuentra en los ratones generalmente no es mucho más que tomar fotografías sucesivas del suelo con una cámara de baja resolución y correlacionarlas (desplazándolas entre sí) hasta que haya encontrado una coincidencia máxima. Eso te da una cantidad de desplazamiento de píxeles.
A partir de ese desplazamiento de píxeles, con la distancia fija entre la cámara y la superficie, es fácil inferir una distancia recorrida.
Ahora, para las vías férreas, espero que haya alguna variación en la distancia entre el sensor óptico y la tierra. (suspensiones, diferentes estados y forma del suelo); por lo que necesitará tanto un sistema para medir la distancia instantánea entre el sensor y el suelo como el desplazamiento de píxeles.
Eso debería ser fácil de construir utilizando dos cámaras montadas a una distancia fija una al lado de la otra, y bibliotecas de procesamiento de imágenes muy comunes (OpenCV viene a la mente, que es gratuita y es un estándar de facto en su disciplina). Las dos cámaras le darán información sobre la profundidad, y luego podrá usar las imágenes de la cámara y las herramientas para calcular el flujo óptico entre imágenes sucesivas para medir la distancia recorrida.
Si ya está familiarizado con OpenCV, y tiene dos cámaras web por ahí, suena como un proyecto de dos días para presentar una prueba de concepto. Conseguir que dos cámaras sean perfectamente sincrónicas y lo suficientemente rápidas, en un recinto lo suficientemente resistente para uso ferroviario, que también contenga la plataforma de computación, y con la iluminación adecuada, por otra parte, suena como una tarea de desarrollo de productos completamente desarrollada.
Si no puede, por razones mecánicas, tener dos cámaras, una cámara podría ser suficiente, si conoce el ancho de los rieles, puede usar ese ancho en las imágenes para calibrar continuamente la altura de la cámara y luego usar la altura calculada para el desplazamiento del píxel a la relación de distancia del mundo real.
En cualquier caso, diviértete calibrando cosas :)
También puedes usar algo como un sensor de pasillo montado cerca del riel o las ruedas, e inferir la velocidad de las señales que observas con eso, o más bien, de la derivada de ellas, muy fácilmente.