Rotación

Para calcular la rotación.

Supongamos que tomamos uno de los dos controladores como nuestro eje de rotación. Los controladores nos dan movimientos relativos, o sea, no nos dan posiciones, sino velocidades, ya que el intervalo de muestreo es constante.

Así que tenemos dos velocidades, la de nuestro centro de rotación y la del otro.
Las restamos. Esto nos dá la velocidad del segundo controlador respecto al primero. Esta velocidad (si hemos hecho bién las cuentas) sólo puede ser perpendicular a la línea que une los dos sensores (un controlador no se puede acercar al otro, ni alejarse) y será proporcional a la velocidad angular (de nuevo por que la distancia entre ellos es fija) que es lo que estamos buscando.

Sencillo.

Comentarios

raulito ha dicho que…
exacto, en un principio para probar la jugabilidad y operancia del raton, se puede despachurar dos ratones opticos y hacer uno solo, con dos cables usb,
y hacer un driver para que, un raton funcione exactamente igual que ahora, y un programite chequee la deferencia de señales y se lo comunique al programilla en concreto, o no?
rober ha dicho que…
Insisto en la otra opción: comparar las dos imágenes consecutivas y extraer no sólo la traslación sino también la rotación.
La gaita es la velocidad de proceso, que tiene que ser rápida, rápida. Con dos sensores los cálculos son simples e inmediatos, claro; además no es necesario despachurrarlos, basta con fijarlos con una goma.
En mi portátil he probado que si intento usar el ratón externo y el pad interno "hace caso" a ambos, así que al tenerlos "pegados" ni siquiera estorbaría para el uso normal.
Pirilón ha dicho que…
Lo del driver es más jodido. Lo más fácil es usar dos cables usb y usar el driver normal de ratón, y hacer las cuentas fuera del kernel, en la aplicación. Es un poco cutre,
pero es la única solución que se me ocurre sin tener que enredar con electrónica.
Casti ha dicho que…
No estoy seguro, pero si nos ponemos a hacer un driver, no bastaría con un solo lector, a fin de cuentas el led pinta con luz roja y el movimiento se calcula "mirando" lo pintado de rojo. Asi que si leemos la imagen podemos hacer cuentas de giro sobre la imagen tomada ¿o no?
rober ha dicho que…
He estado probando el programita de que os hablé:
http://sprite.student.utwente.nl/~jeroen/projects/mouseeye/
pero no me funciona, algún problema con el puerto o lo que sea.
He probado con potochof, generando imágenes con rotación y tal, y el problema que veo es que el ratón sólo da 18x18 píxeles de aprox. 0,1 mm/pixel. A 1 m/s de velocidad (rapidito) y 500 fps (de los ratones más lentos) la traslación es 5 píxeles sobre 18. En el peor de los casos (5x,5y) se mantiene igual un cuadrado de 13x13, es decir, el 50% (en área) del cuadrado original. Pero con la rotación la cosa se complica; en primer lugar porque aún sin que hubiera traslación creo que 18x18 son pocos datos, pero con traslación y todo, no sé. La clave está en los fps: pienso que los ratones se basan en una alta velocidad de escaneo y por tanto poco cambio enla imagen, con lo que averiguan bien la traslación aunque haya algo de rotación.
De todas formas, una red neuronal bien enseñada no debería tener problemas porque a nuestro favor está la estadística: aunque la rotación más probable tenga un bajo nivel de concordancia, será la buena, porque es muy poco probable que una rotación errónea dé mejor resultado.

Entradas populares