Autor Tema: Robot XbeeXplorer 2.0  (Leído 3706 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alcubo01

  • PIC12
  • **
  • Mensajes: 69
Robot XbeeXplorer 2.0
« en: 07 de Diciembre de 2011, 08:31:27 »


Hola a todos, como hago bastante uso del foro para resolver dudas y seguir aprendiendo, quería compartir el empujoncillo que le he dado
con vuestra ayuda a la primera versión del Robot Explorador. He cambiado tanto el Hardware como el Software.


         
 
 
 

Detallo un poco:


HARDWARE
 
Hay diseñadas dos placas para llevar a cabo el Robot. A lo largo del desarrollo del proyecto, han sufrido variaciones y algunos pines han
acabado teniendo funcionalidades diferentes de las que se pensaba en la etapa de diseño. A grandes rasgos podemos describir las placas
de la siguiente manera:


PLACA MASTER Y CAPTACION SENSORES:

- 10 Entradas para sensores Analogicos
-  8 Entradas para sensores I2C
 
- Conexión Xbee (PC)
- Conexión I2C (Placa Control de Servos)

- Conexión LCD 16X2
- Conexión teclado Matricial

- Conexión MiniUSB (Bootloader)

- Micro 18F4550 (Programado con C18)



         



PLACA CONTROL DE SERVOS Y MOTORES CON ENCODER:

- 16 Salidas PWM ( Por SW sólo están habilitadas 8 )
- Entradas para 2 Encoders (2 canales por encoder)

- Conexión RS232 (usada en tareas de depuracion)
- Conexión I2C   (placa Master)

- Configurable por jumper alimentacion propia o a través de la placa Master

- Micro 18F26K20 (Programado con PICC)



         



SENSORES DISPONIBLES:

+ Camara Video Inalámbrica. El Rx está conectado a una capturadora de Video en el PC.

+ 2 Encoders de 128 pasos por vuelta

+ 2 sensores de luminosidad (fotorresistencias)
+ 1 Brújula digital
+ 1 Sonar SRF02
+ 1 sensores de distancias infrarrojo



TRACCION DEL ROBOT:

+ 2 Servos trucados Futaba S3003




Funciones Placa Captación de Sensores (Master):

Esta placa lleva una comunicación directa con el PC via Xbee. Recibe mensajes con órdenes del PC y es la encargada de procesarlas.

Algunas de sus funciones son:

+ Gestionar todos los mensajes recibidos del PC y enviar los que correspondan a placa control de Servos
+ Gestionar la lectura de todos los sensores
+ Enviar las lecturas de los sensores al PC con un periodo configurable remotamente. Tasa Max 10Hz (80-100 ms)
+ Mostrar Mensajes en LCD
+ Gestionar el teclado



Funciones Placa Control de Servos:

Esta placa está conectada a la placa Master (Sensores) y recibe las órdenes directamente de ella. Sus funciones principales son:

+ Mover los Servos (Camara)
+ Mover las Ruedas
+ Gestionar los dos encoders

+ Aplicar PID para control de Posición a las ruedas (ir a una posición del encoder concreta)
+ Aplicar PID para control de Velocidad a las ruedas
+ Aplicar PID para control de Orientación Magnética (Cuando entra en este modo, la placa Master se encarga de proporcionar las lecturas de la brújula)

+ Es posible modificar todos los parámetros importantes (PID incluidos) remotamente y en tiempo de ejecución.






SW E INTERFAZ PC:

Aquí podemos hacer una distinción. Por un lado se ha programado una clase Robot que gestiona la conexión con el Robot, y nos ofrece una librería
de funciones para interactuar con él (enviar ordenes, lectura de sensores, configurar parámetros,...). Por otro lado está la interfaz visual
que se ha creado específicamente para usar una instancia de la clase Robot y facilitar la tarea al usuario.

Todo está desarrollado en Visual C++ haciendo uso de las librerías OpenCv.



Módulo configuración inicial Interfaz:

+ Inicia la Conexión Xbee con el Robot y nos indica el estado de la misma.
+ Escanea todas las interfaces de entrada de video y nos deja elegir la que corresponde con el robot.

         
         
         


Módulo control rápido de acciones:

+ Es el módulo de la interfaz ubicado en la parte superior derecha. Nos permite rápidamente tomar el control de Robot y ordenarle que
  que pare o se mueva en una dirección. También nos permite modificar el PAN-TILT donde están ubicadas la cámara y el SRF02.
 
       Control Camera:
      
         
         
          Control Movimiento:
         
         
 

Módulo imagen capturada:

+ Muestra la imagen capturada y superpone a la imagen las lecturas de los sensores y el Frame Rate. En el caso de la brújula, ademas
  existe una imagen que rota en función del valor del sensor. Está en la esquina inferior derecha.


Tab configuración de Servos:

+ Permite configuración de los servos, testear posiciones, fijar la posicion zero, etc...


         
         
         
         

Tab lectura de Sensores:

+ Permite chequear la lectura de los sensores de una manera gráfica.


         
         
         
         

Tab LCD:

+ Nos permite mostrar mensajes en la pantalla LCD disponible en el Robot


         
         
         


Tab PID:

La placa de control de Servos es capaz de implementar 4 tipos de Controladores PID:

Posicion: Lee el encoder e impone una posición determinada.
Velocidad: Lee el encoder e impone unas revoluciones por minuto fijas a cada rueda.
Rumbo y velocidad: Lee el encoder y la brújula e impone el rumbo y la velocidad.
Rumbo y distancia: Lee el encoder y la brújula e impone el rumbo y la distancia total que debe recorrer.


La interfaz nos permite variar la configuración de los parámetros de los PID. También nos posibilita fijar los valores objetivo
de los PID de manera absoluta o incremental.

En el caso del PID de rumbo en la interfaz se añade una imagen con un círculo. Dependiendo donde hagamos click,
  estaremos enviando como objetivos del PID un rumbo y velocidad concretas. (el radio es la velocidad y angulo el rumbo).
 
           
           
           
 
         PID Posicion:
        
           
           
            PID Velocidad:
           
           
           
            PID Rumbo:
           
           

 
 
Tab Maniobra:

+ Nos ofrece las maniobras disponibles en la librería de Robot. Para cada maniobra, nos pedirá sólamente los parámetros que necesite.

+ Las maniobras son por ejemplo Avanzar X cm, Pivotar, andar con velocidad y rumbo constante, ...

         


          Maniobra Avance:
         
         
         
          Maniobra Rumbo:
         
         

          Maniobra Avance con Rumbo:
         
         

         


Tab Sonar:

+ Implementación de una maiobra compleja. Le indicamos la resolución que queremos y el robot pivotará 360 grados pintando la distancia
  a la que se encuentran los objetos a su alrededor. En la interfaz los datos se pintan en tiempo real.
 
 
         
         
         

 
Tab Inteligencia Artificial:

+ Es el modo de Inteligencia Artificial. La interfaz lanza un nuevo hilo que toma el control del Robot. Haciendo uso de la librería de
  maniobras y de la lectura de los sensores, podemos programar el comportamiento del Robot. Hay creado un ejemplo de prueba que pone el
  robot en un modo de búsqueda del lugar más oscuro que tiene a su alrededor.
 
 
         

 
Tab Video:

+ Este modo nos permite capturar un video en formato AVI y compresión DIVX de lo que ve el robot (imagen + sensores).

+ Se ha añadido la opción de procesar la imagen que se está recibiendo. Como ejemplo está la detección de vértices. Todo esto es
  en parte para resaltar que se está usando OpenCV, que es una herramienta muy potente de tratamiento de imágenes. Gracias a ella
  podemos incorporar a la lista de sensores la imagen recibida. En caso de ser necesario, OpenCV nos facilita el reconocimento facial,
  detección de obstáculos, etc...


         
         
         



 
 Bueno, de momento eso es todo lo que tengo implementado. A partir de ahora creo que me pondré a jugar con el modo de inteligencia artificial
 para ver si le saco partido a la librería.
 
 
 Un saludo, alcubo01
 
 

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Robot XbeeXplorer 2.0
« Respuesta #1 en: 07 de Diciembre de 2011, 11:39:31 »
Que gran trabajo... Software, hardware y documentacion. Grandioso!

Porcierto, que camara usas? Procesas la imagen y luego la envias a travez del XBEE? O, al decir q es inalambrica, tienes otros rx en la pc? Si es asi, cual es su distancia maxima de la camara?


Felicidades por el proyecto!
« Última modificación: 07 de Diciembre de 2011, 11:43:04 por jeremylf »

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Robot XbeeXplorer 2.0
« Respuesta #2 en: 07 de Diciembre de 2011, 12:42:35 »
Muy buen proyecto. Enhorabuena.

Saludos.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Robot XbeeXplorer 2.0
« Respuesta #3 en: 07 de Diciembre de 2011, 14:18:40 »
Felicidades por tan buen proyecto. Gracias por compartirlo con todos.

Saludos!

Desconectado alcubo01

  • PIC12
  • **
  • Mensajes: 69
Re: Robot XbeeXplorer 2.0
« Respuesta #4 en: 08 de Diciembre de 2011, 07:34:53 »

Gracias a todos.

 Jeremylf, la cámara envía video de manera analógica a 1,2 Ghz. En el lado del PC tengo el Rx y una capturadora de Video para pasar a digital. El Tx es de 50mW por lo que en interiores sólo me sirve para tener el Robot en la misma habitación o en una contigua. Si la distancia es mayor comienzo a tener interferencias e incluso llego a perder la señal. Me he hecho con un Tx-Rx de Video de los que se usan en FPV (500 mW de Tx a 2.4Ghz)  pero necesitaría comprarme una cámara nueva para usarlo y no se si merece la pena...

Un saludo!




 

anything