En esta práctica debemos hacer uso de dos sensores de contacto, dos sensores de luz, y de un sensor de ultrasonidos. Decidimos hacer un montaje el cual nos permitiera incorporar todos los sensores al mismo tiempo, se estén usando o no, esto nos permitió no perder tiempo en montajes y desmontajes, puesto que la propia naturaleza de la práctica nos obligaba a usar distintas combinaciones sensores. El resultado final es el siguiente:
Montaje final de RJV11 para la prática 3. |
Los sensores de contactos serán usados a modo de parachoques, permitiéndonos detectar cuando hemos colisionado con un objeto para cualquier punto de la parte frontal de RJV11. La importancia de distinguir si la colisión se produjo por la izquierda o por la derecha es vital para saber por que lado debemos sortear el obstáculo. Por ello optamos por hacer un parachoques individual para cada uno de los sensores.
Detalle de los sensores de contacto con su doble parachoques individual. |
En un principio nuestros sensores de luz estaban orientados en 90º y -90º respecto del frontal de RJV11. Dada la dificultad de estos sensores para captar la luz se decidió colocar con orientación 45º y -45º, con la esperanza de que obteniesen mejores lecturas de luz al darle más directamente.
Sensores de luz RCX con orientaciones 45º y -45º. |
El sensor de ultrasonidos era necesario montarlo de tal manera que pudiera girar hacia la izquierda y la derecha con el fin de detectar obstáculos. No se nos ocurrió manera más sencilla de colocarlo que directamente sobre un eje conectado a un motor. De esta manera podemos girar el sensor facilmente gracias a la odometría interna del motor.
Sensor de ultrasonidos conectado a un motor. |
Comportamiento de evitación de obstáculos usando sensores de contacto:
Para este ejercicio, hemos usado dos sensores de contacto, ya que si RJV11 choca contra un obstáculo que está a su izquierda, el robot retrocede un poco para esquivarlo, y viceversa.
Para calcular como esquivar los objetos, hemos implementado el codigo basándonos en el caso extremo, en el que el objeto está en en centro del robot ,de tal forma que lo esquive sin chocar.
También, al chocar el robot e ir hacia atrás, se descolocaba de su eje inicial y al girar no se quedaba en la misma trayectoria que al principio, por lo que decidimos que el robot se parara un intervalo de tiempo desde que choca hasta que retrocede.
Comportamiento de evitación de obstáculos usando el sensor de ultrasonidos:
En este ejercicio hay que esquivar obstaculos antes de llegar a el, para ello usamos el sensor de ultrasonidos y un motor que lo hace girar desde -45 a 45 grados de la direccion del robot.
Para calcular como esquivar ese obstaculo hemos usado funciones trigonometricas para calcular una suma ponderada de las coordenadas de las fuerzas de atraccion y repulsion. Dicha ponderacion depende de la distancia a la que se encuentre el objeto.
Comportamiento ir hacia la luz:
En una intuición inicial los sensores de luz fueron utilizados en modo pasivo, de tal manera que no emitieran luz, y fuera únicamente la luz ambiente la que les influyera. Lamentablemente pudimos comprobar como al estar en modo pasivo las lecturas de luz eran mucho menos precisas que en modo activo. Por que se pusieron otra vez en modo activo.
La orientación de los sensores pudo hacerse perfectamente en 90º y -90º, pero debido a la dificultad que tienen estos sensores para captar la luz que no le llega directamente, se decidió orientarlos en 45º y -45º, con la intención de que mejorase los resultados.
Uno de los mayores problemas de este ejercicio es el sensor de luz en si mismo. La sensibilidad que ha demostrado ha sido bastante pobre, lo cual nos ha dificultado mucho las cosas a la hora de implementar un algoritmo con los valores de luz captados.
Otro de los problemas que se pudo solucionar fue el hecho de que a pesar de que los dos sensores son del mismo modelo, ante igual exposición a la luz, nos daban valores de lectura considerablemente diferentes. Esto se arregló durante el proceso de calibrado de la oscuridad, de tal manera que le hallaba el error sistematico entre un sensor y otro ante la misma cantidad de luz (dentro de lo posible), y posteriormente se usaba ese error sistematico para equilibrar el error cometido entre los dos sensores en cada una de las lecturas.
Finalmente, y como en prácticas anteriores, para guiar a RJV11 hacia la luz se optó por un control reactivo P respecto del error cometido entre las lecturas de los dos sensores (teniendo en cuenta el error sistemático entre ambos). De esta manera si el sensor izquierdo capta más luz que el derecho, RJV11 girara a la izquierda para orientarse a la luz mediante el método steer con un valor de ratio de giro proporcional al error, y viceversa. El resultado se puede ver en el siguiente video:
Comportamiento ir hacia la luz evitando obstáculos:
En este ejercicio hemos mezclado los comportamientos tanto el de esquivar un obstaculo por contacto, como el de esquivar un obstaculo con ultrasonidos, con el comportamiento de seguir hacia la luz, por lo cual RJV11 sigue la luz esquivando los obstaculos.
seguir la luz esquivando con contacto
seguir la luz esquivando con ultrasonidos
Próxima entrega: Práctica 4 - Control PID: el robot equilibrista
0 comentarios:
Publicar un comentario