SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
Facultad de Ingeniería
                   Escuela de Ingeniería Eléctrica y Electrónica
Universidad
  del Valle          Percepción y Sistemas Inteligentes - PSI




   NX-BOT – Plataforma para experimentación
          en Robótica Cooperativa




                   Alejandro Michael Pustowka Reyes
                     Jonathan Alejandro Hernandez
                          Eduardo F. Caicedo
                          Eval Bladimir Bacca

              contacto: alejandro.pustowka@correounivalle.edu.co
                           www.psiunivalle.com




                                 Enero 2012
Resumen

NX-BOT es una plataforma robótica construida para realizar prácticas e
investigaciones en el área de Robótica cooperativa. NX-BOT es un robot que cuenta
con tracción diferencial, conformada por dos servomotores y una rueda de apoyo, y
dispone además de sensores infrarrojos y de ultrasonido para la detección de
obstáculos, una pinza para recolección de objetos, un buzzer para generación de
melodías monofónicas, y un sistema Wifi para la comunicación entre robots, así como
para actividades de teleoperación y control remoto. El robot cuenta además con un
sistema operativo Linux y una versión del framework Player/Stage versiones 2.0.5 y
3.0.2, lo cual lo convierte en una plataforma versátil para la experimentación en
robótica móvil.
   NX-BOT es un desarrollo que hizo parte de la tesis de pregrado “Mantenimiento y
Cambio Automático de Formaciones en un Grupo de Robots Móviles Cooperativos
Homogéneos”, desarrollado por los ingenieros Alejandro M. Pustowka y Jonathan A.
Hernandez, en conjunto con los directores Eduardo F. Caicedo Ph.D. y Eval B. Bacca
M.Sc. Además de este trabajo han sido desarrollados otros proyectos de grado que
han utilizado la plataforma.

  Áreas de aplicación:       Robótica móvil, Control Inteligente, Inteligencia
computacional.




                                        2
Índice
1. Introducción.............................................................................................................5
2. Datos Técnicos..........................................................................................................6
3. Descripción de la plataforma..................................................................................7
4. Módulos Electrónicos de NX-BOT.........................................................................8
   4.1. Sistema de bajo nivel.........................................................................................8
      4.1.1. Sensores ...................................................................................................10
      4.1.2. Actuadores................................................................................................12
      4.1.3. Puertos de expansión................................................................................12
      4.1.4. Batería, carga y encendido.......................................................................13
   4.2. Sistema de alto nivel........................................................................................13
5. Estructura mecánica..............................................................................................15
   5.1. Posición de módulos electrónicos....................................................................15
   5.2. Apariencia final................................................................................................16
6. Software..................................................................................................................18
   6.1. NXOS...............................................................................................................18
   6.2. OpenWRT/Player.............................................................................................19
      6.2.1. Player/Stage..............................................................................................20
      6.2.2. Simuladores de Player/Stage....................................................................22
      6.2.3. Herramientas de Player/Stage..................................................................23
   6.3. NXAPI.............................................................................................................24
      6.3.1. Paquetes de la librería NXAPI.................................................................25
7. Modo de operación................................................................................................27
   7.1. Encendido y estado de batería..........................................................................27
   7.2. Configurando la red.........................................................................................27
      7.2.1. Configuración Wifi...................................................................................28
   7.3. Accediendo a OpenWRT por consola..............................................................29
   7.4. Probando Player/Stage.....................................................................................30
      7.4.1. PlayerViewer............................................................................................30
      7.4.2. Playerjoy...................................................................................................31
   7.5. Utilizando Javaclient para programar NXBOT...............................................31
   7.6. Utilizando NXAPI para programar NXBOT...................................................32
8. Enfoque pedagógico...............................................................................................34
   8.1. La robótica en la educación.............................................................................34
      8.1.1. Laboratorios remotos................................................................................34
   8.2. NXBOT como plataforma educativa...............................................................34
      8.2.1. Implementación de un laboratorio remoto con NXBOT..........................34
   8.3. NXBOT como plataforma de investigación.....................................................34

                                                              3
9. Referencias.............................................................................................................35
   9.1. Videos...............................................................................................................35




                                                              4
1. Introducción
El robot NXBOT se concibió como una plataforma orientada a la realización de
prácticas de robótica, en especial en el área de cooperación. En la etapa de diseño se
plantearon como requerimientos que la plataforma contara con sistemas sensoriales
sencillos, así como un sistema de locomoción simple, pero un canal de comunicación
robusto, estándar, confiable y de amplio rango, para facilitar la interacción del usuario
con la plataforma. NXBOT cuenta por lo tanto con un canal de comunicación Wi-fi,
lo cual permite su integración con la red del área de robótica, y facilita también la
integración de la plataforma en laboratorios remotos. Actualmente NXBOT cuenta
con sensores exteroceptivos como infrarrojos, ultrasonido, cámara web, así como
propioceptivos, como el estado de la batería y odometría como sistema de
localización. Los actuadores con los que cuenta están definidos por su sistema de
locomoción, el cual es diferencial (2 motores), y una pinza en la parte frontal para la
manipulación de objetos. El sistema puede ser además expandido usando alguna de
sus diferentes interfaces (puertos serie, USB 2.0, GPIO, etc).

NXBOT es compatible además con el entorno de desarrollo en robótica Player/Stage,
el cual es un servidor de interfaces robóticas e que comprende simuladores en 2D y
3D, el cual es ampliamente utilizado en el área de robótica móvil a nivel mundial,
además de ser de fuente abierta (open source). Se han desarrollado el driver y las
respectivas librerías de control para permitir realizar prácticas tanto en la plataforma
de simulación Stage como en el robot. Dadas estas características, NXBOT se
presenta como una herramienta versátil para actividades de investigación en robótica
móvil, específicamente en labores cooperativas.




                                           5
2. Datos Técnicos

Dimensiones (w x d x h)            11x11x15,5 cm
Hardware
             Sistema de alto nivel Router (WRTSL54GS)
                                   MIPSEL @ 266 MHz (32 bits)
            Sistema de bajo nivel Microcontrolador 8 bits AVR @ 16 MHz
                          Batería 6V@4Ah
                          Carcasa Acrílico 2 mm y 3 mm
Sensores
                      Infrarrojos Seis (6) sensores infrarrojos.
                                   Máxima distancia de detección: 60 cm.
                         Contacto Cuatro (4) sensores de contacto.
                      Ultrasonido Seis (6) sensores ultrasonido.
                   Estado interno Sensor de estado de la batería.
                            Video Soporte para dos (2) cámaras web por USB.
Actuadores
                     Locomoción Dos (2) motores en configuración diferencial
                                   con encoders.
                                   Ruedas de radio 6 cm.
                                   Velocidad máxima: 15 cm/s. (30 cm/s en
                                   futuros cambios)
                                   Resolución de encoders: 360 puls/rev.
                           Sonido Buzzer piezoeléctrico.
                            Pinza Pinza accionada por servomotor. Amplitud
                                   máxima 4 cm.
Expansión                          Puertos:
                                   •     USB (1)
                                   •     Ethernet (4)
                                   •     SPI (1)
                                   •     Serial (2)
                                   •     Memoria Externa (hasta 64KB)
                                   •     Interrupciones externas (8)
                                   •     Canales ADC (7).
Sistema Operativo                  Linux OpenWRT Backfire 10.03
Software
                          Control Player/Stage 2.0.5 – 3.0.2
                 Streaming Video Mjpg-streamer




                                     6
3. Descripción de la plataforma
NXBOT es una plataforma que cuenta con diversos sensores exteroceptivos como
infrarrojos, ultrasonido, cámara web. Los actuadores de la plataforma se componen
de los motores del sistema de locomoción, cuya tracción es diferencial (2 motores),
así como una pinza en la parte frontal para la manipulación de objetos. El sistema
cuenta además con diversos puertos de expansión (puertos serie, USB 2.0, Ethernet,
GPIO, etc), como se puede ver en las figuras a continuación.


                        Conectividad                          Enlace WiFi
                           USB
                         (Webcam)



                                                        S. Ultrasonido


                        Buzzer
                                                         Sensores IR




                        Pinza                          Motores con
                                                        Encoders




                        Sistemas sensoriales y de actuación de NXBOT



                                                                     Ethernet
       Puerto USB




     LED Encendido
   LED Estado Batería                                                         Puerto
                                                                            Expansion

          Puerto
          serial
                                                                     Programación


              Puerto
             de carga                                                Encendido

                          Conectores del NXBOT en la zona trasera



                                             7
4. Módulos Electrónicos de NX-BOT
NXBOT comprende dos sistemas de procesamiento hardware para cumplir con los
requerimientos planteados en su diseño. El primer sistema, denominado Sistema de
Bajo Nivel, se encarga de las labores de muestreo de sensores y ejecuta los lazos de
control de los actuadores. El segundo sistema, denominado Sistema de Alto Nivel,
está encargado de la comunicación inalámbrica vía Wifi con el usuario, la ejecución
del servidor de interfaces Player/Stage y demás programas que el usuario desee
ejecutar en el Sistema Operativo del robot (Servidores de Streaming, bases de datos,
programas de control, etc). La figura ilustra el diagrama de bloques del sistema.




                     Figura 1: Diagrama general de sistemas de NXBOT
Los dos sistemas se comunican a través de un enlace serial configurado a 115.200
baudios, 8 bits de datos, sin paridad, 1 bit de stop.

4.1.   Sistema de bajo nivel
El sistema de bajo nivel comprende una plataforma microcontrolada, implementado
con una arquitectura de 8 bits Atmel AVR, que se encarga del control de bajo nivel de
los actuadores y sensores del robot. Las características más relevantes de este sistema
se muestran a continuación:
Microcontrolador
                                   Atmega1281: Arquitectura AVR@16MHz
                                   8 KB RAM, 128 KB FLASH.
Comunicaciones
                                   Dos UART disponibles: 1 para comunicación con
                                   sistema de Alto Nivel, otra disponible para el
                                   usuario.
                                   Una interfaz SPI.
Conectores
                                   Seis (6) conectores para sensores infrarrojos.
                                   Ocho (8) conectores para sensores de contacto.
                                   Interfaz para motores, incluyen señales PWM, de


                                           8
dirección, y de lectura de encoders.
                                    Buzzer piezoeléctrico.
Otros
               Expansión            Siete (7) entradas analógicas disponibles.
                                    Interfaz de expansión de memoria, hasta 64KB.
                                    Tres (3) puertos de 8 bits de E/S.
              Indicadores           Indicador LED de encendido y de estado de
                                    batería.

El hardware del sistema se muestra en la siguiente figura




                 Figura 2: Descripción de hardware del sistema de bajo nivel



                                     Descripción
    1.   Conector de expansión                   2. LED de encendido
    3.   LED de estado de la batería             4. Pulsador de RESET
    5.   Alimentación                            6. Interfaz SPI
    7.   Conectores para sensores de contacto    8. Conectores para sensores IR
    9.   Conector para tarjeta motor             10. Conector para Sistema Alto
                                                     nivel


                                             9
El sistema armado se observa a continuación en la figura




                              Figura 3: Sistema de bajo nivel montado


4.1.1.     Sensores
Infrarrojos
NXBOT cuenta con un anillo de seis (6) sensores infrarrojos (IR) distribuidos en los
180° de la zona frontal del robot. Estos sensores se encuentran ubicados como se
muestra en la figura. Estos sensores se usan para detectar obstáculos en las
orientaciones donde se encuentran ubicados. Su rango de detección puede ser
ajustado usando el potenciómetro con el que cuenta cada módulo. Sin embargo este
tipo de sensores no permiten medir distancia a los obstáculos detectados. La figura
ilustra el sensor IR construido.




         Sensor Infrarrojo Emisor-Detector               Sensor Infrarrojo Emisor-Detector


Ultrasonido
NXBOT también cuenta con sensores ultrasonido que, a diferencia de los sensores
infrarojos, si permiten estimar distancia a los obstáculos, con resolución de 1 cm.
Estos sensores hacen parte de un módulo externo al robot, que debe ser conectado a
través del puerto de expansión serial. La figura ilustra el sensor ultrasonido utilizado
(SRF02) y el módulo de expansión que se ubica sobre el robot.


                                                10
Sensor Ultrasonido SRF02                 Arreglo de seis sensores SRF02


                                                                               Puerto de
                                                                               conexión




      NXBOT con módulo de ultrasonido         Puerto serial donde se conecta el módulo

Cámara web
NXBOT soporta diferentes cámaras web conectadas a través de su puerto USB 2.0.
Las cámaras que mejores resultados han presentado son las que incluyen un
codificador JPEG, de tal manera que la carga de transmisión de la imagen por USB se
ve disminuida, y se pueden alcanzar tasas de hasta 30 cuadros por segundo, o incluso
la conexión de dos cámaras simultáneas, conformando un sistema de estereovisión,
alcanzando tasas de hasta 15 cuadros por segundo. Las cámaras Logitech son las que
generalmente incluyen esta característica. En la siguiente figura se puede observar
dos modelos evaluados y validados con NXBOT.




           Cámara Logitech C270                     Cámara Logitech Pro 9000



                                        11
Sensor de estado de bateria
NXBOT cuenta con un sensor para medir el estado de la batería, de tal manera que
alerte al usuario cuando ésta se encuentra descargada. Un LED dedicado para
indicación del estado de la batería varía su color para mostrar la carga, variando entre
colores Verde – Naranja – Rojo. Asimismo, el buzzer emite una corta melodía cuando
es necesario cargar el robot.

4.1.2.   Actuadores
Motores con encoders
NXBOT cuenta con dos motores distribuidos en una configuración diferencial. Los
motores son servos modificados, con un torque suficiente para el peso del robot, y se
encuentran equipados con encoders, que generan 360 pulsos por revolución. Esta
configuración facilita aplicar lazos de control de velocidad y de posición.




            Motor Futaba S3004                    Llanta con recubrimiento de caucho


Encoders
NXBOT cuenta además con un Buzzer para generación de diferentes melodias. Es
usado para alertar sobre eventos de importancia, como la conexión/desconexión de un
cliente al robot, así como la alerta por batería baja.


4.1.3.   Puertos de expansión
NXBOT cuenta con un puerto de expansión de memoria externa, que permite agregar
múltiples dispositivos al sistema. Asimismo, pone a disposición líneas ADC para
lectura de señales analógicas y un puerto USB, para conexión de dispositivos que
usen esta interfaz, como cámaras web, memorias de almacenamiento externo, tarjetas
de sonido, etc. El puerto de expansión cuenta con entradas ADC (8), interfaz con
memoria externa (<64KB) o líneas de propósito general, GPIO (16).




                                          12
4.1.4.    Batería, carga y encendido
NXBOT cuenta con una batería seca, de 6V@4Ah. La autonomía aproximada de la
plataforma es de 3 a 4 horas, aunque puede ser más dependiendo de la cantidad de
dispositivos activos en el robot. El sistema es recargable, y su puerto de carga se
encuentra localizado en la zona trasera, en donde también se encuentra el botón de
encendido, como se ilustró en la figura. La carga de la batería toma un tiempo de
aproximadamente ocho horas, se recomienda utilizar un cargador de baterías con el
conector mostrado en la siguiente figura.




             Batería de 6V@4Ah                       Puerto del Cargador




4.2.     Sistema de alto nivel
El sistema de alto nivel de NXBOT comprende un sistema embebido con mayor
capacidad de procesamiento, y es utilizado como un computador embebido que
ejecuta un sistema operativo Linux para facilitar la gestión y configuración del
sistema, además de encargarse de la comunicación inalámbrica y acceso a redes a
través de Wifi. El sistema ambién ejecuta la aplicación servidor que controla el
sistema de bajo nivel y permite la conexión/desconexión de usuarios. Las
características más relevantes del sistema se describen a continuación:
Microprocesador
                                 Broadcom: Arquitectura MIPSEL@266MHz
                                 32 MB RAM, 8 MB FLASH.
Comunicaciones
                                 Interfaz de comunicación Wifi serie g.
                                 Dos UART disponibles: 1 para comunicación con
                                 sistema de Bajo Nivel, otra disponible para el
                                 usuario.


                                        13
(1) puerto USB Device 2.0
                                 (4) puertos Ethernet

A continuación se muestra el router utilizado, que corresponde a la referencia
WRTSL54GS de la marca Linksys.




       Router WRTSL54GS de Linksys             Hardware del router WRTSL54GS




                                       14
5. Estructura mecánica
NXBOT cuenta con una estructura mecánica de material acrílico de 2 y 3 mm. El
diseño consideró una base para ubicar la batería y los motores, así como tres pisos
para la ubicación de los módulos electrónicos, sensores y demás actuadores. Las
siguientes figuras ilustran el despiece de esta estructura.




5.1.   Posición de módulos electrónicos
En las siguientes imágenes se ilustra la ubicación de los diferentes módulos hardware
que componen NXBOT. Con una vista superior se indican las posiciones de los
componentes en la base y en cada uno de los pisos de la plataforma. Como se puede
observar en las siguientes imágenes, la base comprende la batería, los dos motores y
la rueda loca de apoyo para el robot. El primer piso comprende la tarjeta de
comunicación y programación del robot, así como la tarjeta de control de motores. El
segundo piso comprende la ubicación del módulo electrónico de bajo nivel, junto con
los sensores infrarrojos, mientras que el tercer piso soporta únicamente el módulo
electrónico de alto nivel.




   Posición de motores, batería y rueda loca        Piso 1: tarjeta de comunicación y motores




                                               15
Piso 2: Sistema de bajo nivel y sensores IR        Piso 3: sistema de alto nivel


Las siguientes imágenes muestran la ubicación de los componentes internos de
NXBOT, sin considerar el exterior. Se observa que todos los puertos de expansión
quedan localizados en la zona trasera del robot.




           Estructura interna lateral                  Estructura interna frontal




5.2.   Apariencia final
La carcasa del robot NXBOT fue realizada con acrílico negro de 2 mm de espesor. La
carcasa soporta los pisos que a su vez mantienen los módulos electrónicos. La parte
superior del robot se ha dejado plana para facilitar la ubicación de otros módulos de
expansión.




                                                 16
Carcasa exterior, vista lateral        Carcasa exterior, vista frontal




Carcasa exterior, vista lateral        Carcasa exterior, vista trasera




                                  17
6. Software
El software de NXBOT se encuentra dividido en tres partes: NXOS (Firmware del
sistema microcontrolado), OpenWRT/Player (Sistema Operativo y Aplicación que se
ejecuta en el sistema embebido) y NXAPI (API de control de alto nivel escrita en
Java y que puede ser ejecutada en un computador remoto). El código es mantenido a
través de un servidor SVN público, que puede ser visitado en el siguiente enlace:
http://code.google.com/p/nxbot


La figura a continuación ilustra la integración de estos tres componentes software.




                     Figura 4: Componentes software del robot NXBOT
A continuación se describe cada uno de los componentes software mencionados.

6.1.   NXOS
NXOS es el sistema operativo para el sistema de bajo nivel de NXBOT. Se encarga
de la gestión de todos los dispositivos conectados al robot, como sensores y
actuadores. NXOS realiza la actualización de lecturas de los sensores de manera
determinística, ya que implementa un RTOS (Sistema Operativo de Tiempo Real),
que garantiza el cumplimiento estricto de las tasas de muestreo configuradas. NXOS
también implementa los lazos de control de los actuadores del sistema. Son
básicamente tres tareas que gestiona NXOS: comunicación con el sistema de alto

                                          18
nivel, actualización de sensores (infrarrojos, bumpers y batería) y control de
actuadores (Motores, buzzer, indicadores LED). NXOS usa FreeRTOS
(http://www.freertos.org) en su implementación. La figura ilustra la arquitectura
general de NXOS.




                       Figura 5: Diagrama de Bloques de NXOS




6.2.   OpenWRT/Player
El sistema de alto nivel incluye la distribución Linux OpenWRT, la cual es una
distribución orientada a sistemas embebidos de bajos recursos computacionales.
OpenWRT se encarga de la gestión de los sistemas de comunicación Ethernet y Wifi,
así como los puertos seriales del hardware del router WRTSL54GS. Actualmente, las
plataformas cuentan con la versión más reciente a la fecha de OpenWRT, denominada
BackFire 10.03. Al contar con Linux en la plataforma, es posible instalar un
sinnúmero de aplicaciones ya portadas a esta arquitectura, como servidores de
Streaming de Video (mjpg-streamer), drivers para diferentes dispositivos USB como
memorias USB, webcams, tarjetas de sonido, etc. entre otras aplicaciones.



                                        19
6.2.1.     Player/Stage
El entorno Player/Stage ha sido también portado a la arquitectura del Sistema de Alto
Nivel. Player es un servidor de interfaces robóticas que permite el control de todo el
hardware con el que cuenta NXBOT. La ventaja de usar el entorno Player/Stage es
que se puede realizar una etapa previa de simulación para cada uno de los
experimentos. El software escrito para estos experimentos funciona sin problemas
tanto para el simulador como para la plataforma real, lo que agiliza la validación de
resultados.
La comunicación con Player se realiza mediante sockets TCP/IP. El Hilo del Servidor
se encarga de recibir comandos desde los programas cliente, y los almacena en
Buffers de Comandos para ser enviados a los Hilos de Control de cada dispositivo.
Estos a su vez, leen estos Buffers de Comandos y los aplican al dispositivo asignado.
Si el dispositivo es de lectura, el Hilo de Control del Dispositivo se encarga de tomar
los datos del dispositivo y los almacena en un Buffer de Datos. Este buffer a su vez es
leído por el hilo del servidor y son enviados a los programas cliente que lo requieran.
La figura ilustra este proceso.




                        Figura 6: Estructura básica del servidor Player
Para interactuar con el servidor Player, se debe tener en cuenta tres conceptos básicos:
   •     Interfaz: Entidad abstracta que especifica una clase de periféricos o entidades
         abstractas, como algoritmos. Especifica qué datos provee el periférico, los
         cuales se definen en los atributos de la interfaz, y asimismo define los
         métodos disponibles que tiene.


                                              20
•   Driver: Pieza de código que se encarga de realizar la comunicación con el
       periférico (sensor o actuador), y encapsula su información en los atributos de
       una o más interfaces.
   •   Dispositivo: Se define como un driver unido a una interfaz, y es el elemento
       básico de control entre el Player y el Programa Cliente.
Por lo tanto, la versatilidad de Player radica en la facilidad de abstraer diferentes
periféricos a través de interfaces. Esto permite que un programa software escrito para
un robot específico, pueda ser utilizado en otro sin mayor cambio, ya que el control se
realiza a través de interfaces. En la figura a continuación, se observa más claramente
los términos de interfaz y driver. Se observa que para cada robot, NXBOT y
Pioneer3dx, se ha implementado un driver, el cual provee tres interfaces: Camera,
Sonar y Position2d. Para los programas cliente, no importa que robot estén
controlando, éstos ven únicamente las interfaces, lo que permite una abstracción de
hardware y por lo tanto facilita la portabilidad de código.




             Figura 7: Ejemplo de interfaces y drivers de robots NXBOT y Pioneer




                                             21
El servidor Player compilado para NXBOT es la versión más reciente a la fecha
(Player 3.0.2) e incluye las siguientes Interfaces:
   •     Position2d: Interfaz Para el control directo de motores, tanto de posición
         (odometría) como de velocidad.
   •     IR: Interfaz para lectura de los sensores infrarrojos. Depreciada, será
         próximamente actualizada a Ranger.
   •     Bumper: Interfaz para lectura de los sensores de contacto.
   •     Sonar: Interfaz para lectura de los sensores ultrasonido. Depreciada, será
         próximamente actualizada a Ranger.
   •     Power: Interfaz para lectura del estado de la batería.
   •     DIO: Interfaz para control de las líneas digitales disponibles en el puerto de
         expansión de NXBOT.
   •     AIO: Interfaz para lectura de las líneas analógicas disponibles en el puerto de
         expansión de NXBOT.
   •     Gripper: Interfaz para controlar la pinza del robot NXBOT.
   •     Camera: Interfaz disponible para acceder a las imágenes de la cámara
         onboard del robot.

6.2.2.     Simuladores de Player/Stage
El proyecto Player/Stage cuenta con dos simuladores en 2D y 3D. El simulador Stage
provee simulación en 2.5D. Modela únicamente la cinemática de las plataformas
simuladas, más no su dinámica. Se han escrito los respectivos archivos que permiten
simular la plataforma NXBOT en Stage, como lo muestra la figura




                             Figura 8: NXBOT simulado en Stage



                                           22
Gazebo es el simulador 3D del proyecto. Éste aún no ha sido trabajado, ni se han
escrito los modelos para simular NXBOT en él.

6.2.3.   Herramientas de Player/Stage
Player/Stage cuenta con varias herramientas para evaluar el entorno de desarrollo e
interactuar tanto con los robots reales como los simulados.
PlayerViewer
PlayerViewer es un simple cliente que permite observar los datos devueltos por las
interfaces, de una manera gráfica fácilmente entendible. Asimismo, provee una
interfaz sencilla para el control de algunas interfaces de envío de comandos.




                           Figura 9: Interfaz de PlayerViewer


Playerjoy
Playerjoy es una sencilla interfaz de línea de comandos, que permite controlar
interfaces de tipo Position2D, usando ya sea un Joystick previamente reconocido por
el sistema operativo, o usando el teclado para enviar comandos de velocidad al robot.


Playercam
Playercam es una interfaz gráfica que permite la conexión a interfaces Camera y
Blobfinder. Permite observar las imágenes de cámaras y ver que regiones de color ha
detectado la interfaz Blobfinder. La figura ilustra la interfaz de Playercam.




                                          23
Figura 10: Interfaz de Playercam


6.3.   NXAPI
Al controlar NXBOT usando Player se tiene a disposición los lenguajes de
programación soportados por éste. Actualmente, Player soporta los clientes de
lenguajes C/C++ y Python, sin embargo proyectos independientes han escrito clientes
para otros lenguajes, como Java y Matlab. Específicamente para este proyecto, se
decidió dar soporte a Java, debido a la sencillez del lenguaje y por ser
multiplataforma. De esta manera, se pueden ejecutar controladores tanto en Windows
como en Linux.
NXAPI se definió como una interfaz de programación orientada a implementar el
paradigma de comportamientos en robótica [enlace a Arkin, bibliografía]. Su base es
Javaclient, el cliente de Java para Player. NXAPI intenta ser una herramienta que
facilita la programación de pilas de comportamientos y la selección de diferentes
árbitros para estas pilas, siendo los más comunes los árbitros cooperativos y los
competitivos. La figura a continuación ilustra un ejemplo de pila de comportamientos
para la tarea de evasión de obstáculos y su implementación utilizando NXAPI.




               Figura 11: Representación gráfica de la pila de comportamientos




                                             24
//Interfaces Javaclient
Position2DInterface positionNXBot;
SonarInterface ir;

//Conexion al servidor Player de NXBOT
Robot nxbot = new Robot("NXBOT","192.168.1.1",6665, 0);

//Acceder a interfaces de Player
positionNXBot              =             nxbot.requestInterfacePosition2D(0, 
PlayerConstants.PLAYER_OPEN_MODE);
ir = nxbot.requestInterfaceSonar(0, PlayerConstants.PLAYER_OPEN_MODE);

//ejecutar el hilo del cliente Player
nxbot.runThreaded(10,0);

//Punto de meta
Vector2D point = new Vector2D(5,5,Vector2D.MODE_XY);

//Creacion de los comportamientos
NxMSGoToPoint   irAMeta   =   new   NxMSGoToPoint("goto2",positionNXBot,point,   4, 
0.2f, NxBehavior.MODE_EXPONENTIAL);
NxPSDetectObstaclesIR                     obst                =                new 
NxPSDetectObstaclesIR("obst",positionMarlin,ir);
NxMSAvoidObstacles                    evadirObst                =              new 
NxMSAvoidObstacles("avoid",obst,positionMarlin,NxBehavior.MODE_EXPONENTIAL);

//Creacion del arbitro y asignacion de comportamientos
CooperativeArbitrator arbitrator = new CooperativeArbitrator("a1", false);
arbitrator1.add(irAMeta);
arbitrator1.add(evadirObst);

//Ejecucion del programa
while(true)
        {
            Vector2D total = arbitrator.value();
            posH.goTo(total, positionMarlin);
            try
            {
                   Thread.sleep(50);
            }
            catch(Exception e){}
        }




6.3.1.   Paquetes de la librería NXAPI
Paquete Util
Incluye utilidades para facilitar el manejo de información, como vectores, Helpers
para diferentes interfaces de Player, GUIs para representación gráfica de algunos
elementos, etc.
Paquete Test
Incluye los programas de prueba para validar el funcionamiento de NXBOT y son

                                        25
programas de ejemplo para familiarizarse con la interfaz.
Paquete Robot
Este paquete incluye las clases necesarias para realizar la conexión al servidor Player,
gestión de sensores y de actuadores.
Paquete Behaviors
Este paquete incluye los comportamientos hasta la fecha implementados. Incluye
comportamientos sencillos, como GoToPoint, AvoidObstacles, hasta otros más
complejos, como Follow, MaintainFormation, etc. Asimismo, este paquete incluye
todas las clases necesarias para gestionar la pila de comportamientos, y diferentes
tipos de árbitro (colaborativo y competitivo).
Un ejemplo de la estructura de clases de NXAPI se puede ver en la figura a
continuación.




                     Figura 12: Diagrama de Clases reducido de NXAPI




                                           26
7. Modo de operación
En esta sección se describen los pasos a seguir para empezar a trabajar con NXBOT
en prácticas de robótica utilizando el entorno de desarrollo Player/Stage.

7.1.   Encendido y estado de batería
Al encender NXBOT debe prenderse el LED de encendido del robot (LED rojo), así
como el indicador de batería, el cual ilumina tonalidades entre verde y rojo
dependiendo de la carga de la pila. En caso de que el robot emita dos bips cada cierto
tiempo, indica que la batería se encuentra baja y es prudente colocar a cargar la
plataforma. Si el robot enciende los dos LEDs, el indicador de batería es verde y no
emite los bips típicos de descarga, puede proceder a utilizar NXBOT para las
prácticas en robótica.


         NO se recomienda configurar la red de NXBOT si éste tiene la batería baja,
         ya que podría llevar a efectos no deseados.



7.2.   Configurando la red
Para configurar la red de NXBOT, se debe conectar un cable de red a uno de los
puertos de la zona trasera del robot. No utilice el primer puerto, debe ser alguno de
los siguientes cuatro disponibles, como lo ilustra la siguiente imagen.




                 Figura 13: Puertos Ethernet disponibles para configuración
Luego de haber conectado el cable a NXBOT y a su equipo, configure la interfaz de
red en su computador para permitir asignación dinámica de dirección IP por DHCP.
La dirección IP por defecto de NXBOT es la 192.168.0.1. El robot le debe asignar
una dirección en el rango de 192.168.0.2 a 192.168.0.254.
En una consola del sistema operativo, use los comandos ipconfig/all (en Windows) o
ifconfig (en Linux) para verificar la dirección IP asignada a su máquina por NXBOT.
Si la dirección se encuentra en el rango anteriormente definido, se encuentra
correctamente conectado a NXBOT.



                                            27
Aunque es posible cambiar la dirección de red de la interfaz LAN de
         NXBOT (Puertos Ethernet), se recomienda NO hacerlo, con el fin de
         garantizar uniformidad en el acceso al robot.


Ahora puede ingresar a la interfaz web del robot, que le permitirá configurar todos los
parámetros de red que desee (Wifi, LAN, WAN). Utilice su navegador para ello,
simplemente en la barra de dirección coloque la dirección IP de NXBOT
(192.168.0.1). Si todo sale correctamente, debe observar una portada similar a la
siguiente figura:




                         Figura 14: Interfaz de acceso a OpenWRT
Para acceder a la plataforma WEB, utilice el siguiente login:
                        Usuario                  root

                        Contraseña              nxbot


7.2.1.   Configuración Wifi
Las opciones de configuración de Wifi se pueden encontrar en el menú Network,
submenú Wifi. La figura muestra la pantalla de configuración.




                                           28
A continuación se describen los campos de configuración.


       Parámetro                                 Descripción
Enable                    Habilita o deshabilita la interfaz Wifi. Recomendamos
                          mantenerla activa.
Channel                   Canal de comunicación Wifi. Definido por el usuario.
Network name (ESSID)      Nombre de la red. Si NXBOT está generando la red Wifi,
                          asigne el nombre que crea conveniente. Si NXBOT se va a
                          conectar a una red Wifi ya existente, ingrese el nombre de
                          esa red.
Mode                      Se recomienda utilizar únicamente dos modos:
                          Provide (Acces Point): NXBOT genera la red Wifi según
                          el nombre asignado.
                          Join (Client): NXBOT se conecta a una red previamente
                          existente.
Encryption                Tipo de encripción que lleva el enlace. Actualmente
                          funciona únicamente WEP.



7.3.   Accediendo a OpenWRT por consola
Para acceder al sistema operativo de NXBOT (OpenWRT) se utiliza el protocolo SSH
(Secure Shell). Si utiliza Windows puede utilizar el programa PuTTY, que incluye ese
protocolo. En caso de usar Linux, utilice el comando ssh. Se utiliza la siguiente
dirección para acceder a OpenWRT:
       # ssh root@192.168.0.1

La contraseña es la misma que la de acceso a la interfaz web. Si todo ha salido
correctamente en el inicio de sesión, observará en la consola información similar a la
siguiente figura:




                                         29
Figura 15: Acceso a OpenWRT por consola
Esto indica que ha ingresado correctamente. Esta es una consola que recibe comandos
típicos de Linux. Puede utilizar las herramientas del sistema para instalar nuevos
programas, con el comando opkg, siempre y cuando tenga conexión a internet.

7.4.     Probando Player/Stage
Se pueden utilizar las herramientas de Player/Stage para controlar al robot, una vez se
encuentre corectamente conectado a éste.

7.4.1.    PlayerViewer
Puede utilizar PlayerViewer para controlar el movimiento de la plataforma y observar
la lectura de sensores infrarrojos, ultrasonido y de contacto, así como el estado de la
batería, el estado de las líneas analógicas y digitales, y controlar el estado de la pinza
(abierto o cerrado).
Para utilizar PlayerViewer puede utilizar el siguiente comando:
         # playerv ­h 192.168.0.1

Cambie la dirección IP en caso de que se encuentre conectado a una red Wifi externa.
El proceso para conectarse a cada una de las interfaces del robot se realiza a través
del menú Devices. Proceda a suscribirse a la interfaz (submenú Subscribe). Si el
dispositivo es un sensor, comenzará a ver los datos del sensor en la interfaz de
Playerv. Si es una interfaz de posición y desea enviar comandos de velocidad o
posición, utilice el submenú Command del mismo menú, y posteriormente habilite la
interfaz (submenú Enable).
A continuación se muestra una imagen de PlayerViewer usando el menú Devices:




                                           30
Figura 16: Menú Devices de PlayerViewer


7.4.2.    Playerjoy
Utilice Playerjoy para controlar NXBOT con el teclado o con un Joystick. Utilice el
siguiente comando:
         # playerjoy 192.168.0.1:6665

Cambie la dirección IP en caso de que se encuentre conectado a una red Wifi externa.
Utilice las siguientes teclas para controlar al robot:


                                     Tecla         Función
                                 i            Adelante
                                 j            Izquierda
                                 l            Derecha
                                 ,            Atrás
                                 q            Incrementar
                                              velocidad
                                 z            Decrementar
                                              velocidad



7.5.     Utilizando Javaclient para programar NXBOT
Para escribir software para controlar la plataforma se ha recomendado utilizar
Javaclient, que permite ser ejecutado en diferentes sistemas operativos.
Recomendamos remitirse a la página de Javaclient para descargar el código fuente y
compilarlo en cualquier IDE de Java (Eclipse, Netbeans):
                           http://java-player.sourceforge.net/

                                             31
En la página existen múltiples ejemplos para familiarizarse con Javaclient. A
continuación se muestra un pequeño ejemplo que ilustra la forma de programación
con esta librería.




                Figura 17: Diagrama de flujo general de una aplicación escrita
                                      con Javaclient




7.6.   Utilizando NXAPI para programar NXBOT
NXAPI facilita la programación de controladores basados en el paradigma de
comportamientos. La librería puede ser descargada de la página del proyecto de
NXBOT:
                            http://code.google.com/p/nxbot
en la librería se incluyen diferentes ejemplos que permiten familiarizarse con ella. A
continuación se muestra un pequeño ejemplo que ilustra la forma de programación
con esta librería.




                                             32
Figura 18: Diagrama de flujo general de una aplicación escrita
                        con NXAPI




                             33
8. Enfoque pedagógico
La robótica móvil es una rama que despierta mucho interés en la actualidad, no
solamente en el ámbito de investigación, sino también en el proceso pedagógico. Es
una rama comúnmente atractiva que facilita el desarrollo de experiencias a los
estudiantes, pues aunque muchos la ven como un concepto de ciencia ficción, ya
cuenta con aplicaciones reales, y en unos casos permite modelar a pequeña escala
procesos de gran envergadura. Aplicar en la educación los conceptos de robótica,
fortalece los procesos de creatividad y pensamiento divergente, indispensables y
necesarios en la formación académica y facilita la creación de espacios más ricos en
recursos y sinergias que profundizan la apropiación de conocimiento.

8.1.   La robótica en la educación
Existe actualmente la tendencia de involucrar las TICs en el proceso de enseñanza-
aprendizaje. Incluir la robótica en prácticas pedagógicas hace parte de esta tendencia,
ya que utiliza las nuevas tecnologías no sólo como objeto de aprendizaje, sino
también como medio y apoyo al proceso académico. Esto ha permitido que se
establezca una nueva rama en la robótica, conocida como “Robótica Educativa”, en
donde se plantean metodologías para aplicar el uso de robóts en el proceso
pedagógico. La robótica educativa ha sido trabajada desde estas dos perspectivas:
como objeto de aprendizaje, puede ser utilizada para aprender o reforzar los
conceptos en los siguientes temas:
   •   Física y Matemáticas
   •   Programación
   •   Control de procesos
   •   Instrumentación
   •   Inteligencia computacional

Estos son sólo unos pocos ejemplos en donde la robótica puede ser utilizada como
objeto de aprendizaje. Sin embargo, especial énfasis existe actualmente para
involucrar la robótica en otras áreas menos obvias, que no tienen estrecha relación
con la tecnología, como lo son la biología, química, historia, e incluso artes. La figura
ilustra el robot NXT de Lego Mindstorms, una de las plataformas que han sido
pensadas para ser utilizadas en actividades de robótica educativa.




                                           34
Figura 19: Robot NXT de Lego
                          Mindstorms, utilizado como plataforma
                                        educativa

8.2.     NXBOT como plataforma educativa
NXBOT puede ser aplicado en estos espacios pedagógicos, al ser una herramienta
con grandes capacidades para la experimentación en robótica móvil. Ya que se
encuentra soportado por un entorno de desarrollo simple de manejar (Player/Stage),
que tiene la posibilidad de utilizar diferentes lenguajes de programación y cuenta con
facilidades en la conectividad a través de TCP/IP, facilita la integración de la
plataforma en prácticas en clase. Otra de las ventajas de trabajar con NXBOT es que
cuenta con soporte en el simulador Stage. Al contar con pocas plataformas, se hace
necesario validar inicialmente los algoritmos en simulación, y permite que el
estudiante esté involucrado activamente en el proceso pedagógico aún sin contar
directamente con el hardware físico.

8.2.1.    Implementación de un laboratorio remoto con NXBOT
Dadas las facilidades de conectividad que ofrece NXBOT, es posible la
implementación de laboratorios remotos con la plataforma. Un laboratorio remoto
permite el acceso de estudiantes usando la red de internet como base. Ya que NXBOT
cuenta con conectividad Wifi, que usa TCP/IP como protocolo, la integración de la
plataforma en la arquitectura del sistema es realmente sencilla. NXBOT ya ha sido
integrado a la plataforma RENATA [referencia aquí], que provee un laboratorio
remoto de robótica entre las universidades adscritas a esta red. La figura a
continuación muestra la integración de NXBOT a una arquitectura de red que puede
servir de base para la implementación de laboratorios remotos.



                                           35
Figura 20: Arquitectura para conexión de NXBOT a la
                                            red


8.3.   NXBOT como plataforma de investigación
NXBOT puede ser también utilizado como plataforma de investigación en el área de
robótica móvil. El conjunto de sensores y actuadores que comprende el robot lo hace
idóneo para trabajar en las ramas típicas de robótica móvil, como lo son la
Localización y Navegación, así como los sistemas multirobot, gracias a la robusta
interfaz de comunicación que provee. Diferentes trabajos han sido realizados con la
plataforma, los cuales se listan a continuación:


   •   Mantenimiento y cambio automático de formaciones
   •   Sistema de videovigilancia soportado por robots móviles
   •   Reconstrucción de una imagen panorámica de 360° usando robots móviles
   •   Navegación reactiva a través de pasillos usando visión artificial


Estos son solo algunos de los trabajos en donde se ha involucrado al robot NXBOT
como plataforma de investigación. Las figuras a continuación ilustran algunas de las
investigaciones realizadas.




                                           36
Figura 21: Grupo de robots NXBOT
                          manteniendo una formación cuadrado




                 (a)                                               (b)
Figura 22: NXBOT navegando mediante visión artificial: (a) detección del punto de fuga, (b)
               Navegación a través de pasillos usando el punto de fuga




                                            37
9. Referencias

   1. Pustowka, A.M., Hernandez J.A., "Mantenimiento y cambio automático de
      formaciones de un grupo de robóts móviles cooperativos homogéneos",
      Universidad del Valle, 2008.
   2. Hernandez, J.A.; Pustowka, A.; Caicedo, E.F.; Bacca, E.B., "Formation
      control of cooperative robots with limited sensing using a virtual robot as
      reference", Latin-American Robotics Symposium LARS, Valparaiso, Chile,
      2009.     (versión    online:     http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?
      arnumber=5418317)
   3. Publicación de navegación por punto de fuga.
   4. "Proyecto Player/Stage" [online] http://playerstage.sourceforge.net/
   5. Behavior based robotics... Arkin.


9.1.   Videos
   1. "NX-Bot: Formación Flecha" [online] http://www.youtube.com/watch?
      v=xNWVuFW0KA4&feature=related
   2. "NX-Bot: Formación Columna" [online] http://www.youtube.com/watch?
      v=CK5_BR9Ydm0&feature=related
   3. "NX-Bot: Formación Cuadrado" [online] http://www.youtube.com/watch?
      v=snkjwmBnkmI&feature=related
   4. "NX-Bot: Formación Fila" [online] http://www.youtube.com/watch?
      v=pP97Qtj2szY&feature=related
   5. "NX-Bot,    cambio     de    formación  cuadrado    (ancho)"   [online]
      http://www.youtube.com/watch?v=51I7vrg0M1
   6. "NX-Bot: Cambio automático de formación en un pasillo de paredes
      paralelas"            [online]           http://www.youtube.com/watch?
      v=2XOy8fmbDiQ&feature=related
   7. "NX-BOT: Cambio automático de formación en un pasillo de paredes
      inclinadas"            [online]          http://www.youtube.com/watch?
      v=AlhxQNx48JE&feature=related
   8. NXBOT navegación autónoma por pasillos usando punto de fuga




                                         38

Más contenido relacionado

La actualidad más candente

La actualidad más candente (15)

Tarjeta arduino (1)
Tarjeta arduino (1)Tarjeta arduino (1)
Tarjeta arduino (1)
 
Curso de introducción a arduino
Curso de introducción a arduinoCurso de introducción a arduino
Curso de introducción a arduino
 
ARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libre
 
Robot autónomo para recorrer un laberinto
Robot autónomo para recorrer un laberintoRobot autónomo para recorrer un laberinto
Robot autónomo para recorrer un laberinto
 
Tarjetas arduino
Tarjetas arduinoTarjetas arduino
Tarjetas arduino
 
Estrategia de apoyo arduino uno
Estrategia de apoyo arduino unoEstrategia de apoyo arduino uno
Estrategia de apoyo arduino uno
 
Ejercicios+arduino+processing
Ejercicios+arduino+processingEjercicios+arduino+processing
Ejercicios+arduino+processing
 
Ejercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaEjercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo Sabika
 
Catalogo electronica arduino y robotica electan 2012 01
Catalogo electronica arduino y robotica electan 2012 01Catalogo electronica arduino y robotica electan 2012 01
Catalogo electronica arduino y robotica electan 2012 01
 
Arduino
ArduinoArduino
Arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Arduino
ArduinoArduino
Arduino
 
Resumen arduino
Resumen arduinoResumen arduino
Resumen arduino
 
Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
 
Arduino en la práctica
Arduino en la prácticaArduino en la práctica
Arduino en la práctica
 

Similar a Manual del robot NXBOT

Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesguofee
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesguofee
 
Lego mindstorms NXT trabajo terminado
Lego mindstorms NXT trabajo terminadoLego mindstorms NXT trabajo terminado
Lego mindstorms NXT trabajo terminadojuancho182000
 
Proyecto robot tracker/seguidor de linea negra
Proyecto robot tracker/seguidor de linea negraProyecto robot tracker/seguidor de linea negra
Proyecto robot tracker/seguidor de linea negraLino Andres Copa
 
Seguidor de linea
Seguidor de lineaSeguidor de linea
Seguidor de lineataicon
 
F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)edwin andres
 
Principios basicos de seguridad electronica cctv
Principios basicos de seguridad electronica  cctvPrincipios basicos de seguridad electronica  cctv
Principios basicos de seguridad electronica cctvWilber Guzman
 
Tarjeta arduino tecnologia
Tarjeta arduino   tecnologia Tarjeta arduino   tecnologia
Tarjeta arduino tecnologia CamilaRamirez96
 
Analisis de factibilidad
Analisis de factibilidadAnalisis de factibilidad
Analisis de factibilidadsaydo2007
 

Similar a Manual del robot NXBOT (20)

Laboratorio de telemetría
Laboratorio de telemetríaLaboratorio de telemetría
Laboratorio de telemetría
 
Robot Laberinto Shocobot
Robot Laberinto ShocobotRobot Laberinto Shocobot
Robot Laberinto Shocobot
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionales
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionales
 
Report cart line follower
Report cart line followerReport cart line follower
Report cart line follower
 
Lego mindstorms NXT trabajo terminado
Lego mindstorms NXT trabajo terminadoLego mindstorms NXT trabajo terminado
Lego mindstorms NXT trabajo terminado
 
Unidad 5: Control y robótica
Unidad 5: Control y robóticaUnidad 5: Control y robótica
Unidad 5: Control y robótica
 
Proyecto robot tracker/seguidor de linea negra
Proyecto robot tracker/seguidor de linea negraProyecto robot tracker/seguidor de linea negra
Proyecto robot tracker/seguidor de linea negra
 
Lego mindstorms NXT
Lego mindstorms NXTLego mindstorms NXT
Lego mindstorms NXT
 
Seguidor de linea
Seguidor de lineaSeguidor de linea
Seguidor de linea
 
Seguidor de linea
Seguidor de lineaSeguidor de linea
Seguidor de linea
 
Robot Laberinto Raven
Robot Laberinto RavenRobot Laberinto Raven
Robot Laberinto Raven
 
F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)F3 edwin rodriguez_203055_3 (1)
F3 edwin rodriguez_203055_3 (1)
 
Smk
SmkSmk
Smk
 
Principios basicos de seguridad electronica cctv
Principios basicos de seguridad electronica  cctvPrincipios basicos de seguridad electronica  cctv
Principios basicos de seguridad electronica cctv
 
Trabajo #1
Trabajo #1Trabajo #1
Trabajo #1
 
Tarjeta arduino tecnologia
Tarjeta arduino   tecnologia Tarjeta arduino   tecnologia
Tarjeta arduino tecnologia
 
Tarjeta arduino tecnologia
Tarjeta arduino   tecnologia Tarjeta arduino   tecnologia
Tarjeta arduino tecnologia
 
Analisis de factibilidad
Analisis de factibilidadAnalisis de factibilidad
Analisis de factibilidad
 
Factibilidad
FactibilidadFactibilidad
Factibilidad
 

Más de alepusto

ParkNET - Testing Value Proposition
ParkNET - Testing Value PropositionParkNET - Testing Value Proposition
ParkNET - Testing Value Propositionalepusto
 
ParkNET - Opportunity Analysis Project
ParkNET - Opportunity Analysis ProjectParkNET - Opportunity Analysis Project
ParkNET - Opportunity Analysis Projectalepusto
 
Venture lab second assignment presentation
Venture lab second assignment presentationVenture lab second assignment presentation
Venture lab second assignment presentationalepusto
 
Programando Wiring con NXProg
Programando Wiring con NXProgProgramando Wiring con NXProg
Programando Wiring con NXProgalepusto
 
Manual SinaProg
Manual SinaProgManual SinaProg
Manual SinaProgalepusto
 
Hoja datos AVR-Board
Hoja datos AVR-BoardHoja datos AVR-Board
Hoja datos AVR-Boardalepusto
 
Hoja datos microSD
Hoja datos microSDHoja datos microSD
Hoja datos microSDalepusto
 
Manual Atmel FLIP
Manual Atmel FLIPManual Atmel FLIP
Manual Atmel FLIPalepusto
 
Nota de Aplicacion AN-U003
Nota de Aplicacion AN-U003Nota de Aplicacion AN-U003
Nota de Aplicacion AN-U003alepusto
 
Navegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fugaNavegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fugaalepusto
 
Hoja de datos USB2TTL
Hoja de datos USB2TTLHoja de datos USB2TTL
Hoja de datos USB2TTLalepusto
 
Hoja datos DP8
Hoja datos DP8Hoja datos DP8
Hoja datos DP8alepusto
 
Hoja de datos LD8
Hoja de datos LD8Hoja de datos LD8
Hoja de datos LD8alepusto
 
Nota de aplicación AN-U001 de USBee
Nota de aplicación AN-U001 de USBeeNota de aplicación AN-U001 de USBee
Nota de aplicación AN-U001 de USBeealepusto
 
Hoja de datos tarjeta de desarrollo USBee Duo
Hoja de datos tarjeta de desarrollo USBee DuoHoja de datos tarjeta de desarrollo USBee Duo
Hoja de datos tarjeta de desarrollo USBee Duoalepusto
 
Hoja de datos programador NXProg
Hoja de datos programador NXProgHoja de datos programador NXProg
Hoja de datos programador NXProgalepusto
 

Más de alepusto (16)

ParkNET - Testing Value Proposition
ParkNET - Testing Value PropositionParkNET - Testing Value Proposition
ParkNET - Testing Value Proposition
 
ParkNET - Opportunity Analysis Project
ParkNET - Opportunity Analysis ProjectParkNET - Opportunity Analysis Project
ParkNET - Opportunity Analysis Project
 
Venture lab second assignment presentation
Venture lab second assignment presentationVenture lab second assignment presentation
Venture lab second assignment presentation
 
Programando Wiring con NXProg
Programando Wiring con NXProgProgramando Wiring con NXProg
Programando Wiring con NXProg
 
Manual SinaProg
Manual SinaProgManual SinaProg
Manual SinaProg
 
Hoja datos AVR-Board
Hoja datos AVR-BoardHoja datos AVR-Board
Hoja datos AVR-Board
 
Hoja datos microSD
Hoja datos microSDHoja datos microSD
Hoja datos microSD
 
Manual Atmel FLIP
Manual Atmel FLIPManual Atmel FLIP
Manual Atmel FLIP
 
Nota de Aplicacion AN-U003
Nota de Aplicacion AN-U003Nota de Aplicacion AN-U003
Nota de Aplicacion AN-U003
 
Navegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fugaNavegacion autonoma reactiva en pasillos usando el punto de fuga
Navegacion autonoma reactiva en pasillos usando el punto de fuga
 
Hoja de datos USB2TTL
Hoja de datos USB2TTLHoja de datos USB2TTL
Hoja de datos USB2TTL
 
Hoja datos DP8
Hoja datos DP8Hoja datos DP8
Hoja datos DP8
 
Hoja de datos LD8
Hoja de datos LD8Hoja de datos LD8
Hoja de datos LD8
 
Nota de aplicación AN-U001 de USBee
Nota de aplicación AN-U001 de USBeeNota de aplicación AN-U001 de USBee
Nota de aplicación AN-U001 de USBee
 
Hoja de datos tarjeta de desarrollo USBee Duo
Hoja de datos tarjeta de desarrollo USBee DuoHoja de datos tarjeta de desarrollo USBee Duo
Hoja de datos tarjeta de desarrollo USBee Duo
 
Hoja de datos programador NXProg
Hoja de datos programador NXProgHoja de datos programador NXProg
Hoja de datos programador NXProg
 

Último

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 

Último (20)

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 

Manual del robot NXBOT

  • 1. Facultad de Ingeniería Escuela de Ingeniería Eléctrica y Electrónica Universidad del Valle Percepción y Sistemas Inteligentes - PSI NX-BOT – Plataforma para experimentación en Robótica Cooperativa Alejandro Michael Pustowka Reyes Jonathan Alejandro Hernandez Eduardo F. Caicedo Eval Bladimir Bacca contacto: alejandro.pustowka@correounivalle.edu.co www.psiunivalle.com Enero 2012
  • 2. Resumen NX-BOT es una plataforma robótica construida para realizar prácticas e investigaciones en el área de Robótica cooperativa. NX-BOT es un robot que cuenta con tracción diferencial, conformada por dos servomotores y una rueda de apoyo, y dispone además de sensores infrarrojos y de ultrasonido para la detección de obstáculos, una pinza para recolección de objetos, un buzzer para generación de melodías monofónicas, y un sistema Wifi para la comunicación entre robots, así como para actividades de teleoperación y control remoto. El robot cuenta además con un sistema operativo Linux y una versión del framework Player/Stage versiones 2.0.5 y 3.0.2, lo cual lo convierte en una plataforma versátil para la experimentación en robótica móvil. NX-BOT es un desarrollo que hizo parte de la tesis de pregrado “Mantenimiento y Cambio Automático de Formaciones en un Grupo de Robots Móviles Cooperativos Homogéneos”, desarrollado por los ingenieros Alejandro M. Pustowka y Jonathan A. Hernandez, en conjunto con los directores Eduardo F. Caicedo Ph.D. y Eval B. Bacca M.Sc. Además de este trabajo han sido desarrollados otros proyectos de grado que han utilizado la plataforma. Áreas de aplicación: Robótica móvil, Control Inteligente, Inteligencia computacional. 2
  • 3. Índice 1. Introducción.............................................................................................................5 2. Datos Técnicos..........................................................................................................6 3. Descripción de la plataforma..................................................................................7 4. Módulos Electrónicos de NX-BOT.........................................................................8 4.1. Sistema de bajo nivel.........................................................................................8 4.1.1. Sensores ...................................................................................................10 4.1.2. Actuadores................................................................................................12 4.1.3. Puertos de expansión................................................................................12 4.1.4. Batería, carga y encendido.......................................................................13 4.2. Sistema de alto nivel........................................................................................13 5. Estructura mecánica..............................................................................................15 5.1. Posición de módulos electrónicos....................................................................15 5.2. Apariencia final................................................................................................16 6. Software..................................................................................................................18 6.1. NXOS...............................................................................................................18 6.2. OpenWRT/Player.............................................................................................19 6.2.1. Player/Stage..............................................................................................20 6.2.2. Simuladores de Player/Stage....................................................................22 6.2.3. Herramientas de Player/Stage..................................................................23 6.3. NXAPI.............................................................................................................24 6.3.1. Paquetes de la librería NXAPI.................................................................25 7. Modo de operación................................................................................................27 7.1. Encendido y estado de batería..........................................................................27 7.2. Configurando la red.........................................................................................27 7.2.1. Configuración Wifi...................................................................................28 7.3. Accediendo a OpenWRT por consola..............................................................29 7.4. Probando Player/Stage.....................................................................................30 7.4.1. PlayerViewer............................................................................................30 7.4.2. Playerjoy...................................................................................................31 7.5. Utilizando Javaclient para programar NXBOT...............................................31 7.6. Utilizando NXAPI para programar NXBOT...................................................32 8. Enfoque pedagógico...............................................................................................34 8.1. La robótica en la educación.............................................................................34 8.1.1. Laboratorios remotos................................................................................34 8.2. NXBOT como plataforma educativa...............................................................34 8.2.1. Implementación de un laboratorio remoto con NXBOT..........................34 8.3. NXBOT como plataforma de investigación.....................................................34 3
  • 4. 9. Referencias.............................................................................................................35 9.1. Videos...............................................................................................................35 4
  • 5. 1. Introducción El robot NXBOT se concibió como una plataforma orientada a la realización de prácticas de robótica, en especial en el área de cooperación. En la etapa de diseño se plantearon como requerimientos que la plataforma contara con sistemas sensoriales sencillos, así como un sistema de locomoción simple, pero un canal de comunicación robusto, estándar, confiable y de amplio rango, para facilitar la interacción del usuario con la plataforma. NXBOT cuenta por lo tanto con un canal de comunicación Wi-fi, lo cual permite su integración con la red del área de robótica, y facilita también la integración de la plataforma en laboratorios remotos. Actualmente NXBOT cuenta con sensores exteroceptivos como infrarrojos, ultrasonido, cámara web, así como propioceptivos, como el estado de la batería y odometría como sistema de localización. Los actuadores con los que cuenta están definidos por su sistema de locomoción, el cual es diferencial (2 motores), y una pinza en la parte frontal para la manipulación de objetos. El sistema puede ser además expandido usando alguna de sus diferentes interfaces (puertos serie, USB 2.0, GPIO, etc). NXBOT es compatible además con el entorno de desarrollo en robótica Player/Stage, el cual es un servidor de interfaces robóticas e que comprende simuladores en 2D y 3D, el cual es ampliamente utilizado en el área de robótica móvil a nivel mundial, además de ser de fuente abierta (open source). Se han desarrollado el driver y las respectivas librerías de control para permitir realizar prácticas tanto en la plataforma de simulación Stage como en el robot. Dadas estas características, NXBOT se presenta como una herramienta versátil para actividades de investigación en robótica móvil, específicamente en labores cooperativas. 5
  • 6. 2. Datos Técnicos Dimensiones (w x d x h) 11x11x15,5 cm Hardware Sistema de alto nivel Router (WRTSL54GS) MIPSEL @ 266 MHz (32 bits) Sistema de bajo nivel Microcontrolador 8 bits AVR @ 16 MHz Batería 6V@4Ah Carcasa Acrílico 2 mm y 3 mm Sensores Infrarrojos Seis (6) sensores infrarrojos. Máxima distancia de detección: 60 cm. Contacto Cuatro (4) sensores de contacto. Ultrasonido Seis (6) sensores ultrasonido. Estado interno Sensor de estado de la batería. Video Soporte para dos (2) cámaras web por USB. Actuadores Locomoción Dos (2) motores en configuración diferencial con encoders. Ruedas de radio 6 cm. Velocidad máxima: 15 cm/s. (30 cm/s en futuros cambios) Resolución de encoders: 360 puls/rev. Sonido Buzzer piezoeléctrico. Pinza Pinza accionada por servomotor. Amplitud máxima 4 cm. Expansión Puertos: • USB (1) • Ethernet (4) • SPI (1) • Serial (2) • Memoria Externa (hasta 64KB) • Interrupciones externas (8) • Canales ADC (7). Sistema Operativo Linux OpenWRT Backfire 10.03 Software Control Player/Stage 2.0.5 – 3.0.2 Streaming Video Mjpg-streamer 6
  • 7. 3. Descripción de la plataforma NXBOT es una plataforma que cuenta con diversos sensores exteroceptivos como infrarrojos, ultrasonido, cámara web. Los actuadores de la plataforma se componen de los motores del sistema de locomoción, cuya tracción es diferencial (2 motores), así como una pinza en la parte frontal para la manipulación de objetos. El sistema cuenta además con diversos puertos de expansión (puertos serie, USB 2.0, Ethernet, GPIO, etc), como se puede ver en las figuras a continuación. Conectividad Enlace WiFi USB (Webcam) S. Ultrasonido Buzzer Sensores IR Pinza Motores con Encoders Sistemas sensoriales y de actuación de NXBOT Ethernet Puerto USB LED Encendido LED Estado Batería Puerto Expansion Puerto serial Programación Puerto de carga Encendido Conectores del NXBOT en la zona trasera 7
  • 8. 4. Módulos Electrónicos de NX-BOT NXBOT comprende dos sistemas de procesamiento hardware para cumplir con los requerimientos planteados en su diseño. El primer sistema, denominado Sistema de Bajo Nivel, se encarga de las labores de muestreo de sensores y ejecuta los lazos de control de los actuadores. El segundo sistema, denominado Sistema de Alto Nivel, está encargado de la comunicación inalámbrica vía Wifi con el usuario, la ejecución del servidor de interfaces Player/Stage y demás programas que el usuario desee ejecutar en el Sistema Operativo del robot (Servidores de Streaming, bases de datos, programas de control, etc). La figura ilustra el diagrama de bloques del sistema. Figura 1: Diagrama general de sistemas de NXBOT Los dos sistemas se comunican a través de un enlace serial configurado a 115.200 baudios, 8 bits de datos, sin paridad, 1 bit de stop. 4.1. Sistema de bajo nivel El sistema de bajo nivel comprende una plataforma microcontrolada, implementado con una arquitectura de 8 bits Atmel AVR, que se encarga del control de bajo nivel de los actuadores y sensores del robot. Las características más relevantes de este sistema se muestran a continuación: Microcontrolador Atmega1281: Arquitectura AVR@16MHz 8 KB RAM, 128 KB FLASH. Comunicaciones Dos UART disponibles: 1 para comunicación con sistema de Alto Nivel, otra disponible para el usuario. Una interfaz SPI. Conectores Seis (6) conectores para sensores infrarrojos. Ocho (8) conectores para sensores de contacto. Interfaz para motores, incluyen señales PWM, de 8
  • 9. dirección, y de lectura de encoders. Buzzer piezoeléctrico. Otros Expansión Siete (7) entradas analógicas disponibles. Interfaz de expansión de memoria, hasta 64KB. Tres (3) puertos de 8 bits de E/S. Indicadores Indicador LED de encendido y de estado de batería. El hardware del sistema se muestra en la siguiente figura Figura 2: Descripción de hardware del sistema de bajo nivel Descripción 1. Conector de expansión 2. LED de encendido 3. LED de estado de la batería 4. Pulsador de RESET 5. Alimentación 6. Interfaz SPI 7. Conectores para sensores de contacto 8. Conectores para sensores IR 9. Conector para tarjeta motor 10. Conector para Sistema Alto nivel 9
  • 10. El sistema armado se observa a continuación en la figura Figura 3: Sistema de bajo nivel montado 4.1.1. Sensores Infrarrojos NXBOT cuenta con un anillo de seis (6) sensores infrarrojos (IR) distribuidos en los 180° de la zona frontal del robot. Estos sensores se encuentran ubicados como se muestra en la figura. Estos sensores se usan para detectar obstáculos en las orientaciones donde se encuentran ubicados. Su rango de detección puede ser ajustado usando el potenciómetro con el que cuenta cada módulo. Sin embargo este tipo de sensores no permiten medir distancia a los obstáculos detectados. La figura ilustra el sensor IR construido. Sensor Infrarrojo Emisor-Detector Sensor Infrarrojo Emisor-Detector Ultrasonido NXBOT también cuenta con sensores ultrasonido que, a diferencia de los sensores infrarojos, si permiten estimar distancia a los obstáculos, con resolución de 1 cm. Estos sensores hacen parte de un módulo externo al robot, que debe ser conectado a través del puerto de expansión serial. La figura ilustra el sensor ultrasonido utilizado (SRF02) y el módulo de expansión que se ubica sobre el robot. 10
  • 11. Sensor Ultrasonido SRF02 Arreglo de seis sensores SRF02 Puerto de conexión NXBOT con módulo de ultrasonido Puerto serial donde se conecta el módulo Cámara web NXBOT soporta diferentes cámaras web conectadas a través de su puerto USB 2.0. Las cámaras que mejores resultados han presentado son las que incluyen un codificador JPEG, de tal manera que la carga de transmisión de la imagen por USB se ve disminuida, y se pueden alcanzar tasas de hasta 30 cuadros por segundo, o incluso la conexión de dos cámaras simultáneas, conformando un sistema de estereovisión, alcanzando tasas de hasta 15 cuadros por segundo. Las cámaras Logitech son las que generalmente incluyen esta característica. En la siguiente figura se puede observar dos modelos evaluados y validados con NXBOT. Cámara Logitech C270 Cámara Logitech Pro 9000 11
  • 12. Sensor de estado de bateria NXBOT cuenta con un sensor para medir el estado de la batería, de tal manera que alerte al usuario cuando ésta se encuentra descargada. Un LED dedicado para indicación del estado de la batería varía su color para mostrar la carga, variando entre colores Verde – Naranja – Rojo. Asimismo, el buzzer emite una corta melodía cuando es necesario cargar el robot. 4.1.2. Actuadores Motores con encoders NXBOT cuenta con dos motores distribuidos en una configuración diferencial. Los motores son servos modificados, con un torque suficiente para el peso del robot, y se encuentran equipados con encoders, que generan 360 pulsos por revolución. Esta configuración facilita aplicar lazos de control de velocidad y de posición. Motor Futaba S3004 Llanta con recubrimiento de caucho Encoders NXBOT cuenta además con un Buzzer para generación de diferentes melodias. Es usado para alertar sobre eventos de importancia, como la conexión/desconexión de un cliente al robot, así como la alerta por batería baja. 4.1.3. Puertos de expansión NXBOT cuenta con un puerto de expansión de memoria externa, que permite agregar múltiples dispositivos al sistema. Asimismo, pone a disposición líneas ADC para lectura de señales analógicas y un puerto USB, para conexión de dispositivos que usen esta interfaz, como cámaras web, memorias de almacenamiento externo, tarjetas de sonido, etc. El puerto de expansión cuenta con entradas ADC (8), interfaz con memoria externa (<64KB) o líneas de propósito general, GPIO (16). 12
  • 13. 4.1.4. Batería, carga y encendido NXBOT cuenta con una batería seca, de 6V@4Ah. La autonomía aproximada de la plataforma es de 3 a 4 horas, aunque puede ser más dependiendo de la cantidad de dispositivos activos en el robot. El sistema es recargable, y su puerto de carga se encuentra localizado en la zona trasera, en donde también se encuentra el botón de encendido, como se ilustró en la figura. La carga de la batería toma un tiempo de aproximadamente ocho horas, se recomienda utilizar un cargador de baterías con el conector mostrado en la siguiente figura. Batería de 6V@4Ah Puerto del Cargador 4.2. Sistema de alto nivel El sistema de alto nivel de NXBOT comprende un sistema embebido con mayor capacidad de procesamiento, y es utilizado como un computador embebido que ejecuta un sistema operativo Linux para facilitar la gestión y configuración del sistema, además de encargarse de la comunicación inalámbrica y acceso a redes a través de Wifi. El sistema ambién ejecuta la aplicación servidor que controla el sistema de bajo nivel y permite la conexión/desconexión de usuarios. Las características más relevantes del sistema se describen a continuación: Microprocesador Broadcom: Arquitectura MIPSEL@266MHz 32 MB RAM, 8 MB FLASH. Comunicaciones Interfaz de comunicación Wifi serie g. Dos UART disponibles: 1 para comunicación con sistema de Bajo Nivel, otra disponible para el usuario. 13
  • 14. (1) puerto USB Device 2.0 (4) puertos Ethernet A continuación se muestra el router utilizado, que corresponde a la referencia WRTSL54GS de la marca Linksys. Router WRTSL54GS de Linksys Hardware del router WRTSL54GS 14
  • 15. 5. Estructura mecánica NXBOT cuenta con una estructura mecánica de material acrílico de 2 y 3 mm. El diseño consideró una base para ubicar la batería y los motores, así como tres pisos para la ubicación de los módulos electrónicos, sensores y demás actuadores. Las siguientes figuras ilustran el despiece de esta estructura. 5.1. Posición de módulos electrónicos En las siguientes imágenes se ilustra la ubicación de los diferentes módulos hardware que componen NXBOT. Con una vista superior se indican las posiciones de los componentes en la base y en cada uno de los pisos de la plataforma. Como se puede observar en las siguientes imágenes, la base comprende la batería, los dos motores y la rueda loca de apoyo para el robot. El primer piso comprende la tarjeta de comunicación y programación del robot, así como la tarjeta de control de motores. El segundo piso comprende la ubicación del módulo electrónico de bajo nivel, junto con los sensores infrarrojos, mientras que el tercer piso soporta únicamente el módulo electrónico de alto nivel. Posición de motores, batería y rueda loca Piso 1: tarjeta de comunicación y motores 15
  • 16. Piso 2: Sistema de bajo nivel y sensores IR Piso 3: sistema de alto nivel Las siguientes imágenes muestran la ubicación de los componentes internos de NXBOT, sin considerar el exterior. Se observa que todos los puertos de expansión quedan localizados en la zona trasera del robot. Estructura interna lateral Estructura interna frontal 5.2. Apariencia final La carcasa del robot NXBOT fue realizada con acrílico negro de 2 mm de espesor. La carcasa soporta los pisos que a su vez mantienen los módulos electrónicos. La parte superior del robot se ha dejado plana para facilitar la ubicación de otros módulos de expansión. 16
  • 17. Carcasa exterior, vista lateral Carcasa exterior, vista frontal Carcasa exterior, vista lateral Carcasa exterior, vista trasera 17
  • 18. 6. Software El software de NXBOT se encuentra dividido en tres partes: NXOS (Firmware del sistema microcontrolado), OpenWRT/Player (Sistema Operativo y Aplicación que se ejecuta en el sistema embebido) y NXAPI (API de control de alto nivel escrita en Java y que puede ser ejecutada en un computador remoto). El código es mantenido a través de un servidor SVN público, que puede ser visitado en el siguiente enlace: http://code.google.com/p/nxbot La figura a continuación ilustra la integración de estos tres componentes software. Figura 4: Componentes software del robot NXBOT A continuación se describe cada uno de los componentes software mencionados. 6.1. NXOS NXOS es el sistema operativo para el sistema de bajo nivel de NXBOT. Se encarga de la gestión de todos los dispositivos conectados al robot, como sensores y actuadores. NXOS realiza la actualización de lecturas de los sensores de manera determinística, ya que implementa un RTOS (Sistema Operativo de Tiempo Real), que garantiza el cumplimiento estricto de las tasas de muestreo configuradas. NXOS también implementa los lazos de control de los actuadores del sistema. Son básicamente tres tareas que gestiona NXOS: comunicación con el sistema de alto 18
  • 19. nivel, actualización de sensores (infrarrojos, bumpers y batería) y control de actuadores (Motores, buzzer, indicadores LED). NXOS usa FreeRTOS (http://www.freertos.org) en su implementación. La figura ilustra la arquitectura general de NXOS. Figura 5: Diagrama de Bloques de NXOS 6.2. OpenWRT/Player El sistema de alto nivel incluye la distribución Linux OpenWRT, la cual es una distribución orientada a sistemas embebidos de bajos recursos computacionales. OpenWRT se encarga de la gestión de los sistemas de comunicación Ethernet y Wifi, así como los puertos seriales del hardware del router WRTSL54GS. Actualmente, las plataformas cuentan con la versión más reciente a la fecha de OpenWRT, denominada BackFire 10.03. Al contar con Linux en la plataforma, es posible instalar un sinnúmero de aplicaciones ya portadas a esta arquitectura, como servidores de Streaming de Video (mjpg-streamer), drivers para diferentes dispositivos USB como memorias USB, webcams, tarjetas de sonido, etc. entre otras aplicaciones. 19
  • 20. 6.2.1. Player/Stage El entorno Player/Stage ha sido también portado a la arquitectura del Sistema de Alto Nivel. Player es un servidor de interfaces robóticas que permite el control de todo el hardware con el que cuenta NXBOT. La ventaja de usar el entorno Player/Stage es que se puede realizar una etapa previa de simulación para cada uno de los experimentos. El software escrito para estos experimentos funciona sin problemas tanto para el simulador como para la plataforma real, lo que agiliza la validación de resultados. La comunicación con Player se realiza mediante sockets TCP/IP. El Hilo del Servidor se encarga de recibir comandos desde los programas cliente, y los almacena en Buffers de Comandos para ser enviados a los Hilos de Control de cada dispositivo. Estos a su vez, leen estos Buffers de Comandos y los aplican al dispositivo asignado. Si el dispositivo es de lectura, el Hilo de Control del Dispositivo se encarga de tomar los datos del dispositivo y los almacena en un Buffer de Datos. Este buffer a su vez es leído por el hilo del servidor y son enviados a los programas cliente que lo requieran. La figura ilustra este proceso. Figura 6: Estructura básica del servidor Player Para interactuar con el servidor Player, se debe tener en cuenta tres conceptos básicos: • Interfaz: Entidad abstracta que especifica una clase de periféricos o entidades abstractas, como algoritmos. Especifica qué datos provee el periférico, los cuales se definen en los atributos de la interfaz, y asimismo define los métodos disponibles que tiene. 20
  • 21. Driver: Pieza de código que se encarga de realizar la comunicación con el periférico (sensor o actuador), y encapsula su información en los atributos de una o más interfaces. • Dispositivo: Se define como un driver unido a una interfaz, y es el elemento básico de control entre el Player y el Programa Cliente. Por lo tanto, la versatilidad de Player radica en la facilidad de abstraer diferentes periféricos a través de interfaces. Esto permite que un programa software escrito para un robot específico, pueda ser utilizado en otro sin mayor cambio, ya que el control se realiza a través de interfaces. En la figura a continuación, se observa más claramente los términos de interfaz y driver. Se observa que para cada robot, NXBOT y Pioneer3dx, se ha implementado un driver, el cual provee tres interfaces: Camera, Sonar y Position2d. Para los programas cliente, no importa que robot estén controlando, éstos ven únicamente las interfaces, lo que permite una abstracción de hardware y por lo tanto facilita la portabilidad de código. Figura 7: Ejemplo de interfaces y drivers de robots NXBOT y Pioneer 21
  • 22. El servidor Player compilado para NXBOT es la versión más reciente a la fecha (Player 3.0.2) e incluye las siguientes Interfaces: • Position2d: Interfaz Para el control directo de motores, tanto de posición (odometría) como de velocidad. • IR: Interfaz para lectura de los sensores infrarrojos. Depreciada, será próximamente actualizada a Ranger. • Bumper: Interfaz para lectura de los sensores de contacto. • Sonar: Interfaz para lectura de los sensores ultrasonido. Depreciada, será próximamente actualizada a Ranger. • Power: Interfaz para lectura del estado de la batería. • DIO: Interfaz para control de las líneas digitales disponibles en el puerto de expansión de NXBOT. • AIO: Interfaz para lectura de las líneas analógicas disponibles en el puerto de expansión de NXBOT. • Gripper: Interfaz para controlar la pinza del robot NXBOT. • Camera: Interfaz disponible para acceder a las imágenes de la cámara onboard del robot. 6.2.2. Simuladores de Player/Stage El proyecto Player/Stage cuenta con dos simuladores en 2D y 3D. El simulador Stage provee simulación en 2.5D. Modela únicamente la cinemática de las plataformas simuladas, más no su dinámica. Se han escrito los respectivos archivos que permiten simular la plataforma NXBOT en Stage, como lo muestra la figura Figura 8: NXBOT simulado en Stage 22
  • 23. Gazebo es el simulador 3D del proyecto. Éste aún no ha sido trabajado, ni se han escrito los modelos para simular NXBOT en él. 6.2.3. Herramientas de Player/Stage Player/Stage cuenta con varias herramientas para evaluar el entorno de desarrollo e interactuar tanto con los robots reales como los simulados. PlayerViewer PlayerViewer es un simple cliente que permite observar los datos devueltos por las interfaces, de una manera gráfica fácilmente entendible. Asimismo, provee una interfaz sencilla para el control de algunas interfaces de envío de comandos. Figura 9: Interfaz de PlayerViewer Playerjoy Playerjoy es una sencilla interfaz de línea de comandos, que permite controlar interfaces de tipo Position2D, usando ya sea un Joystick previamente reconocido por el sistema operativo, o usando el teclado para enviar comandos de velocidad al robot. Playercam Playercam es una interfaz gráfica que permite la conexión a interfaces Camera y Blobfinder. Permite observar las imágenes de cámaras y ver que regiones de color ha detectado la interfaz Blobfinder. La figura ilustra la interfaz de Playercam. 23
  • 24. Figura 10: Interfaz de Playercam 6.3. NXAPI Al controlar NXBOT usando Player se tiene a disposición los lenguajes de programación soportados por éste. Actualmente, Player soporta los clientes de lenguajes C/C++ y Python, sin embargo proyectos independientes han escrito clientes para otros lenguajes, como Java y Matlab. Específicamente para este proyecto, se decidió dar soporte a Java, debido a la sencillez del lenguaje y por ser multiplataforma. De esta manera, se pueden ejecutar controladores tanto en Windows como en Linux. NXAPI se definió como una interfaz de programación orientada a implementar el paradigma de comportamientos en robótica [enlace a Arkin, bibliografía]. Su base es Javaclient, el cliente de Java para Player. NXAPI intenta ser una herramienta que facilita la programación de pilas de comportamientos y la selección de diferentes árbitros para estas pilas, siendo los más comunes los árbitros cooperativos y los competitivos. La figura a continuación ilustra un ejemplo de pila de comportamientos para la tarea de evasión de obstáculos y su implementación utilizando NXAPI. Figura 11: Representación gráfica de la pila de comportamientos 24
  • 25. //Interfaces Javaclient Position2DInterface positionNXBot; SonarInterface ir; //Conexion al servidor Player de NXBOT Robot nxbot = new Robot("NXBOT","192.168.1.1",6665, 0); //Acceder a interfaces de Player positionNXBot   =   nxbot.requestInterfacePosition2D(0,  PlayerConstants.PLAYER_OPEN_MODE); ir = nxbot.requestInterfaceSonar(0, PlayerConstants.PLAYER_OPEN_MODE); //ejecutar el hilo del cliente Player nxbot.runThreaded(10,0); //Punto de meta Vector2D point = new Vector2D(5,5,Vector2D.MODE_XY); //Creacion de los comportamientos NxMSGoToPoint   irAMeta   =   new   NxMSGoToPoint("goto2",positionNXBot,point,   4,  0.2f, NxBehavior.MODE_EXPONENTIAL); NxPSDetectObstaclesIR   obst   =  new  NxPSDetectObstaclesIR("obst",positionMarlin,ir); NxMSAvoidObstacles   evadirObst   =  new  NxMSAvoidObstacles("avoid",obst,positionMarlin,NxBehavior.MODE_EXPONENTIAL); //Creacion del arbitro y asignacion de comportamientos CooperativeArbitrator arbitrator = new CooperativeArbitrator("a1", false); arbitrator1.add(irAMeta); arbitrator1.add(evadirObst); //Ejecucion del programa while(true)         {             Vector2D total = arbitrator.value();             posH.goTo(total, positionMarlin);             try             {             Thread.sleep(50);             }             catch(Exception e){}         } 6.3.1. Paquetes de la librería NXAPI Paquete Util Incluye utilidades para facilitar el manejo de información, como vectores, Helpers para diferentes interfaces de Player, GUIs para representación gráfica de algunos elementos, etc. Paquete Test Incluye los programas de prueba para validar el funcionamiento de NXBOT y son 25
  • 26. programas de ejemplo para familiarizarse con la interfaz. Paquete Robot Este paquete incluye las clases necesarias para realizar la conexión al servidor Player, gestión de sensores y de actuadores. Paquete Behaviors Este paquete incluye los comportamientos hasta la fecha implementados. Incluye comportamientos sencillos, como GoToPoint, AvoidObstacles, hasta otros más complejos, como Follow, MaintainFormation, etc. Asimismo, este paquete incluye todas las clases necesarias para gestionar la pila de comportamientos, y diferentes tipos de árbitro (colaborativo y competitivo). Un ejemplo de la estructura de clases de NXAPI se puede ver en la figura a continuación. Figura 12: Diagrama de Clases reducido de NXAPI 26
  • 27. 7. Modo de operación En esta sección se describen los pasos a seguir para empezar a trabajar con NXBOT en prácticas de robótica utilizando el entorno de desarrollo Player/Stage. 7.1. Encendido y estado de batería Al encender NXBOT debe prenderse el LED de encendido del robot (LED rojo), así como el indicador de batería, el cual ilumina tonalidades entre verde y rojo dependiendo de la carga de la pila. En caso de que el robot emita dos bips cada cierto tiempo, indica que la batería se encuentra baja y es prudente colocar a cargar la plataforma. Si el robot enciende los dos LEDs, el indicador de batería es verde y no emite los bips típicos de descarga, puede proceder a utilizar NXBOT para las prácticas en robótica. NO se recomienda configurar la red de NXBOT si éste tiene la batería baja, ya que podría llevar a efectos no deseados. 7.2. Configurando la red Para configurar la red de NXBOT, se debe conectar un cable de red a uno de los puertos de la zona trasera del robot. No utilice el primer puerto, debe ser alguno de los siguientes cuatro disponibles, como lo ilustra la siguiente imagen. Figura 13: Puertos Ethernet disponibles para configuración Luego de haber conectado el cable a NXBOT y a su equipo, configure la interfaz de red en su computador para permitir asignación dinámica de dirección IP por DHCP. La dirección IP por defecto de NXBOT es la 192.168.0.1. El robot le debe asignar una dirección en el rango de 192.168.0.2 a 192.168.0.254. En una consola del sistema operativo, use los comandos ipconfig/all (en Windows) o ifconfig (en Linux) para verificar la dirección IP asignada a su máquina por NXBOT. Si la dirección se encuentra en el rango anteriormente definido, se encuentra correctamente conectado a NXBOT. 27
  • 28. Aunque es posible cambiar la dirección de red de la interfaz LAN de NXBOT (Puertos Ethernet), se recomienda NO hacerlo, con el fin de garantizar uniformidad en el acceso al robot. Ahora puede ingresar a la interfaz web del robot, que le permitirá configurar todos los parámetros de red que desee (Wifi, LAN, WAN). Utilice su navegador para ello, simplemente en la barra de dirección coloque la dirección IP de NXBOT (192.168.0.1). Si todo sale correctamente, debe observar una portada similar a la siguiente figura: Figura 14: Interfaz de acceso a OpenWRT Para acceder a la plataforma WEB, utilice el siguiente login: Usuario root Contraseña nxbot 7.2.1. Configuración Wifi Las opciones de configuración de Wifi se pueden encontrar en el menú Network, submenú Wifi. La figura muestra la pantalla de configuración. 28
  • 29. A continuación se describen los campos de configuración. Parámetro Descripción Enable Habilita o deshabilita la interfaz Wifi. Recomendamos mantenerla activa. Channel Canal de comunicación Wifi. Definido por el usuario. Network name (ESSID) Nombre de la red. Si NXBOT está generando la red Wifi, asigne el nombre que crea conveniente. Si NXBOT se va a conectar a una red Wifi ya existente, ingrese el nombre de esa red. Mode Se recomienda utilizar únicamente dos modos: Provide (Acces Point): NXBOT genera la red Wifi según el nombre asignado. Join (Client): NXBOT se conecta a una red previamente existente. Encryption Tipo de encripción que lleva el enlace. Actualmente funciona únicamente WEP. 7.3. Accediendo a OpenWRT por consola Para acceder al sistema operativo de NXBOT (OpenWRT) se utiliza el protocolo SSH (Secure Shell). Si utiliza Windows puede utilizar el programa PuTTY, que incluye ese protocolo. En caso de usar Linux, utilice el comando ssh. Se utiliza la siguiente dirección para acceder a OpenWRT: # ssh root@192.168.0.1 La contraseña es la misma que la de acceso a la interfaz web. Si todo ha salido correctamente en el inicio de sesión, observará en la consola información similar a la siguiente figura: 29
  • 30. Figura 15: Acceso a OpenWRT por consola Esto indica que ha ingresado correctamente. Esta es una consola que recibe comandos típicos de Linux. Puede utilizar las herramientas del sistema para instalar nuevos programas, con el comando opkg, siempre y cuando tenga conexión a internet. 7.4. Probando Player/Stage Se pueden utilizar las herramientas de Player/Stage para controlar al robot, una vez se encuentre corectamente conectado a éste. 7.4.1. PlayerViewer Puede utilizar PlayerViewer para controlar el movimiento de la plataforma y observar la lectura de sensores infrarrojos, ultrasonido y de contacto, así como el estado de la batería, el estado de las líneas analógicas y digitales, y controlar el estado de la pinza (abierto o cerrado). Para utilizar PlayerViewer puede utilizar el siguiente comando: # playerv ­h 192.168.0.1 Cambie la dirección IP en caso de que se encuentre conectado a una red Wifi externa. El proceso para conectarse a cada una de las interfaces del robot se realiza a través del menú Devices. Proceda a suscribirse a la interfaz (submenú Subscribe). Si el dispositivo es un sensor, comenzará a ver los datos del sensor en la interfaz de Playerv. Si es una interfaz de posición y desea enviar comandos de velocidad o posición, utilice el submenú Command del mismo menú, y posteriormente habilite la interfaz (submenú Enable). A continuación se muestra una imagen de PlayerViewer usando el menú Devices: 30
  • 31. Figura 16: Menú Devices de PlayerViewer 7.4.2. Playerjoy Utilice Playerjoy para controlar NXBOT con el teclado o con un Joystick. Utilice el siguiente comando: # playerjoy 192.168.0.1:6665 Cambie la dirección IP en caso de que se encuentre conectado a una red Wifi externa. Utilice las siguientes teclas para controlar al robot: Tecla Función i Adelante j Izquierda l Derecha , Atrás q Incrementar velocidad z Decrementar velocidad 7.5. Utilizando Javaclient para programar NXBOT Para escribir software para controlar la plataforma se ha recomendado utilizar Javaclient, que permite ser ejecutado en diferentes sistemas operativos. Recomendamos remitirse a la página de Javaclient para descargar el código fuente y compilarlo en cualquier IDE de Java (Eclipse, Netbeans): http://java-player.sourceforge.net/ 31
  • 32. En la página existen múltiples ejemplos para familiarizarse con Javaclient. A continuación se muestra un pequeño ejemplo que ilustra la forma de programación con esta librería. Figura 17: Diagrama de flujo general de una aplicación escrita con Javaclient 7.6. Utilizando NXAPI para programar NXBOT NXAPI facilita la programación de controladores basados en el paradigma de comportamientos. La librería puede ser descargada de la página del proyecto de NXBOT: http://code.google.com/p/nxbot en la librería se incluyen diferentes ejemplos que permiten familiarizarse con ella. A continuación se muestra un pequeño ejemplo que ilustra la forma de programación con esta librería. 32
  • 33. Figura 18: Diagrama de flujo general de una aplicación escrita con NXAPI 33
  • 34. 8. Enfoque pedagógico La robótica móvil es una rama que despierta mucho interés en la actualidad, no solamente en el ámbito de investigación, sino también en el proceso pedagógico. Es una rama comúnmente atractiva que facilita el desarrollo de experiencias a los estudiantes, pues aunque muchos la ven como un concepto de ciencia ficción, ya cuenta con aplicaciones reales, y en unos casos permite modelar a pequeña escala procesos de gran envergadura. Aplicar en la educación los conceptos de robótica, fortalece los procesos de creatividad y pensamiento divergente, indispensables y necesarios en la formación académica y facilita la creación de espacios más ricos en recursos y sinergias que profundizan la apropiación de conocimiento. 8.1. La robótica en la educación Existe actualmente la tendencia de involucrar las TICs en el proceso de enseñanza- aprendizaje. Incluir la robótica en prácticas pedagógicas hace parte de esta tendencia, ya que utiliza las nuevas tecnologías no sólo como objeto de aprendizaje, sino también como medio y apoyo al proceso académico. Esto ha permitido que se establezca una nueva rama en la robótica, conocida como “Robótica Educativa”, en donde se plantean metodologías para aplicar el uso de robóts en el proceso pedagógico. La robótica educativa ha sido trabajada desde estas dos perspectivas: como objeto de aprendizaje, puede ser utilizada para aprender o reforzar los conceptos en los siguientes temas: • Física y Matemáticas • Programación • Control de procesos • Instrumentación • Inteligencia computacional Estos son sólo unos pocos ejemplos en donde la robótica puede ser utilizada como objeto de aprendizaje. Sin embargo, especial énfasis existe actualmente para involucrar la robótica en otras áreas menos obvias, que no tienen estrecha relación con la tecnología, como lo son la biología, química, historia, e incluso artes. La figura ilustra el robot NXT de Lego Mindstorms, una de las plataformas que han sido pensadas para ser utilizadas en actividades de robótica educativa. 34
  • 35. Figura 19: Robot NXT de Lego Mindstorms, utilizado como plataforma educativa 8.2. NXBOT como plataforma educativa NXBOT puede ser aplicado en estos espacios pedagógicos, al ser una herramienta con grandes capacidades para la experimentación en robótica móvil. Ya que se encuentra soportado por un entorno de desarrollo simple de manejar (Player/Stage), que tiene la posibilidad de utilizar diferentes lenguajes de programación y cuenta con facilidades en la conectividad a través de TCP/IP, facilita la integración de la plataforma en prácticas en clase. Otra de las ventajas de trabajar con NXBOT es que cuenta con soporte en el simulador Stage. Al contar con pocas plataformas, se hace necesario validar inicialmente los algoritmos en simulación, y permite que el estudiante esté involucrado activamente en el proceso pedagógico aún sin contar directamente con el hardware físico. 8.2.1. Implementación de un laboratorio remoto con NXBOT Dadas las facilidades de conectividad que ofrece NXBOT, es posible la implementación de laboratorios remotos con la plataforma. Un laboratorio remoto permite el acceso de estudiantes usando la red de internet como base. Ya que NXBOT cuenta con conectividad Wifi, que usa TCP/IP como protocolo, la integración de la plataforma en la arquitectura del sistema es realmente sencilla. NXBOT ya ha sido integrado a la plataforma RENATA [referencia aquí], que provee un laboratorio remoto de robótica entre las universidades adscritas a esta red. La figura a continuación muestra la integración de NXBOT a una arquitectura de red que puede servir de base para la implementación de laboratorios remotos. 35
  • 36. Figura 20: Arquitectura para conexión de NXBOT a la red 8.3. NXBOT como plataforma de investigación NXBOT puede ser también utilizado como plataforma de investigación en el área de robótica móvil. El conjunto de sensores y actuadores que comprende el robot lo hace idóneo para trabajar en las ramas típicas de robótica móvil, como lo son la Localización y Navegación, así como los sistemas multirobot, gracias a la robusta interfaz de comunicación que provee. Diferentes trabajos han sido realizados con la plataforma, los cuales se listan a continuación: • Mantenimiento y cambio automático de formaciones • Sistema de videovigilancia soportado por robots móviles • Reconstrucción de una imagen panorámica de 360° usando robots móviles • Navegación reactiva a través de pasillos usando visión artificial Estos son solo algunos de los trabajos en donde se ha involucrado al robot NXBOT como plataforma de investigación. Las figuras a continuación ilustran algunas de las investigaciones realizadas. 36
  • 37. Figura 21: Grupo de robots NXBOT manteniendo una formación cuadrado (a) (b) Figura 22: NXBOT navegando mediante visión artificial: (a) detección del punto de fuga, (b) Navegación a través de pasillos usando el punto de fuga 37
  • 38. 9. Referencias 1. Pustowka, A.M., Hernandez J.A., "Mantenimiento y cambio automático de formaciones de un grupo de robóts móviles cooperativos homogéneos", Universidad del Valle, 2008. 2. Hernandez, J.A.; Pustowka, A.; Caicedo, E.F.; Bacca, E.B., "Formation control of cooperative robots with limited sensing using a virtual robot as reference", Latin-American Robotics Symposium LARS, Valparaiso, Chile, 2009. (versión online: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp? arnumber=5418317) 3. Publicación de navegación por punto de fuga. 4. "Proyecto Player/Stage" [online] http://playerstage.sourceforge.net/ 5. Behavior based robotics... Arkin. 9.1. Videos 1. "NX-Bot: Formación Flecha" [online] http://www.youtube.com/watch? v=xNWVuFW0KA4&feature=related 2. "NX-Bot: Formación Columna" [online] http://www.youtube.com/watch? v=CK5_BR9Ydm0&feature=related 3. "NX-Bot: Formación Cuadrado" [online] http://www.youtube.com/watch? v=snkjwmBnkmI&feature=related 4. "NX-Bot: Formación Fila" [online] http://www.youtube.com/watch? v=pP97Qtj2szY&feature=related 5. "NX-Bot, cambio de formación cuadrado (ancho)" [online] http://www.youtube.com/watch?v=51I7vrg0M1 6. "NX-Bot: Cambio automático de formación en un pasillo de paredes paralelas" [online] http://www.youtube.com/watch? v=2XOy8fmbDiQ&feature=related 7. "NX-BOT: Cambio automático de formación en un pasillo de paredes inclinadas" [online] http://www.youtube.com/watch? v=AlhxQNx48JE&feature=related 8. NXBOT navegación autónoma por pasillos usando punto de fuga 38