logo logo
Home arrow Robotics Studio... arrow Documentation arrow Gestionando la ejecución de un un programa en el Lego NXT
Tuesday, 22 May 2012
 
 
Main Menu
Home
Conscious Machines...
AI Techniques...
Neuroscience...
Researchers...
Publications...
Reviews...
MC Bibliography
Robotics Studio...
Forums...
Blog...
Frontpage
Upcoming Events
05.Jun. 2012

Cognition & Consciousness
Menorca. Spain
02.Jul. 2012

ASSC 16
Brighton, UK
02.Jul. 2012

Revisiting Turing and his Test
Birmingham, UK
31.Oct. 2012

BICA 2012
Palermo. Italy
Tag Cloud
Associations Books Conferences Conscious Conscious Machines Consciousness Developer Documentación Documentation Español Machine Machine Consciousness Machines Neuroscience Publications Research Researchers Reviews Robotics Robots Spanish Studio VPL Work
Spotlight
More
Reader's Preferred
MCexperts List
FAQs
Glossary
Site Map
Gestionando la ejecución de un un programa en el Lego NXT Print E-mail
Written by Javier Escobar   
Tuesday, 25 November 2008

Image Gestionando la ejecución de un un programa en el Lego NXT

Este diagrama de ejemplo busca un programa actualmente en ejecución en el Brick del Lego NXT, muestra el nombre del programa y da la oportunidad de pararlo y volverlo a arrancar.

Obviamente el programa en ejecución debe estar almacenado en la memoria del NXT y no ser la ejecución de un programa desde el entorno del Microsoft Robotics Studio.

Abra un nuevo proyecto, arrastre un bloque de brick al diagrama y configure el puerto serie en la ventana propiedades tal y como se describe en el punto de este documento “Añadir el brick y configurarlo”.

A continuación arrastre y añada al diagrama una actividad desde la ventana/panel de actividades y configure al menos el nombre de la misma en la ventana propiedades. Enlace el pin redondo de notificaciones del brick con el bloque de la nueva actividad y configure los valores que se muestran en la siguiente figura.

Figura 44: Configuración del enlace entre el brick y una actividad de usuario.
Figura 44: Configuración del enlace entre el brick y una actividad de usuario.

Realice doble clic sobre la nueva actividad y se abrirá una nueva lengüeta con el diagrama en blanco que se IRá componiendo para esta nueva actividad. Ahora se deben añadir nuevos bloques, se comenzará por añadir un servicio “LegoBrickIOv2”. Conectar el pin de entrada de la actividad al pin de entrada del servicio y configurar la conexión tal y como se indica en al siguiente figura, de esta forma se interactúa con el brick para preguntarle cuál es el programa que tiene en ejecución.

Figura 45: Configuración del enlace entre la entrada de la actividad y el servicio LegoBrickIOv2
Figura 45: Configuración del enlace entre la entrada de la actividad y el servicio LegoBrickIOv2

Ahora arrastre al diagrama de la actividad un servicio “SimpleDialog” y una la salida del “LegoBrickIOv2”, enlace el pin de salida de datos (cuadrado naranja de la izquierda) del bloque “LegoBrickIOv2” con el pin de entrada de este nuevo servicio. Configure la conexión como se indica en la siguiente figura. Esto provocará que se muestre una ventana de diálogo si no existe ningún programa en ejecución.

Figura 46: Configuración del enlace entre “LegoBrickIOv2” y el “SimpleDialog”.
Figura 46: Configuración del enlace entre “LegoBrickIOv2” y el “SimpleDialog”.

Se mostrará la ventana de configuración de datos de la conexión para configurar el valor que tomará la propiedad “ConfirmText”. Se debe poner el texto que se desea que le aparezca al usuario en una ventana en el PC para el caso en el que no exista ningún programa ejecutándose, dándole la oportunidad de elegir si desea o no arrancar un programa en el brick y volver a preguntar con esta aplicación. Se propone el siguiente texto: "No se está ejecutando ningún programa. ¿Quiere arrancar un programa e intentarlo de nuevo?"

Figura 47: Configuración de datos conexión entre “LegoBrickIOv2” y el SimpleDialog
Figura 47: Configuración de datos conexión entre “LegoBrickIOv2” y el SimpleDialog

Arrastre una actividad “Calculate” al diagrama y una el pin de salida de datos del servicio “LegoBrickIOv2” al pin de entrada de esta nueva actividad. Configure la conexión como se muestra en la siguiente figura, de esta forma cuando se encuentre un programa en ejecución seguiremos por esta nueva actividad el flujo del programa.

Figura 48: Configuración de la conexión entre “LegoBrickIOv2” y “Calculate”.
Figura 48: Configuración de la conexión entre “LegoBrickIOv2” y “Calculate”.

En la caja de texto de la actividad “Calculate” se debe escribir o seleccionar de la lista de valores el valor “Program” para que nos pase el nombre del programa en ejecución.

Añada un bloque “If” y conecte su pin de entrada al pin de salida de datos de la actividad “SimpleDialog” configurando la conexión como se muestra a continuación. No olvide escribir en la caja de texto de la actividad “If”, o seleccionarlo del menú desplegable, el valor “Confirmed”

Figura 49: Configuración de la conexión entre “SimpleDialog” e “If”.
Figura 49: Configuración de la conexión entre “SimpleDialog” e “If”.

Ahora se debe añadir una actividad, pero como en este caso sería la misma actividad sobre la que estamos trabajando, copie esta actividad de la lengüeta en la que se encuentra el diagrama principal y cópiela dentro de esta lengüeta. Así heredará la actividad al completo. Enlace el pin de salida de datos del bloque “If” con el pin de entrada de esta nueva actividad que acaba de pegar. Esto provoca que vuelva a comenzar recursivamente el flujo de esta actividad, siempre y cuando se haya llegado a esta rama del programa.

 

Figura 50: Diagrama con la actividad añadida provocando recursividad.
Figura 50: Diagrama con la actividad añadida provocando recursividad.

Como se ha terminado la programación de esta rama, ahora continuaremos la rama del bloque “Calculate” que dejamos unos pasos atrás. Para ello, debemos añadir al diagrama de la actividad “Variable”, que enlazaremos con el pin de salida de datos del bloque “Calculate”. Además en la actividad “Variable” se debe crear una variable de tipo “String” llamada “Program” que almacenará el nombre del programa en ejecución, para ello pulsaremos sobre el botón de puntos suspensivos que nos abrirá la ventana de diálogo que se muestra en las siguientes figuras.

Figura 51: Configuración de la conexión entre el bloque “Calculate” y “Variable.
Figura 51: Configuración de la conexión entre el bloque “Calculate” y “Variable.

Figura 52: Definición de la variable “Program” de tipo “String”.
Figura 52: Definición de la variable “Program” de tipo “String”.

Copie y pege la actividad “SimpleDialog” que añadimos anteriormente. Enlace su pin de entrada con el pin de salida del bloque “Calculate” y configure la conexión con los siguientes valores.

Figura 53: Configuración de la conexión entre los bloques “Calculate” y SimpleDialog
Figura 53: Configuración de la conexión entre los bloques “Calculate” y SimpleDialog

Como texto en la configuración de los datos de conexión para la propiedad “ConfirmText” se propone -- "¿Detener el programa " + value + "?" – que intercala en el texto el nombre del programa actualmente en ejecución.

Figura 54: Configuración de los datos de la conexión entre los bloques “Calculate” y SimpleDialog
Figura 54: Configuración de los datos de la conexión entre los bloques “Calculate” y SimpleDialog

Ahora hay que añadir un bloque “If” y conectarlo al bloque “SimpleDialog” tal y como se hizo en el bloque “If” que se añadió anteriormente, incluso con la misma condición.

Como se hizo anteriormente, copie y pegue esta misma actividad sobre la que estamos trabajando y enlace su pin de entrada con el pin de salida de datos del “Else” del bloque “If”.

Copie y pegue la actividad que añadimos al comienzo de este ejemplo “LegoBrickIOv2” y conecte su pin de entrada al pin de salida de la única condición que tiene el bloque “If” antes de ser añadido. Configure la conexión tal y como se muestra seguidamente.

Figura 55: Configuración de la conexión entre los bloques “If” y “LegoBrickIOv2”.
Figura 55: Configuración de la conexión entre los bloques “If” y “LegoBrickIOv2”.

En este punto se copiará y pegará el bloque “SimpleDialog”, conectando su pin de entrada al pin de salida de datos del bloque “LegoBrickIOv2”. En esta ocasión se recomienda añadir como texto para el usuario la siguiente cadena que lleva incluido el nombre del programa en ejecución: “¿Desea arrancar de nuevo " + value + "?"

Figura 56: Configuración de la conexión entre los bloques “LegoBrickIOv2” y SimpleDialog
Figura 56: Configuración de la conexión entre los bloques “LegoBrickIOv2” y SimpleDialog

En este punto es necesario un nuevo bloque “If” que una vez añadido, se enlazará su pin de entrada con el pin de salida de datos del bloque “SimpleDialog” anteriormente añadido. La configuración de esta conexión será como sigue y la única condición será que “Confirmed” sea cierto.

Figura 57: Configuración de la conexión entre los bloques “SimpleDialog” e “if”.
Figura 57: Configuración de la conexión entre los bloques “SimpleDialog” e “if”.

Ahora se copiará y pegará como se hizo anteriormente el bloque “LegoBrickIOv2” pero en esta ocasión, seleccionaremos “StartProgram” como se puede ver a continuación. Los datos de la conexión también se muestran en las siguientes figuras.

Figura 58: Configuración de la conexión entre los bloques “if” y “LegoBrickIOv2”
Figura 58: Configuración de la conexión entre los bloques “if” y “LegoBrickIOv2”

Figura 59: Configuración de los datos de la conexión entre los bloques “if” y LegoBrickIOv2
Figura 59: Configuración de los datos de la conexión entre los bloques “if” y LegoBrickIOv2

Por último, se copiará y pegará dos veces ésta propia actividad tal y como se hizo en anteriores ocasiones. Un copia de esta actividad será enlazada al pin de salida de datos del la condición “Else” del bloque “If” y la otra copia se enlazará con el pin de salida de datos del bloque “LegoBrickIOv2”. Esto provocará que el flujo de esta actividad vuelva a comenzar en estos puntos. Esto es debido bien porque se decidiese en el último “SimpleDialog” rearrancar el programa que estaba en ejecución y que se paró o bien porque se decidiese no arrancarlo. En el caso del enlace entre esta actividad y el bloque “LegoBrickIOv2”, seleccionar los siguientes parámetros de conexión.

Figura 60: Configuración de los datos de la conexión entre los bloques “LegoBrickIOv2” y la nueva actividad.
Figura 60: Configuración de los datos de la conexión entre los bloques “LegoBrickIOv2” y la nueva actividad.

Antes de terminar este ejemplo, en la siguiente figura se muestra cómo quedó finalmente el diagrama de la actividad que acabamos de terminar.

Figura 61: Estado final del diagrama de la actividad BuscarPrograma.
Figura 61: Estado final del diagrama de la actividad BuscarPrograma.

 


Add as favourites (177) | Quote this article on your site | Views: 2448

  Be first to comment this article
RSS comments

Only registered users can write comments.
Please login or register.


Related Items:

  1. Jobs: Two Chair positions for new Centre for Computational Neuroscience and Co
  2. Birmingham Fellows in Robotics and Cognitive Systems
  3. Finding papers about consciousness and robotics
  4. Paladyn. Journal of Behavioral Robotics
  5. International Journal of Social Robotics
  6. Cognitive Robotics and Machine Consciousness
  7. Cognitive Robotics
  8. Polymorphic Robotics
  9. Urbi goes Open Source
  10. The Tower of Hanoi for Robotics
Last Updated ( Tuesday, 25 November 2008 )
 





Lost Password?
No account yet? Register
 Conscious Robots RSS FeedConscious Robots RSS Feed

Find us on Facebook

Follow us on TwitterFollow us on twitter
Spotlight

Machine Consciousness Bibliography Database

 

ConsScale
The Cognitive Machine Consciousness Scale

 
Categories
Last Posts in Forum
 
CR
miel continental