logo logo
Inicio arrow Foros...
Wednesday, 07 de January de 2009
 
 
English English  Español Español  
Próximos Eventos
10.Jun. 2009

IWANN 2009
Salamanca, Spain
11.Jun. 2009

Toward a Science of Consciousness
Hong Kong, China
14.Jun. 2009

International Workshop on Machine Consciousness
Hong Kong, China
15.Jun. 2009

The 8th IEEE International Conference on Cognitive Informatics
Hong Kong, China
22.Jun. 2009

IWINAC 2009
Santiago de Compostela, Spain
Etiquetas
Análisis Artificial Científicos Conciencia Consciencia Consciencia Artificial Conscientes Consciousness Developer Documentación Documentation Español Howto Investigación Publicaciones Reviews Robotics Robots Robótica Servicios Spanish Studio VPL artificial
Destacados
Conscious-Robots.com Forum  


Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Duda sobre los robots que pueden simularse - 2008/02/08 16:45 Otra pregunta recibida por correo, la pongo aquí para contestar directamente en el foro,

Gracias,
Raúl.

Hola,
muchísimas gracias por resolver mi anterior duda, aquella de porque al ejecutar DSS Node me pedían usuario y clave, el problema era efectivamente que tenía otro navegador como predeterminado.
Ahí va una nueva duda, estoy haciendo los tutoriales de robótica en los que hay que incorporar algún "manifest" para los sensores, motores y/o robots. Cuando se ejecuta el programa se abre una ventana explorer y me dice que dichos elementos no se encuentran conectados. Me gustaría saber cuales de ellos se pueden simular sin necesidad de hardware ya que he probado varios y sigo obteniendo fallos.
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:Duda sobre los robots que pueden simularse - 2008/02/08 17:08 En Robotics Studio hay que distinguir entre contratos genéricos (generic contracts) y la implementación concreta de un servicio. Intentaré explicarlo con el ejemplo de la tracción diferencial (o Differential Drive). En MSRS hay definido un contrato genérico para DifferentialDrive. Este contrato no es más que un interfaz que define una serie de operaciones, pero que no las implementa. Es decir, aparte del contrato genérico tiene que haber al menos un servicio que cumpla con ese contrato. Es lo mismo que pasa en lenguajes de programación como JAVA o C#, que tenemos interfaces y luego clases que implementan esos interfaces. Pues en Robotics Studio pasa igual, pero a nivel de servicios.

La ventaja de este enfoque es que si escribes tu código usando contratos genéricos no necesitas luego cambiar nada de código para pasar de un robot a otro, o de un robot real a uno simulado (o viceversa). Siguiendo con el ejemplo de la tracción diferencial, imagina que vas a trabajar con cuatro robots diferentes:

- Un Pioneer 3DX real.
- Un Pioneer 3DX simulado.
- Un Lego NXT real.
- Un Lego NXT simulado.

Si tu programa de control se basa en usar la tracción diferencial para mover todos estos robots, no tiene sentido que escribas cuatro versiones del mismo programa. En vez de eso, en tu programa haces referencia siempre al contrato genérico (el GenericDifferentialDrive). Sin embargo, dependiendo de cada robot concreto que uses en cada momento, pondrás un servicio concreto en tu manifest (archivo manifest.xml). Por ejemplo, si usas un Pioneer real, en el manifest pondrás el servicio ArcosDifferentialDrive, si usas un NXT simulado pondrás SimulatedDifferentialDrive, etc.

En tiempo de compilación tu programa se compila con el contrato genérico (que está definido en la biblioteca RoboticsCommon.dll). Por el contrario, en tiempo de ejecución tu programa usará el servicio concreto que está indicado en el manifest.

Por lo que dices en tu pregunta parece como si estuvieras usando en tu programa un servicio genérico, y luego el supuesto servicio concreto que implementa ese contrato no se encuentra disponible. Pero no estoy seguro sin ver el mensaje de error que te está dando. ¿Puedes incluir esta información? ¿Estás usando VPL o programas directamente en C sharp?

Dime qué servicios concretos estás usando. En MSRS hay algunos contratos genéricos, como el de SONAR que no tienen el correspondiente servicio implementado, como por ejemplo un sonar simulado. En este caso yo mismo escribí un servicio de sonar simulado que implementa el contrato genérico de sonar [1].

[1] http://www.conscious-robots.com/es/robotics-studio/servicios-de-robotics-studio/servicio-de-sonar- sim.html
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Julia
Usuarios

Senior Boarder
Mensajes: 17
graphgraph
Karma: 3  
Re:Duda sobre los robots que pueden simularse - 2008/02/12 18:56 Hola!!(a ver si ahora lo consigo)
respondiendo a tu mensaje anterior, estoy utilixando VPL y normalmente trabajo con los robots LEGO NXT Tribot y Mobile Robots P3DX.

Realizando el tutorial número 3 de robótica "Creating Orchestration Services" es cuando me surgieron las dudas que ya te comenté. Yo desarrollo el tutorial como viene explicado en la página de MSRS, y añado los bloques del tutorial 4 "Drive-by-Wire" para poder mover el robot por el entorno gráfico. En los manifests de "Generic Contact Sensors" y "Generic Differential Drive" añado "LEGO.NXT.Tribot.Simulation.Manifest.xml". El programa funciona correctamente porque cuando el robot se encuentra con algún objeto, da marcha atrás, gira aleatoriamente y avanza derecho también con velocidad aleatoria. El problema es que me aparecen dos errores en la ventana "Run" que son:

-Error creating service. Fault Subcode: Duplicate Entry.


-System.FormatException:Input string was not in a correct format.


Probando diferentes manifests para ver si todos generaban los mismos fallos, empezó a salir una pantalla explorer indicando "The robot is not connected by bluetooth. Please configure below". Supongo que debido a que utilice robots reales en vez de simulados sin darme cuenta.

A raíz de tu explicación me surgido una nueva duda, qué diferencia existe entre utilizar el servicio "Generic Differential Drive" con un robot simulado y utilizar el servicio "Simulated Generic Differential Drive". Además he estado viendo los manifest para incluir en el servicio "Generic motor" y no he encontrado ninguno que sea simulado, significa esto que no hay ninguna manera de simular el motor de un robot virtual.

Muchas gracias por todo.
Un saludo, Julia
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:Duda sobre los robots que pueden simularse - 2008/02/12 20:18 Hola, ¡gracias por utilizar el foro!
Yo no suelo usar el VPL para programar con Robotics Studio, sin embargo, sí que conozco gente que lo está usando exclusivamente. Otros, lo que hacen es generar una versión inicial del programa usando VPL y luego continúan modificándolo usando el lenguaje C#.

El programa del tutorial 3 de robótica está diseñado para hacer que un robot cualquiera dotado de un sensor de contacto (Contact Sensor) y una tracción diferencial (Differential Drive) se mueva de forma aleatoria y de marcha atrás y gire cuando se choque con algo.

Entiendo que lo que has hecho es añadir el control manual del robot (Drive-by-Wire) del tutorial 4 en el tutorial 3, ¿no? Si es así, ¿cómo los has conectado? Supongo que antes de añadir los bloques del tutorial 4 en el 3 no tenías los errores que comentas. Así de pronto, lo del “duplicate entry” suena a que tienes el mismo servicio dos veces. El otro error que se refiere a una cadena con formato incorrecto no sé de donde vendrá… Yo siempre uso Visual Studio para depurar los errores, y no sé muy bien como puedes ver más información del error en VPL, probablemente puedas ver la salida detallada de consola con el navegador en la dirección http://localhost:50000/console/output Busca los errores que comentas la próxima vez que ejecutes el programa para ver de donde vienen.

El error que comentas sobre la conexión Bluetooth tiene toda la pinta de que, como dices, incluiste el manifest de un Lego Tribot real y el programa estaba intentando conectarse por Bluetooth al robot real (en vez de mandar los mensajes hacia los servicios simulados).

qué diferencia existe entre utilizar el servicio "Generic Differential Drive" con un robot simulado y utilizar el servicio "Simulated Generic Differential Drive".

Que yo sepa no existe ningún servicio “Simulated Generic Differential Drive”. Lo que tienes es el contrato genérico para una tracción diferencial (denominado GenericDifferentialDrive) y que puedes usar en tu aplicación independientemente del robot que uses finalmente en tiempo de ejecución (real o simulado). Por otro lado tienes un servicio denominado SimulatedDifferentialDrive que implementa el contrato definido en GenericDifferentialDrive para el simulador de MSRS. Por lo tanto, si en tiempo de ejecución quieres que tu aplicación “hable” con el servicio simulado de tracción diferencial tienes que poner el servicio SimulatedDifferentialDrive en tu manifest. Si por el contrario, quieres probar exactamente la misma aplicación, pero con un robot Pioneer real, tendrías que usar el servicio ArcosDifferentialDrive en el manifest (en este caso, si no tienes el robot real conectado al puerto serie del ordenador obtendrás un error, porque tu aplicación no se puede comunicar con los motores reales del robot). En realidad, esto es un poco más complicado porque también tienes que configurar el servicio ArcosCore, pero eso es otra historia.

En resumen, recuerda que en tu aplicación sólo usas servicios genéricos (como GenericDifferentialDrive) y que dependiendo del robot sobre el que quieres ejecutar tu aplicación configuras un manifest que contiene la implementación concreta del servicio genérico (por ejemplo SimulatedDifferentialDrive para ejecutarlo sobre el simulador). Otro aspecto a tener en cuenta es que a veces estas implementaciones no son completas. En el caso concreto de SimulatedDifferentialDrive, la operación RotateDegrees no está implementada).

Además he estado viendo los manifest para incluir en el servicio "Generic motor" y no he encontrado ninguno que sea simulado, significa esto que no hay ninguna manera de simular el motor de un robot virtual.

Sí, de hecho si has conseguido mover tu robot simulado esto significa que has estado usando un servicio de motor simulado para moverlo. En realidad, yo diría que has estado usando el servicio SimulatedDifferentialDrive. Pero si quieres asegurarte de los servicios concretos que se están ejecutando, puedes conectarte a http://localhost:50000 durante la ejecución e ir al apartado “Service Directory”.
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Titulares RSS
 Conscious Robots RSS FeedFuente RSS de Conscious Robots





¿Recuperar contraseña?
¿Quieres registrarte? Hazlo aquí
Mensajes en el Foro
 
Top! Top!