Es una situación bastante común
- Un robot que analice el entorno para detectar algo. Como el ball hunter de nxtprograms, o mi fallido intento de hacer un mapa del entorno.
- Un robot que vea algo que no le guste y de media vuelta. Como por ejemplo la demo del nxt.
Un poco de geometría, nos dará no sólo la solución sino que nos ayudará a comprender el problema. Lo principal es recordar que el perímetro de una circunferencia es pi * diámetro ó pi * 2 * diámetro.
Pongamos de ejemplo la vuelta de una rueda de bicicleta (el reflectante empiece en el punto más bajo y vuelva a estarlo). La distancia que ha recorrido la bicicleta es pi*diámetro. También, la rueda de la bicicleta, ha girado 360 grados. Es decir, para girar 360º hace falta recorrer el perímetro completo.
Ahora mirad el siguiente dibujo. Es nuestro tribot visto desde arriba y dibujado por un pintor abstracto. Los rectángulos de los lados son las dos ruedas del tribot y la circunferencia sobre las que están, es lo que tienen que girar para hacer un giro completo. Para que el tribot gire completamente sobre sí mismo, cada rueda tiene que girar volviendo a su posición original.
Nuestro fallo, es que hacemos que cada rueda gire 360º, es decir, pi*diámetro, cuando en realidad lo que tienen que recorrer es pi*distancia entre las dos ruedas,que es el diámetro de la circuferencia grande.
Ahora unas fórmulas que nos harán la vida más fácil y también la correspondencia entre grados, radianes y coordenadas polares.
Las veces que tiene que girar la rueda para volver al origen, o para recorrer 360º pi*distancia entre ruedas / pi * diametro rueda = distancia entre ruedas / diametro rueda.
Si queremos que el giro no sea de 360º sino de un número de grados en concreto, pues una regla de tres. Dividimos entre 360º para sacar lo que recorre en un grado y multiplicamos por n, número de grados. (distancia entre ruedas * número de grados) / (diámetro ruedas * 360º)
Sobre radianes y grados. En este enlace de la wikipedia, os lo contarán mucho mejor que yo. Pero recordad que pi radianes son 180º.