logo logo
Inicio arrow Foros...
Monday, 05 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
15.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  


<< Inicio < Anterior 1 2 Siguiente > Final >>
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:problemas con servicio laser - 2008/10/30 14:11 Hola, sí, ese es el código, lo que hace el atributo DSS (lo que va entre corchetes) es indicar que la variable de debajo va a guardar el estado del servicio. Además, la variable InitialStateURI indica la URI del archivo XML de donde se va a cargar el estado inicial.

Los problemas que pueden surgir al respecto, y que hay que controlar en el código, son relativos a los cambios que puedas hacer en tu código que mantiene el estado (es decir, la case StateType) y lo que hay en realidad en en el archivo XML de estado (ControlPanel.Config.xml).

Lo suyo es que inicialmente declares la variable _state a null, como pone en el código que mencionas en tu mensaje, el InitialStatePartner se encarga de cargar el estado a partir del fichero XML indicado, pero si falla (por ejemplo, si el fichero no existe), la variable se quedará a null, por lo que debes añadir algo así en el método start() de tu servicio:

Code:

  if (_state == null ) {    _state crearEstadoInicial();    saveState(); }



Así, si cambias algo en el código del estado, por ejemplo añadir algún parámetro más. No tienes más que borrar el XML que tenías y dejar que se cree de nuevo el estado por defecto en el método crearEstadoInicial(). Recuerda llamar a saveState() para que cuando tengas un estado que quieres guardar para la siguiente ejecución lo guarde en el fichero XML. Mira mi código si quieres para ver la parte esta del "if _state es null"..
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
laso_d
Usuarios

Expert Boarder
Mensajes: 39
graphgraph
Karma: 4  
Re:problemas con servicio laser - 2008/10/30 14:35 Buenas Raul,

Hasta aquí todo correcto, el dashboard me aparece en pantalla pero tengo siguo teniendo problemas con el laser y algún componente del mismo. Por ejemplo, si veo la camara web que tengo simulada pero el laser no, y los botones de acción no funcionan.

El caso es que tengo por un lado el dashboard y por otro un servicio que se encarga de las actividades que va a realizar el robot y todos sus estados, de aquí que no encuentre el dashboardState porque es el servicio aplicacion el que se encarga de realizar los movimientos programados del robot, y notificar los cambios al dashboard, es un poco lioso. El caso es que creo que este servicio tiene problemas de comunicación con el dashboard, puesto que la cámara no tiene nada que ver con este servicio y sí que funciona.

A por cierto, aunque funciona ahora correctamente, no me ha creado el fichero .xml en la carpeta. Seguiré investigando.

Siento ser pesado. Muchas gracias.
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:problemas con servicio laser - 2008/10/30 20:57 Hola, para que te cree el fichero XML con el estado tienes que llamar al método saveState (que es de la clase base del servicio DSS) pasándole como parámetro una variable de la clase que almacena el estado del servicio.

Por ejemplo, si tu variable que tiene el estado se llama _state, puedes hacer algo así:

Code:

  if ( _state == null ) {    _state.Variable1 X;     _state.Variable2 Y;     ...    saveState_state );  }



Al llamar a saveState se tiene que crear un fichero XML que contendrá los valores X, Y, etc. en el lugar indicado por InitialStateURI. Fíjate que uses ServicePaths.MountPoint para hacer referencia al directorio de instalación de Robotics Studio. Si haces todo esto, y no se graba el fichero cuando este no existe debe haber algún error de otro tipo. Mira en Console/Output a ver que pasa..

Sobre lo del Dashboard, por lo que dices entiendo que tu servicio aplicación soporta suscripciones y has modificado el Dashboard para que se suscriba a tu servicio aplicación y muestre datos que obtiene de él, ¿es así?
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
laso_d
Usuarios

Expert Boarder
Mensajes: 39
graphgraph
Karma: 4  
Re:problemas con servicio laser - 2008/10/31 01:03 Hola Raul,

El problema del fichero creo que ya se de donde viene, aunque llevo todo el día mirando el código y no tengo muchas ganas de ponerme a probar. Pero me he dado cuenta de que el path lo tengo completo, es decir desde C: y como me indicas, la ruta es desde el fichero de instalación.

Respecto a mi servicio aplicación está susbscrito al dashboard pero tiene que haber algún problema de comunicación puesto que algo falla. Estoy pensando en eliminar este "intermediario" y pasar directamente a crear el problematico dashboardState. Lo que pasa que ese servicio contiene las tareas a realizar automáticamente por el brazo y las tendré que trasladar al dashboard también.

Respecto al save creo tenerlo todo correcto. Es así:
Code:

         protected override void Start()         {             base.Start();             if (_state == null)             {                 _state = new AplicacionState();                 base.SaveState(_state);             }             Activate(Arbiter.Choice(_movimiemtoPort.Subscribe(_movimientoNot),delegate(SubscribeResponseType resp){},delegate(Fault f){LogError(f);}         ));         }


Donde AplicacionState es la que contiene las variables. ¿Correcto?
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:problemas con servicio laser - 2008/10/31 18:33 Lo del estado tiene buena pinta. Lo que no me termina de cuadrar es lo que dices de la comunicación con el Dashboard. Tendría que ser el Dashboard el que se suscriba a tu servicio de control para mostrar los datos que tú quieras y no al revés. No le veo el sentido a que tu servicio se suscriba al dashboard, de hecho, que yo sepa el servicio Dashboard no acepta suscripciones.
¿Qué es exactamente lo que quieres hacer con el Dashboard? ¿Qué información es la que quieres mostrar?
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
laso_d
Usuarios

Expert Boarder
Mensajes: 39
graphgraph
Karma: 4  
Re:problemas con servicio laser - 2008/10/31 19:45 Buenas Raul,

El tema del archivo .xml esta arreglado y era problema del path, había echo un copy-paste de la ruta que tenía en la sentencia que borré y no me di cuenta de que la ruta era completa.

Por otro lado, lo que quiero hacer es que en el dashboard aparezca el laser, la webcam, el punto y orientación del TCP y el movimento que está realizando el brazo; osea si va a pinzar la pieza, si está haciendo una lectura de la anchura de la pieza, etc...

A parte tengo que tener los métodos para implementar dichas tareas, lectura de mediciones del laser, cálculo del punto medio de pieza, etc... que está ahora mismo en mi servicio aplicación que ahora voy a trasladar al dashboard. Básicamente es esto, solo tengo que tener un boton de ON y otro de OFF para el control de la tarea.

Gracias y saludos.
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:problemas con servicio laser - 2008/11/02 18:00 Hola, pues para lo que quieres hacer te recomiendo que no incluyas ningún código de control en el servicio Dashboard. El Dashboard debe ser sólo para mostrar información de estado de tus otros servicios, pero en ningún momento debería tener que realizar ninguna acción. En otras palabras, tu aplicación debería funcionar perfectamente sin arrancar el servicio Dashboard (eso sí, no verías la ventana correspondiente).

En definitiva, lo que quieres tener el el Dashboard es una GUI que permite ver información en tiempo real y mandar comandos a tus otros servicios. Por lo tanto te tienes que plantear el modelo concreto que servicios que estás implementando (¿quién se comunica con quien y cómo?).

Para el caso que planteas yo veo claro, que tu servicio aplicación debe soportar suscripciones y emitir notificaciones con cambios de estado (para que esos cambios puedan reflejarse en el Dashboard). Simplificando, si tu servicio aplicación tiene por ejemplo tres estados básicos: moviendo_brazo, pinzando y calculando_altura_pieza, cada vez que pase de un estado a otro tiene que mandar una notificación a todos sus suscriptores (entre ellos estará el Dashboard, que a su vez dibujará en la ventana el texto correspondiente a ese estado actualizado).

Para iniciar acciones desde el Dashboard, sólo tienes que añadir los botones correspondientes y cuando se pulsen mandar un mensaje (con la operación concreta) a tu servicio aplicación. Es decir, en tu servicio aplicación debes definir operaciones, que son las que se pueden llamar desde otros servicio. ¿Me he explicado?
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
laso_d
Usuarios

Expert Boarder
Mensajes: 39
graphgraph
Karma: 4  
Re:problemas con servicio laser - 2008/11/06 00:55 Hola,

Por fin buenas noticias. He conseguido eliminar el error de dashboardState. He comenzado de cero y no se donde estaría el fallo, el caso es que funciona.

Pero el caso es que no me aparezen los datos del laser en el dashboard y la webcam solo aparece en el dashboard cuando la selecciono en la simulación eligiendola en el menú camera. Voy a ver si me leo otra vez los tutoriales de subscripción de servicios porque está ahí el problema.

A parte solo me ejecuta la primera tarea que tiene programada, pero me dá que eso tiene que ver con un swithc case del que no estoy muy convencido.

Muchas gracias por todo, esto ya coge color y va en marcha.

Saludos.
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:problemas con servicio laser - 2008/11/06 12:10 Hola, me alegro de que vaya tomando forma.. A veces es bastante dificil depurar el código.. Por lo que comentas parece efectivamente que es algo del modelo de suscripción que no está implementado bien. Fíjate en el código original del Dashboard y del laser simulado para ver como implementan ellos el modelo de suscripción. Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
<< Inicio < Anterior 1 2 Siguiente > Final >>
Titulares RSS
 Conscious Robots RSS FeedFuente RSS de Conscious Robots





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