Batallando con el nuevo gyro-sensor



Esto girosensor era más simple de lo que pensaba al inicio. Por un lado tenía la duda del porqué de este sensor en el robot EV3 y luego de usarlo un poco, me doy cuenta de lo útil que puede ser.


¿Para qué sirve el girosensor (gyro sensor)?
Este sensor en pocas palabras te permite medir grados con respecto a una posición inicial, que debería ser 0 grados al iniciar o conectar el sensor o robot (Debemos de reiniciar el sensor cada vez que ejecutamos nuestro programa por facilidad y para no mantener datos basura que afecten la lógica de la programación).


Así cada movimiento hacia que cambie la posición del robot hacia la derecha o a la izquierda sumará o restará grados a nuestra posición inicial.
Por ejemplo en la imagen, nuestra posición inicial es 0 grados y si el robot gira un poco a la derecha, se moverá x grados de forma positiva (en la imagen 45 grados), pero si se moviera a la izquierda, serían negativos.

Esto nos permite hacer giros de 90, 180 o 360 grados de manera mucho más sencilla que sin la ayuda del girosensor. Si quisiera que el robot diera una vuelta completa y quedará viendo hacia un lado, podría entonces ordenarle girar a la derecha (rotaciones, grados, ilimitado, etc.) hasta que detecte que el girosensor se ha movido 90 grados desde su posición inicial. O en caso contrario, girar hacia la izquierda hasta los -90 grados.


Para movimientos de avanzar o retroceder en línea recta, el girosensor no se vería afectado en ningún cambio en su posición de 0 grados. Esto si el robot se moviera en una perfecta línea recta... Desgraciadamente para los que hemos trabajado con robots, en la realidad las máquinas son bastante tontas y cualquier "detalle" genera pequeños desajustes de esa línea perfecta que el robot debería de seguir, por cosas tan sencillas como defectos en el terreno, diferencias entre los motores, desgaste de los materiales, la fricción entre ruedas y terreno, etc. Así pues, siempre se deberá de trabajar con un cierto rango de imperfección tolerable y que tendremos que probar con nuestros robots para conseguir los resultados mínimos deseados y por ejemplo girar a un más a un lado o al otro para mantenernos lo más cercanamente posible a la posición en que deseamos que quede el robot. Quizás para tu proyecto, un giro de 90 grados sea en realidad un giro de 80 o 95 grados.


Ejemplos de programación

Lo primero, siempre resetear el girosensor a la posición inicial.




Después de ejecutar este paso, vemos que el sensor registra la posición en la que se encuentraba el robot como la posición 0 grados.





En este otro ejemplo el robot activa el motor B hasta dar un giro de 90 grados a la derecha (La potencia del motor será negativa o positiva dependiendo de la posición que tengan los motores en su robot).

 

En este ejemplo, el motor B gira (hacia la izquierda) hasta dar una vuelta de -180 grados (Recuerden que puede que para ustedes la potencia sea la inversa a la que esta en el ejemplo).




En este otro ejemplo, el robot avanzará creando un cuadrado mediante el girosensor.

La lógica de este último ejemplo es sencilla. Primero el robot reinicia el girosensor para fijar la posición inicial. Luego avanza 3 rotaciones hacia adelante. Empieza a girar a la derecha hasta que llega a los 90 grados. Esto se repite 4 veces formando un cuadrado. Finalmente apaga los motores. Reinicio, avance, giro, repetir. Noten que se debe reiniciar el girosensor en cada bucle, pues de lo contrario no ejecutaría el giro al estar ya en 90 grados desde su primera posición inicial.


Notas varias
  • Según Lego, el girosensor debería de conectarse al conector 2, pero el software lo identifica sin problemas aunque este en otro conector.
  • Siempre se debería de resetear el girosensor, sea por software, desconectándolo del ladrillo EV3 o al apagar y prender el robot. Sino cualquier cambio en la posición será basura en nuestra medición y afectará de formas impredecibles al robot.
  • Aconsejo montar el sensor de forma horizontal en el robot, para evitar medidas incomprensibles del sensor. Igual, que este bien firme en la estructura del robot para evitar mediciones extrañas. Sin embargo, me parece haber visto que se puede usar verticalmente para robots que deban guardar equilibrio sobre dos ruedas (Seguiré investigando).
  • En los ejemplos se muestra con 90 o 180 grados exactos, pero en la realidad posiblemente tengas que ajustarlo un poco mas o un poco menos hasta dar con la medida del giro que necesitas. Puede que tu 90 sea un 83 o que tu 180 sea más bien un 185.
  • ¿Mencione lo importante que es reiniciar el girosensor?