logo logo
Home arrow Robotics Studio... arrow Documentación en Español (Spanish Documentation) arrow Programación en VPL de un control básico para el robot Lego NXT Alpha-Rex
Thursday, 09 February 2012
 
 
Main Menu
Home
Conscious Machines...
AI Techniques...
Neuroscience...
Researchers...
Publications...
Reviews...
MC Bibliography
Robotics Studio...
Forums...
Blog...
Frontpage
Upcoming Events
22.Feb. 2012

CogSys 2012
Vienna, Austria
04.Apr. 2012

TSC 2012
Tucson, Arizona
17.May. 2012

EAIS 2012
Madrid, Spain
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
Architectures 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
Spotlight
More
Reader's Preferred
MCexperts List
FAQs
Glossary
Site Map
Programación en VPL de un control básico para el robot Lego NXT Alpha-Rex Print E-mail
Written by Javier Escobar   
Wednesday, 26 November 2008

VPL Programación en VPL de un control básico para el robot Lego NXT Alpha-Rex

En este apartado se va a proceder a la construcción de un sistema básico de control (automático y manual) que nos permita convertir el humanoide de Lego en un pequeño boxeador, cuyo principal objetivo sea la auto-defensa.

Figura 111: Lego MindStorms Alpha-Rex.
Figura 111: Lego MindStorms Alpha-Rex.

Las instrucciones de montaje de este modelo no se encuentran muy accesibles. Sin embargo, se pueden localizar a través de la web que hemos mencionado en otras ocasiones con motivo de este trabajo, donde se ha ido realizando una colección de recursos bastante interesantes, tanto sobre el Lego MindStorms como sobre VPL. Para este ejercicio, se han tenido que modificar los planos originales de la siguiente forma:

- Para realizar cualquier trabajo sobre este robot, se hace prácticamente imprescindible disponer del pack de batería más cargador. Este pack nos proporcionará mayor autonomía y un considerable ahorro económico.

Figura 112: Pack de batería MindStorms Lego-9798-1.
Figura 112: Pack de batería MindStorms Lego-9798-1.

Esta batería reemplaza la tapa de las pilas de la unidad central (brick) pudiéndose observar que tras su instalación sobresale unos milímetros más que la tapa original. Esto nos obligará a cambiar algunas piezas del montaje del brick para poder sujetarlo correctamente al robot. También hay que tener en cuenta que esta operación variará levemente el centro de gravedad del robot inclinándolo levemente hacia delante.


- Este robot está pensado para caminar sólo hacia delante. Por tanto, deberemos realizar otros cambios en su construcción que nos permita realizar giros a izquierda y derecha. Para ello, sustituya el eje que une los dos engranajes grandes (traseros) que son movidos por los motores de las piernas, por dos ejes independientes de longitud 8.

Figura 113: Modificación del eje del engranaje principal.
Figura 113: Modificación del eje del engranaje principal.

Aunque esto permitirá el movimiento de los motores de forma individual, podremos observar que la tendencia de los engranajes es a abrirse hasta dejar de hacer contacto con el pequeño engranaje del eje de los motores. Para ello, debemos sustituir la pieza negra de la siguiente imagen por la gris.

Figura 114: Modificación para el juego de los engranajes de las piernas.
Figura 114: Modificación para el juego de los engranajes de las piernas.

Esta pieza está situada a la altura de las “rodillas” del modelo Alpha-Rex.

Figura 115: Modificación en las “rodillas” del Alpha-Rex.
Figura 115: Modificación en las “rodillas” del Alpha-Rex.

Con ello conseguimos unir más las dos piezas y cerrar el ángulo de sujeción de las mismas al engranaje grande.


- Por último, aunque como podremos observar el movimiento no será muy exacto, tiene que tener en cuenta dos máximas para intentar mejorarlo: o Colocar los engranajes tal y como muestra la siguiente figura:

Figura 116: Posición de inicio de los motores de las piernas.
Figura 116: Posición de inicio de los motores de las piernas.

Tendremos que ser conscientes del movimiento que realizamos los humanos al caminar, llevando las piernas siempre contrapeadas. Cuando una pierna esté hacia atrás, la otra habitualmente estará hacia delante, de esta forma provocaremos el correcto funcionamiento del robot al caminar recto. Si comenzamos a caminar con las dos piernas en la misma posición, observaremos que en lugar de avanzar, parece como si estuviéramos intentando que el robot baile.

Por último, también tendremos que tener en cuenta la superficie sobre la que se deslizará. Los “zapatos” que utiliza este robot, van provistos de unas gomas negras que cuando una pierna avanza, evita que la otra retroceda. Para que esto se cumpla, es necesario que la superficie sobre la que camine sea lisa, preferiblemente de algún material como el plástico que evitará que la goma se desplace, ejerciéndo la suficiente presión. Una vez se han comentado los aspectos físicos, comenzaremos a describir las funcionalidades que se pretende que incorpore el sistema de Control Básico del Alpha-Rex:

1.Con programas pesados, el entorno de desarrollo tarda bastante tiempo en comenzar la ejecución. Por tanto, además del pitido que emite el brick cuando está sincronizado y listo para la ejecución, lo primero que realizaremos será encender el led rojo del sensor de luz durante un breve período de tiempo para que nos alerte de que nuestra aplicación se encuentra en ejecución.


2. Utilizaremos el sensor de sonido para poder lanzarle órdenes al robot en voz alta, para que comience a caminar intentando bien defenderse de una agresión o bien, si estuviese en posición, realizar un ataque con los brazos tras la detección de proximidad de un enemigo/obstáculo.


3. Para dirigir el robot, utilizaremos varios métodos:
a) Utilizando una ventana con las flechas en el ordenador: “Simple Dialog Box”.
b) Mediante un joystick: Se propone el uso del mando de la consola Xbox 360 en su versión USB.

Figura 117: Mando USB de la consola Xbox 360.
Figura 117: Mando USB de la consola Xbox 360.

c) Además, el robot realizará algunas actuaciones de forma autónoma en función del estado de los sensores, tal y como se describe más abajo.

4. Se utilizará el sensor de ultrasonidos para medir la distancia hasta los posibles objetivos. Este sensor nos alertará de la cercanía de estos objetivos de dos formas distintas:

a) Cuando el objetivo esté a menos de 60cm. Se encenderá el led rojo del sensor de luz y comenzará a mover los brazos lentamente.
b) Cuando nos encontremos a una distancia menor de 40cm. El movimiento de los brazos se hará lo más rápido posible, tanto para intentar atacar al enemigo, como para una autodefensa.
c) Además, cuando tras haber tenido el objetivo/atacante a una distancia menor de 60cm. se observe que éste se aleja, se mantendrá tanto el led rojo encendido como los brazos en movimiento durante un umbral de seguridad de 10cm (de 60 a 70 cm.).
d) Y por último, cuando la distancia sea o vuelva a ser superior a 70cm. dejará los brazos de nuevo en reposo y apagará la alerta del led rojo del sensor de luz.


5. Se utilizará el sensor de contacto para poder realizar una parada total del robot.

Tras la definición de las funcionalidades que esperamos que el robot cumpla, comenzaremos la implementación de la aplicación. Se ha decidido no utilizar ningún bloque de actividad para intentar ver de un solo plumazo el funcionamiento de la misma. Sin embargo, queda al gusto del lector realizarlo como ejercicio para el uso de distintos bloques de actividad.

Tras abrir un nuevo proyecto, comenzaremos añadiendo el bloque de un “LegoNXTBrickv2” y estableceremos su configuración inicial (“Set Initial Configuration”) para poder seleccionar el puerto serie utilizado (en este caso el 43) y la velocidad (115.200 bps).


Seguidamente, realizaremos algunas acciones de inicialización como son:


- Inicialización de los motores de las piernas mediante el valor “0.0” de una actividad “Calculate” que le pasaremos a la propiedad “SetDrivePower” para los dos motores de una actividad “LegoNXTDrivev2”. Con esta operación, aseguramos que comenzaremos en una situación en la que los motores de las piernas estén parados.

- Además, debemos encender momentáneamente el led rojo (colocado a la espalda del Alpha-Rex) para que nos indique que nuestra aplicación ya ha comenzado a funcionar. Con esto no sólo tendremos el aviso sonoro del brick, sino que el robot lo indicará visualmente. Por tanto, será necesario inicializar la propiedad “IsOn” a “true” (valor de la actividad “Data”).

Figura 118: Comienzo e inicialización de Control básico.
Figura 118: Comienzo e inicialización de Control básico.

A continuación, usaremos el sensor de contacto (en el brazo derecho del robot) para poder detener el robot al completo. Inserte este sensor en el diagrama, configúrelo para que utilice el brick del paso anterior e indique que se ha conectado al puerto “Sensor1”. Será necesario chequear mediante una actividad “If”, el valor de la propiedad “TouchSensorOn” que nos llega a través de la conexión entre el pin de salida de notificaciones del sensor y el bloque “If”. Si el valor de la propiedad es “true”, se habrá pulsado el sensor, para lo que almacenamos temporalmente el valor “0.0” dentro de una actividad “Calculate”, que previamente se unirá a la condición adecuada del bloque “If”.

Añada un bloque LegoNXTMotorv2, configúrelo para que utilice el brick insertado al comienzo del ejercicio y colóquelo en el puerto “MotorA”. Ahora inserte un bloque “LegoNXTDrivev2”, configúrelo para que utilice el brick existente en el diagrama e indique que el motor derecho está conectado al puerto “MotorB” y el izquierdo al “MotorC”. La distancia entre las ruedas y el diámetro de las mismas no es necesario indicarlo pero por defecto se han colocado los valores de los ejemplos del Tribot. Desde la actividad “Calculate” donde se almacenó el valor “0.0”, llevaremos dos enlaces, uno a cada uno de estos nuevos bloques y se pasará a la propiedad SetDrivePower (tanto para la rueda derecha, como para la izquierda, como para “TargetPower”) el valor “value”, quedando definitivamente detenidos los tres motores.

Figura 119: Control básico con el sensor de contacto añadido
Figura 119: Control básico con el sensor de contacto añadido

A continuación se añadirá un sensor “LegoNXTSoundSensorv2” que mediante su pin de salida de notificaciones lo enlazaremos a un bloque “If” para chequear si el valor de la propiedad “Intensity” es mayor que 40 detectando un incremento en la intensidad del sonido percibido de hasta un 40%. El sensor de sonido debe ser configurado tanto para utilizar el brick inicial como para que utilice el puerto “Sensor2”. Añada una actividad “Calculate” a la que le asignará el valor “1.0” y enlace la entrada de esta actividad con la salida de la única condición del “If”, así como la salida con una copia de la actividad “LegoNXTDrivev2” que fue insertada y configurada anteriormente. Para este último enlace, utilice la propiedad “SetDrivePower” y asigne a ambos motores el valor “value” procedente de la actividad “Calculate”.

Figura 120: Control básico con el sensor de sonido añadido
Figura 120: Control básico con el sensor de sonido añadido

Ahora ha llegado la hora de intentar atacar o defenderse de agresiones a través de un sensor de ultrasonidos que añadiremos al diagrama. Este sensor se configurará para que utilice el brick existente y para que utilice el puerto “Sensor3”. Añada también un bloque “If” y establezca en el mismo las siguientes condiciones:


Distance < 40: Esta condición debe enlazarla con una copia del “LegoNXTMotorv2” estableciendo el valor de la propiedad “TargetPower” a “1.0”. Igualmente, esta misma condición la debe enlazar con una copia de la actividad “LegoNXTLightSensorv2” y establecer su propiedad “IsOn” a “true”. De esta forma conseguirá que cuando el objetivo esté cerca se ilumine el led rojo del sensor de luz y los brazos del robot se muevan a máxima velocidad.

(Distance >= 40) && (Distance <= 60): Esta condición debe enlazarla con una copia del “LegoNXTMotorv2” estableciendo el valor de la propiedad “TargetPower” a “0.6”. Igualmente, esta misma condición la debe enlazar con una copia de la actividad “LegoNXTLightSensorv2” y establecer su propiedad “IsOn” a “true”. De esta forma conseguirá que cuando el objetivo pase a estar a menos de 60cm. se ilumine el led rojo del sensor de luz y los brazos del robot se muevan lentamente.

- Distance > 70: Esta condición debe enlazarla con una copia del “LegoNXTMotorv2” estableciendo el valor de la propiedad “TargetPower” a “0.0”. Igualmente, esta misma condición la debe enlazar con una copia de la actividad “LegoNXTLightSensorv2” y establecer su propiedad “IsOn” a “false”. De esta forma conseguirá que cuando el objetivo esté lejos no se ilumine el led rojo del sensor de luz y los brazos del robot permanezcan en reposo.

Figura 121: Control básico con el sensor de sonido añadido.
Figura 121: Control básico con el sensor de sonido añadido.

A estas alturas, nos falta controlar al robot para permitirle caminar a nuestro antojo. Primero lo realizaremos utilizando una ventana con botones de flechas que nos permita desplazar al robot. Para ello, inserte un bloque “SimpleDialogBox” y seguidamente un bloque “Calculate” con la propiedad “Name” en su correspondiente caja de texto. Enlace estos dos bloques desde el pin de salida de notificaciones de la ventana de diálogo hasta la entrada de la actividad “Calculate”, indicando en la lista “from” la propiedad o mensaje “ButtonPressed”. Inserte una acitivida Switch a la que debe agregar las siguientes condiciones:

-  “Stop”: Enlace esta condición con una nueva actividad “Calculate” a la que debe añadir en su caja de texto el valor “0.0” para permitir detener más tarde los motores de las piernas.

-  “Forwards”: Enlace esta condición con una nueva actividad “Calculate” a la que debe añadir en su caja de texto el valor “1.0” para permitir caminar al robot en línea recta como veremos en las próximas líneas.

- Left”: Enlace esta condición con una copia del bloque “LegoNXTDrivev2” insertada y configurada anteriormente). En la ventana de conexiones seleccione en “To:” la propiedad “SetDrivePower” y en la ventana de datos de las conexiones asigne los valores “0.0” y “1.0” a los motores de las ruedas izquierda y derecha respectivamente. Esto detendrá el motor izquierdo, avanzando sólo el lado derecho del robot para provocar el giro a la izquierda.

- “Right”: Enlace esta condición con una copia del bloque “LegoNXTDrivev2” (insertada y configurada anteriormente). En la ventana de conexiones seleccione en “To:” la propiedad “SetDrivePower” y en la de datos de las conexiones asigne los valores “1.0” y “0.0” a los motores de las ruedas izquierda y derecha respectivamente. Esto detendrá el motor derecho, avanzando sólo el lado izquierdo del robot para provocar el giro a la derecha.


Las actividades “Calculate” que insertamos y enlazamos con las condiciones “Stop” y “Forwards” del bloque “Switch” deben ser unidas mediante una nueva actividad “Merge”. Además, esta nueva actividad “Merge” se enlazará con otra nueva copia del bloque “LegoNXTDrivev2”, provocando que le lleguen uno u otro valor a la propiedad “setDrivePower”, tanto a su motor de la rueda derecha como el de la izquierda (en lugar de rueda, recuerde que realmente serán para las correspondientes piernas del robot, se utiliza el término rueda ya que los nombres de las propiedades de este control están orientados a motores de ruedas y no de piernas).

A partir de este momento ya podremos dirigir al robot con la ventana de botones con flechas. Cada vez que se inicie un movimiento con una de las flechas monitorizadas deberemos además, pararlo pulsando de nuevo en otra flecha o en el botón “Stop”. Esto puede resultar algo incómodo, especialmente a la hora de realizar los giros, donde es necesario algo más de precisión. Por tanto, añadiremos una copia del bloque “SimpleDialogBox” que acabamos de insertar y a su pin de salida de notificaciones, le enlazaremos una actividad “Calculate” con el valor “0.0” en su caja de texto. Este enlace utilizará en la ventana de conexiones la propiedad “ButtonReleased” para permitirnos monitorizar cuándo soltamos uno de los botones. Si enlazamos la actividad “Calculate” a una nueva copia del bloque “LegoNXTDrivev2” y seleccionamos la propiedad “SetDrivePower” de la ventana de conexiones para pasarle el valor que teníamos almacenado en el bloque “Calculate”, conseguiremos finalmente que el robot se detenga cada vez que soltemos un botón de la ventana con los botones de las flechas que nos permitirá controlar al robot.

Figura 122: Control básico con soporte para la ventana de diálogo con botones de dirección
Figura 122: Control básico con soporte para la ventana de diálogo con botones de dirección

Finalmente, sólo resta realizar la última parte de este ejercicio que nos permitirá dirigir al robot utilizando en mando de la consola Xbox 360 en su versión USB. Obviamente, antes de poder utilizarlo se debe configurar y calibrar dicho dispositivo en el panel de control, dentro del apartado de los dispositivos de juegos conforme indica el fabricante. Para añadir esta funcionalidad al ejercicio que se está realizando, se debe añadir un servicio “XInputController” y un bloque “If”. Ambas actividades deben ser enlazadas desde el pin de salida de notificaciones del servicio “XInputController” y seleccionando en la ventana de conexiones la propiedad “ThumbsticksChange”. Esto permitirá tener acceso a los datos que nos devolverán las palancas del mando USB, mediante RightX/RightY para el stick derecho y LeftX/LeftY para el izquierdo. En el bloque “If” se deben contemplar las siguientes condiciones que nos proporcionarán el control desde la palanca derecha:

RightX > 0.0: Giro a la derecha, para lo que calcularemos la hipotenusa del triángulo recto formado con las coordenadas X, Y y los ejes. Para este cálculo utilizaremos un bloque “Calculate” para el cálculo de la suma de los cuadrados de los lados del triángulo y un servicio “MathFunctions” que realizará la raíz cuadrada. El valor resultante será el que apliquemos a la propiedad “SetDrivePower” (en el motor izquierdo) junto con un cero para el motor derecho, mediante la unión del servicio “MathFuncions” con una nueva copia del servicio “LegoNXTDrivev2”.

RightX < 0.0: Giro a la izquierda, para lo que calcularemos la hipotenusa del triángulo recto formado con las coordenadas X, Y y los ejes de coordenadas. Para este cálculo utilizaremos un bloque “Calculate” en el cálculo de la suma de los cuadrados de los lados del triángulo y un servicio “MathFunctions” que realizará la raíz cuadrada de esa suma. El valor resultante será el que apliquemos a la propiedad “SetDrivePower” (en esta ocasión para el motor derecho) junto con un cero para el motor izquierdo, mediante la unión del servicio “MathFuncions” con una nueva copia del servicio “LegoNXTDrivev2”.

- (RightX == 0.0) && (RightY >= 0.0): Avance recto. Para caminar en línea recta, además de tener las piernas en la posición contrapeada que se explicó anteriormente, será necesario aplicar el mismo valor a ambos motores en una nueva copia del bloque que debe ser añadido del servicio “LegoNXTDrivev2”. Este valor vendrá dado por el valor de “RightY” o posición de la coordenada Y.

- Queda por decidir el caso en el que ninguna de las anteriores condiciones sea cierta (“Else”). Como no tendremos retroceso en línea recta, no contemplamos ningún movimiento para el caso en que la coordenada Y es menor que cero y la coordenada X es igual a cero. Por tanto, bastará con parar los dos motores mediante una nueva copia del servicio “LegoNXTDrivev2” que tendremos que añadir y enlazar con la condición “Else” (propiedad “SetDrivePower”).

El diagrama resultante de toda la aplicación será el siguiente:

Figura 123: Control básico con soporte para el mando USB de la Xbox 360.
Figura 123: Control básico con soporte para el mando USB de la Xbox 360.


Add as favourites (190) | Quote this article on your site | Views: 4857

  Comments (1)
RSS comments
 1 Probleas al iniciar el servicio del mand
Written by This e-mail address is being protected from spam bots, you need JavaScript enabled to view it , on 30-06-2010 23:45
Hola, 
 
No sé si este es el sitio indicado para pedir ayuda, pero me viene muy bien el tema del post. 
 
Estoy intentando utilizar el mando de la XBOX 360º (modelo de cable usb) con el Pioneer 3DX, para ello he modificado el tutorial \"Robotics Tutorial 4 - Drive-By-Wire\" de forma similar a como se indica en la siguiente página: http://blogs.msdn.com/b/coding4fun/archive/2007/07/16/3902344.aspx.  
 
También he compilado el servicio \"samples\\UX\\XInputGamepad\" del M. Robotics Studio, para poder incluirlo en el tutorial 4. Finalmente gener un manifest para dicho tutorial, que contiene lo siguiente: 
Code:
 
 
 
 
 
http://schemas.microsoft.com/robotics/2006/09/xinputgamepad.user.html 
 
 
 
http://schemas.tempuri.org/2010/06/roboticstutorial4.user.html 
 
 
 

 
 
Seguidamente en la ventana de comandos del MRS ejecuto lo siguiente: 
Code:
dsshost32 -port:50000 -tcpport:50001 -manifest:\"C:\Microsoft Robotics Dev Studio 2008 R2\samples\Config\MobileRobots.P3DX.Simulation.manifest.xml\" -manifest:\"Tutorial4\CSharp\RoboticsTutorial4.manifest.xml\"
 
Pero me da el siguiente error: 
Code:
 
* Service started [07/01/2010 00:18:53][http://dell-portatil:50000/directory] 
* Service started [07/01/2010 00:18:53][http://dell-portatil:50000/constructor] 
* Service started [07/01/2010 00:18:53][http://dell-portatil:50000/console/output] 
* Starting manifest load: file:///C:/Microsoft Robotics Dev Studio 2008 R2/samples/Config/MobileRobots.P3DX.Simulation.manifest.xml  
[07/01/2010 00:18:53][http://dell-portatil:50000/manifestloaderclient] 
No physics hardware present, using software physics. 
* Manifest load complete [07/01/2010 00:18:55][http://dell-portatil:50000/manifestloaderclient] 
* Starting manifest load: file:///G:/hector/Documentos/Ingenieria en Informatica/Trabajo Dirigido/ 
* Service started [07/01/2010 00:18:55][http://dell-portatil:50000/xinputgamepad/ab4bb7eb-92a7-4df9-9e59-b3be77cfb617] 
* Manifest load complete [07/01/2010 00:18:55][http://dell-portatil:50000/manifestloaderclient] 
* Service started [07/01/2010 00:18:59][http://dell-portatil:50000/simulateddifferentialdrive/61937225-b2ed-4c52-bfa2-387404ca542e] 
* Service started [07/01/2010 00:18:59][http://dell-portatil:50000/simulatedbumper/0b00e503-4a73-49c1-8026-a1ef7317e14f] 
* Service started [07/01/2010 00:18:59][http://dell-portatil:50000/simulatedlrf/464b1504-23b4-4763-9054-1f56c99e7130] 
* Service started [07/01/2010 00:18:59][http://dell-portatil:50000/simulatedwebcam/3d736a4c-fcdf-4bd5-8d2a-75598ec1973c] 
* Service started [07/01/2010 00:19:00][http://dell-portatil:50000/gamecontroller/f4c20675-2def-46df-a1d9-c7f1f77ae6d3] 
 
*** Partner enumeration during service startup failed.  
Partner Name:http://schemas.tempuri.org/2010/06/roboticstutorial4.user.html:XInputGamepad 
Partner Contract: 
Partners specified statically in service implementation class: 
PartnerAttribute Name:Drive,Contract:http://schemas.microsoft.com/robotics/2006/05/drive.html, 
CreationPolicy:UseExisting 
PartnerAttribute Name:Bumper,Contract:http://schemas.microsoft.com/2006/06/contactsensor.html, 
CreationPolicy:UseExisting 
PartnerAttribute Name:XInputGamepad,Contract:http://schemas.microsoft.com/robotics/2006/09/xinputgamepad.html, 
CreationPolicy:UseExisting 
Partners specified at runtime, in CreateRequest: 
Name: http://schemas.microsoft.com/xw/2004/10/dssp.html:ConstructorService,  
Contract: http://schemas.microsoft.com/xw/2004/10/constructor.html,  
Service: dssp.tcp://dell-portatil:50001/constructor 
Name: http://schemas.microsoft.com/xw/2004/10/dssp.html:PartnerListService,  
Contract: http://schemas.microsoft.com/xw/2004/10/partnerlist.html,  
Service: dssp.tcp://dell-portatil:50001/roboticstutorial4/DSS/partnermanager 
Name: http://schemas.tempuri.org/2010/06/roboticstutorial4.user.html:Drive,  
Contract: http://schemas.microsoft.com/robotics/2006/05/drive.html,  
Service: dssp.tcp://dell-portatil:50001/simulateddifferentialdrive/61937225-b2ed-4c52-bfa2-387404ca542e/drive 
Name: http://schemas.tempuri.org/2010/06/roboticstutorial4.user.html:Bumper,  
Contract: http://schemas.microsoft.com/2006/06/contactsensor.html,  
Service: dssp.tcp://dell-portatil:50001/simulatedbumper/0b00e503-4a73-49c1-8026-a1ef7317e14f/contactsensor 
[07/01/2010 00:19:55][http://dell-portatil:50000/roboticstutorial4] 
 
* ControlC pressed. 
* Initiating shutdown... 
* Shutdown complete.  

 
 
Necesitaria vuestra ayudar para poder solucionar este error, y asi continuar con mi proyecto. Muchas gracias a todos y un saludo.

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 ( Wednesday, 26 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