Lo primero que hemos hecho ha sido calcular el numero de movimientos que hace falta para realizar un giro de 90º, pero debido a las condiciones del suelo los “pies” del robot resbalan y no gira con el mismo numero de movimientos hacia la derecha que hacia la izquierda. La distancia que necesita el robot para realizar el giro es de aproximadamente 14 cm (El ancho del robot).
Posteriormente le hemos instalamos otro modulo de ultrasonidos, de esta forma ya tenemos uno en el frontal del robot (este modulo le hemos cambiado la ubicación y ahora se encuentra en el pecho del robot en lugar de al lado de la cabeza donde lo pusimos provisionalmente) y otro en el lateral izquierdo de la cabeza del robot.
Para la instalación de este segundo modulo de ultrasonidos ha sido necesario desconectar el servo que controla el codo del brazo derecho, pese a que aun quedan libres varios puertos. Esto es debido a que para el control de cada modulo de ultrasonidos son necesarios dos puertos no pudiéndose elegir arbitrariamente cualquiera de ellos, para esta función existe un mapeo impuesto por el software del robot que agrupa por parejas todos los puertos y le asigna a cada pareja un nuevo “puerto virtual” que es el que emplea la función SONAR(). Este problema se hubiera podido solucionar con una mejor elección de los puertos empleados por los servos, ya que estos no tienen esta limitación, y haber dejado los puertos que quedan libres emparejados correctamente para poder usar mas de un modulo de ultrasonidos.
Una vez solucionados los problemas del montaje se programo al robot para que cuando encuentre un obstáculo de frente lo esquive de tal manera que pueda seguir su camino hacia delante. Para que realice esta labor mientras va andando se va comprobando que no haya ningún objeto en su trayectoria (la medición se realiza con el ultrasonidos del frontal), si detecta el obstáculo gira 90º y sigue andando hasta que el ultrasonidos lateral no detecta nada, con lo que se supone que ya se ha salvado el obstáculo y que puede volver a girar 90º hacia el lado contrario que lo hizo anteriormente y de esta forma poder seguir andando hacia delante. En el siguiente enlace se puede ver un video de demostración: http://www.youtube.com/watch?v=DXBUyaRTGKs
.
.
Parte del código del programa que permite al robot esquivar obstáculos
.
PuertoSonar = 5 'Comrpueba ultrasonido delantero
GOSUB Adquisicion_ultrasonidos 'adquiere medidas.
IF camina >= 800 THEN 'si está lejos ( 80 cm ) entonces camina.
FOR bucle = 1 TO 4
GOSUB Caminar
NEXT bucle
ELSEIF camina > 250 THEN ' si está a 25 cm da un solo paso
GOSUB Caminar
ELSE 'Lo esquiva girando al lado que defina giro
ELSE 'Lo esquiva girando al lado que defina giro
GOSUB Giro_ultrasonido
ENDIF
ENDIF
'========Subrutina para girar con ultrasonidos============
Giro_ultrasonido:
DIM I AS BYTE
PuertoSonar = 7
GOSUB Adquisicion_ultrasonidos
IF Lateral <= 400 THEN ' si hay una pared cerca por la derecha gira al otro lado
alea = 1
ELSE
alea = 2
ENDIF
FOR I = 1 TO 4
DELAY 500
GOSUB Giro
NEXT I
Sigue:
GOSUB Adquisicion_ultrasonidos
IF Lateral <>
GOSUB Caminar
GOTO Sigue
ELSE
alea = 2
gosub Caminar
FOR I = 1 TO 4
DELAY 500
GOSUB Giro
NEXT I
ENDIF
RETURN
Algunas fotos del Robot
2 comentarios:
Colgad también el programa para agarrar una botella, por favor. ¿Sigue funcionando después de los cmabios de servos y los ultrasonidos?
Documentad bien los cambios hechos en la asignación de servos, con alguna foto incluso, si es posible; son muy importantes para los que quieran continuar vuestro trabajo.
Hasta la fecha solo se ha deshabilitado un servo, correspondiente al "codo" del brazo derecho, por lo que el movimiento de agarrar, de momento, no está disponible. En un futuro queremos estudiar cómo reasignar los servos, sabemos que los grupos G6b y G6c, correspondientes a los brazos, utilizan 3 servos de los 6 que se pueden controlar, el problema es la ubicación de los que están disponibles, por tanto si conseguimos encontrar la forma de conectarlos podremos incluir hasta un tercer módulo ultrasonidos sin perder funcionalidad y así hacer a nuestro robot más inteligente.
En cuanto a el programa para agarrar, está entre los programas colgados, era el de prueba de ultrasonidos, aunque para aclarar dudas, se ha cambiado el nombre a agarrar cosas.
Publicar un comentario