(resumen)

Juego online que telecontrola robots recicladores de basura (robots físicamente reales ubicados en un vertedero).
Los jugadores compiten y colaboran con otros usuarios, suben niveles, cumplen metas y -sobretodo- trabajan en la recolección (reciclaje) con un 250% de eficiencia con respecto a la misma faena en un contexto laboral tradicional.
El desarrollo de los juegos online está consolidado en el mercado, siendo la adicción una de sus características principales. En cuanto a los robots, éstos ya se ocupan en variadas tareas tales como la exploración submarina, el montaje industrial, el reconocimiento de zonas lejanas y hostiles, e incluso como juguetes.
En síntesis, PLAYTRASH une dos mundos de gran potencial: los videojuegos y la robótica, conjuntamente aplicados a la entretención y a la restauración del medioambiente.

viernes, 1 de febrero de 2013

PortaBot

Fuente:   http://www.aprenderobotica.com/group/boebot/forum/topics/robot-wifi-gps


En esta página vamos a tratar de describir como crear un robot telecontrolado o teleoperado de forma sencilla. Para ello principalmente necesitaremos un ordenador portátil, conexión Wifi y un microcontrolador con motores para mover el sistema.
En la figura 1 se puede observar el resultado final del proyecto Portabot. Este sistema aprovecha la tecnología Wifi para comunicarse muy fácilmente con otros robots, con el sistema de telecontrol, etc.
Por otro lado, está dotado de una webcam para dotar de visión al robot, un sonar para dotarlo de orientación y un sensor de ultrasonidos para detectar a que distancia real están los objetos visionados por la webcam.

 
FIGURA 1. Resultado final del proyecto Portabot

El robot, al estar basado en un ordenador portátil basado en la arquitectura x86, con sistemas operativos modernos, como Linux, Windows XP, etc. permite realizar todo tipo de acciones de una forma muy sencilla. Por ejemplo, podemos controlar el robot a través del acceso a escritorio remoto, conectar un GPS para calcular la posición exacta del robot o dirigirlo hacia cualquier parte del mundo, colocar una tarjeta de red GPRS para estar conectado en cualquier momento y en cualquier lugar, y accesible desde cualquier parte del mundo.

El desarrollo de todas estas potencialidades, se tratarán en próximos proyectos. Entre los siguientes proyectos a desarrollar nos encontramos con los siguientes:
Portabots colaboradores Un proyecto en el que trataremos de hacer que los portabots
colaboren para realizar tareas de forma conjunta, desarrollando
un protocolo de comunicación específico
para los portabots.
Portabot GPS Añadir al sistema un GPS y hacer que navegue hasta unas coordenadas
dadas. Además deberá evitar los obstáculos
que encuentre.
Portabot GPRS Añadir al sistema una tarjeta GPRS y desarrollar un protocolo
de comunicación que sea económico en la
transmisión de datos. Para recibir el vídeo
podría enviarse a través de un sistema tradicional
con un modulador de audio/video.
PDAbot Sustituir el portátil por un PDA

Pero por ahora, vamos a empezar por la configuración básica del portabot. En la figura 2 ahora podemos observar el sistema de control básico del robot portabot.

 
FIGURA 2. Sistema de control básico del robot portabot

Consiste en un programa desde el cual enviamos los comandos de avanzar, retroceder, girar izquierda y derecha para controlar el movimiento del robot. Así mismo, el robot muestra la imagen capturada por la webcam y los datos devueltos por la brújula electrónica y el sensor de distancia.
Lo primero que vamos a desarrollar, será el chasis sobre el cual montaremos el robot, este chasis está controlado por un microcontrolador de la empresa Parallax llamado Basic Stamp 2. Es el encargado de recibir las órdenes del portátil (Avanza, Izquierda, Derecha y Retrocede), ejecutarlas y enviar los datos recibidos por los sensores al portátil.
La comunicación del portátil con el Basic Stamp, se realizara mediante una conexión serie.
Si nuestro portátil no tiene conexión serie, deberemos colocar un adaptador de USB a Serie. La lista de materiales necesarios es la siguiente:

Material
Precio
Donde comprar
(no tengo comisión ;-))
Listón de madera de pino de 2 metros x 3 cm. (aprox.)
1,50 €
Tiendas de bricolaje
Tarjeta de control Home Work (incluye BS2, protoboard, conector
serie...)
48,00 €
www.microcontroladores.com
Driver para motores basado en el controlador L293B *
16,00 €
www.microcontroladores.com
2 Servomotores de rotación continua
2 x 15,00 €
www.microcontroladores.com
2 ruedas de parallax
2 x 3,00 €
www.microcontroladores.com
1 medidor ultrasónico SRF04 **
29,00 €
www.microcontroladores.com
1 Compás electrónico **
40,00 €
www.microcontroladores.com
Material diverso (cola blanca, cable rígido de colores,
1 portapilas, 2 ruedas locas, tornillería diversa,
una pila de 9v y 4 de 1,5v (mejor recargables))
9,50 €
Tiendas de electrónica y bricolaje.
TOTAL
180,00 €
Vaya tela.
* El driver para motores es fácilmente desarrollable. Si no tienes experiencia, tiempo o ganas, cómprate el módulo, en caso contrario, ahorrarás unos 12,00 € haciéndolo por tu cuenta. ** Estos módulos son opcionales. Si no los incluimos no tendremos medida de la orientación ni la distancia al objeto más cercano pero nos ahorraremos 69€.
Total ahorro opcional: 81 €. Precio mínimo del proyecto: 99€.

Como la conexión entre distintos robots, se va a realizar desde el portátil, el subsistema del chasis se puede implementar como se quiera. Con otro microcontrolador, sin microcontrolador controlándolo por el puerto paralelo, ... que podrían abaratar el coste del proyecto, pero que sin duda alguna, lo complicarían bastante más. El objetivo de este proyecto es que sea lo más fácil posible para poder introducir en el mundo de la robótica al mayor número de personas posible.

Primer paso: El chasis.
Para soportar el ordenador, construiremos un chasis de madera como el de la fotografía. Sobre dicho chasis colocaremos los motores y las ruedas locas en las esquinas opuestas a estos.
 
FIGURA
3.
Construimos un chasis sobre el que colocar el robot y colocamos 2 ruedas
locas en la parte posterior del mismo.

 
FIGURA
4.
En la parte delantera colocamos 2 servomotores trucados con 2
ruedas de Parallax que tienen la altura perfecta para estabilizar el chasis.

El material utilizado en este paso han sido listones de madera de pino de 3cm. de ancho que hemos cortado a la medida del ancho y largo del portátil. Además hemos colocado las 2 ruedas locas y hemos colocado con el mismo listón de madera, una sujeción para los servomotores. Todas las piezas de madera las hemos unido con cola blanca y la sujeción de los motores a la madera mediante pequeños
tornillos con sus tuercas correspondientes.


Segundo paso: Colocando el Basic Stamp, las pilas y los sensores
A continuación colocamos tantos listones transversales como sean necesarios para colocar los elementos que necesitemos. En nuestro caso hemos colocado 2 para colocar la placa del Basic Stamp. Así mismo hemos colocado un portapilas para la alimentación de la placa del basic stamp y otro para la alimentación de los motores. Así mismo, hemos colocado un compás en la placa del Basic Stamp, un driver para los servomotores trucados, un SRF04 en la parte frontal y un interruptor para la alimentación
de la placa.


FIGURA
4.
El chasis del robot con el Basic Stamp 2, sensores y actuadores.
Falta unirlo al portátil por el puerto serie.


Tercer paso: Programando el Basic Stamp 2
El basic stamp 2 tiene la misión de obedecer las órdenes del portátil que llevará encima de él.
Para ello, principalmente, lo que hará será escuchar las órdenes recibidas por el puerto serie y ejecutar las acciones correspondientes. Dichas órdenes se resumen en la siguiente tabla:

ORDEN DEL PC ACCIÓN DEL BASIC STAMP
L El basic stamp 2 lee el valor de sus sensores (SRF04 y compás)
y devuelve su valor.
A El robot avanza
R El robot retrocede
D El robot gira a derecha
I El robot gira a izquierda
P El robot para
F Finaliza el programa
S El Basic Stamp, espera hasta recibir este comando, y en cuanto
lo recibe empieza a procesar el resto de comandos.


He aquí el programa fuente:
'{$STAMP BS2}
'{$PBASIC 2.5}
' PORTABOT 0.1 Abril de 2005
'===============================
' Autor: Aritza Etxebarria Ruiz
' ikercv@yahoo.es
'===============================
' CONSTANTES
'===============================


'===============================
' INICIALIZACIÓN LÍNEAS E/S
'===============================
'MOTORES
OUTPUT 0
OUTPUT 1
OUTPUT 2
OUTPUT 3
'LED DE COMUNICACIÓN
OUTPUT 4
'ENTRADA DEL COMPASS
INPUT 5
'SEÑALES DEL SRF04
Trigger PIN 10
Echo PIN 11

'===============================
' VARIABLES
'===============================
'DATO RECIBIDO POR EL PUERTO SERIE
DATO VAR Byte
'RECIBE EL DATO DEL COMPASS
bearing VAR Word
'DATO RECIBIDO DEL SRF04
DISTANCIA VAR Word
'NUMERO DE MUESTREOS DEL SRF04
samples VAR Nib
'ANCHO DEL PULSO RECOGIDO DEL SRF04
pWidth VAR Word
'DISTANCIA MEDIDA POR EL SRF04
rawDist VAR Word

'===============================
' PROGRAMA PRINCIPAL
'===============================
'EL ROBOT ESPERA LA INICIALIZACIÓN DEL PC
'CUANDO RECIBE LA I, ENCIENDE EL LED DE CONEXIÓN OK
'Y COMIENZA EL BUCLE PRINCIPAL
DISTANCIA = 0
START:
DEBUGIN DATO
IF DATO = "S" THEN
GOSUB CONECTADO
ELSE
DEBUG "ERROR",CR
GOTO START
ENDIF

'===============================
' BUCLE PRINCIPAL
'===============================

INICIO:
'LEEMOS UN DATO POR EL PUERTO SERIE
'Y EJECUTAMOS LA RUTINA CORRESPONDIENTE
DEBUGIN DATO
IF DATO = "L" THEN
GOSUB LEE
ENDIF
IF DATO = "A" THEN
GOSUB AVANZA
ENDIF
IF DATO = "P" THEN
GOSUB PARA
ENDIF
IF DATO = "I" THEN
GOSUB IZQUIERDA
ENDIF
IF DATO = "D" THEN
GOSUB DERECHA
ENDIF
IF DATO = "R" THEN
GOSUB RETROCEDE
ENDIF
IF DATO ="F" THEN
GOTO FINALIZAR
ENDIF



GOTO INICIO

'===============================
' SUBRUTINAS
'===============================
CONECTADO:
'ENCENDEMOS UN LED DURANTE MEDIO SEGUNDO
'PARA SABER QUE SE HA CONECTADO EL PC CON EL BS2
OUT4 = 1
PAUSE 500
OUT4 = 0
RETURN

AVANZA:
OUT0 = 0
OUT1 = 1
OUT2 = 1
OUT3 = 0
RETURN

RETROCEDE:
OUT0 = 1
OUT1 = 0
OUT2 = 0
OUT3 = 1
RETURN

PARA:
OUT1 = 0
OUT2 = 0
OUT0 = 0
OUT3 = 0
RETURN

DERECHA:
OUT0 = 1
OUT1 = 0
OUT2 = 1
OUT3 = 0
RETURN

IZQUIERDA:
OUT0 = 0
OUT1 = 1
OUT2 = 0
OUT3 = 1
RETURN

LEE:
'LECTURA DEL COMPASS
PULSIN 5, 1, bearing
bearing = (bearing-500)/50
DEBUG "COMPAS-", DEC3 bearing ,CR
'LECTURA DEL SRF04
LOW Trigger
rawDist = 0 ' clear measurement
FOR samples = 1 TO 5 ' take five samples
PULSOUT Trigger, 5 ' 10 uS trigger pulse
RCTIME Echo, 1, pWidth ' measure pulse
rawDist = rawDist + (pWidth / 5) ' simple digital filter
PAUSE 10 ' minimum period between
NEXT ' take sonar reading
DISTANCIA = rawDist / 30 ' convert to centimeters
DEBUG "DISTAN-", DEC3 DISTANCIA ,CR
RETURN

FINALIZAR: 'PARAMOS MOTORES Y PERIFÉRICOS
GOSUB PARA
OUT5 = 0
END 'FIN DEL PROGRAMA.

Cuarto paso: Programando el PC
Una vez programado el Basic Stamp 2. Pasamos a programar el PC. Lo haremos en Visual Basic 6. Principalmente el programa enviará distintos comandos de movimiento en función del botón pulsado por el usuario y periódicamente enviará de forma automática un comando L para que el Basic Stamp le envíe los datos recogidos por los sensores.
Puede descargar el programa fuente desde aquí (25 Kb. incluye también el programa del Basic Stamp).


Quinto paso: Controlando remotamente el sistema.
Una vez programado el PC, conectaremos robot y portátil a través del puerto serie. Cambiaremos la configuración del portátil para que al cerrar la tapa del mismo, no hiberne. Y además conectaremos la cámara web. Una vez arrancados ambos sistemas procederemos a conectarnos remotamente a través del escritorio remoto de windows a nuestro portátil y así poder controlar el robot.


Futuros trabajos

Esta plataforma, puede ser muy interesante para adentrarse en el mundo de la robótica. Podremos trabajar muchos aspectos como el de la visión artificial, la navegación guiada, navegación autónoma, reconocimiento de patrones, lugares,... Animamos a todos aquellos que realicen proyectos de este estilo a que se pongan en contacto con el autor para compartir dichas experiencias.



No hay comentarios:

Publicar un comentario