manual del robot nxbot

38
Universidad del Valle Facultad de Ingeniería Escuela de Ingeniería Eléctrica y Electrónica 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: [email protected] www.psiunivalle.com Enero 2012

Upload: alepusto

Post on 04-Aug-2015

912 views

Category:

Technology


3 download

TRANSCRIPT

Universidad del Valle

Facultad de IngenieríaEscuela de Ingeniería Eléctrica y Electrónica

Percepción y Sistemas Inteligentes - PSI

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

Alejandro Michael Pustowka ReyesJonathan Alejandro Hernandez

Eduardo F. CaicedoEval Bladimir Bacca

contacto: [email protected]

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.........................................................................84.1. Sistema de bajo nivel.........................................................................................8

4.1.1. Sensores ...................................................................................................104.1.2. Actuadores................................................................................................124.1.3. Puertos de expansión................................................................................124.1.4. Batería, carga y encendido.......................................................................13

4.2. Sistema de alto nivel........................................................................................13

5. Estructura mecánica..............................................................................................155.1. Posición de módulos electrónicos....................................................................155.2. Apariencia final................................................................................................16

6. Software..................................................................................................................186.1. NXOS...............................................................................................................186.2. OpenWRT/Player.............................................................................................19

6.2.1. Player/Stage..............................................................................................206.2.2. Simuladores de Player/Stage....................................................................226.2.3. Herramientas de Player/Stage..................................................................23

6.3. NXAPI.............................................................................................................246.3.1. Paquetes de la librería NXAPI.................................................................25

7. Modo de operación................................................................................................277.1. Encendido y estado de batería..........................................................................277.2. Configurando la red.........................................................................................27

7.2.1. Configuración Wifi...................................................................................287.3. Accediendo a OpenWRT por consola..............................................................297.4. Probando Player/Stage.....................................................................................30

7.4.1. PlayerViewer............................................................................................307.4.2. Playerjoy...................................................................................................31

7.5. Utilizando Javaclient para programar NXBOT...............................................317.6. Utilizando NXAPI para programar NXBOT...................................................32

8. Enfoque pedagógico...............................................................................................348.1. La robótica en la educación.............................................................................34

8.1.1. Laboratorios remotos................................................................................348.2. NXBOT como plataforma educativa...............................................................34

8.2.1. Implementación de un laboratorio remoto con NXBOT..........................348.3. NXBOT como plataforma de investigación.....................................................34

3

9. Referencias.............................................................................................................359.1. Videos...............................................................................................................35

4

1. IntroducciónEl 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 cmHardware

Sistema de alto nivel Router (WRTSL54GS)MIPSEL @ 266 MHz (32 bits)

Sistema de bajo nivel Microcontrolador 8 bits AVR @ 16 MHzBatería 6V@4AhCarcasa Acrílico 2 mm y 3 mm

SensoresInfrarrojos 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.03Software

Control Player/Stage 2.0.5 – 3.0.2Streaming Video Mjpg-streamer

6

3. Descripción de la plataformaNXBOT 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.

Sistemas sensoriales y de actuación de NXBOT

Conectores del NXBOT en la zona trasera

7

ConectividadUSB

(Webcam)

Sensores IR

S. Ultrasonido

Pinza

Enlace WiFi

Motores conEncoders

Buzzer

Puerto USBEthernet

Programación

PuertoExpansion

Puertode carga Encendido

Puertoserial

LED EncendidoLED Estado Batería

4. Módulos Electrónicos de NX-BOTNXBOT 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:

MicrocontroladorAtmega1281: Arquitectura AVR@16MHz8 KB RAM, 128 KB FLASH.

ComunicacionesDos UART disponibles: 1 para comunicación con sistema de Alto Nivel, otra disponible para el usuario.Una interfaz SPI.

ConectoresSeis (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.

OtrosExpansió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ón1. Conector de expansión 2. LED de encendido3. LED de estado de la batería 4. Pulsador de RESET5. Alimentación 6. Interfaz SPI7. Conectores para sensores de contacto 8. Conectores para sensores IR9. 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

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

Puerto deconexión

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

EncodersNXBOT 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:

MicroprocesadorBroadcom: Arquitectura MIPSEL@266MHz32 MB RAM, 8 MB FLASH.

ComunicacionesInterfaz 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ánicaNXBOT 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. SoftwareEl 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 JavaclientPosition2DInterface positionNXBot;SonarInterface ir;

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

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

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

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

//Creacion de los comportamientosNxMSGoToPoint   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 comportamientosCooperativeArbitrator arbitrator = new CooperativeArbitrator("a1", false);arbitrator1.add(irAMeta);arbitrator1.add(evadirObst);

//Ejecucion del programawhile(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ónEn 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 [email protected]

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ógicoLa 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