Re:Consulta sobre MSRS - 2008/04/29 18:55Buenas, el fallo de "Servivces" en vez de "Services" fue al escribir el error aquí en el foro. En el programa está bien puesto. Estoy probando los servicios por separado con otros manifest y otros servicios, y me siguen dando diferentes problemas Me da la sensación de que me falta declarar cosas en los programas, seguiré haciendo pruebas a ver si encuentro algún caso en el que no me salgan errores y consiga que se mueva el robot!!
Muchas gracias Raúl Un saludo
El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Julia
Usuarios Senior Boarder
Mensajes: 17
Karma: 3
Re:Consulta sobre MSRS - 2008/04/29 19:55 He consegido que mi servicio entornografico funcione con el tutorial RoboticsTutorial3 y todo va de maravilla. Además he conseguido hacer funcionar entornografico con el servicio Explorer sin que salga ningún error y puedo conectarme a sumulateddifferencialdrive (El motor por fin se pone en On, este fallo me salía desde el principio) para mover el robot. El problema es que utilizando el servicio Explorer debería moverse el robot solo y... no se mueve, solo lo hace cuando lo manejo desde el simpledashboard. Si he conseguido que entornografico funcione correctamente con al menos un servicio significa que el fallo tiene que estar en el servicio que hace el control del robot, no?
El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador Moderador
Mensajes: 325
Karma: 4
Re:Consulta sobre MSRS - 2008/04/30 11:54Hola, me alegro de que al fin te funcione el servicio EntornoGrafico.. Pues sí, como dices, si va bien en conjunción con otros servicios es que el problema debe estar en el servicio Explorer. Dices que no se mueve el robot solo, pero también te dan errores al arrancarlo, ¿no?
Ten en cuenta que si las acciones que has programado en Explorer son en respuesta a algunas condiciones específicas de los sensores y estas no se dan al iniciar el servicio, pues el robot nunca empieza a moverse (esto lo digo porque me ha pasado a mi ya más de una vez.. ).
Voy a ver si tengo tiempo de echar un vistazo al código de la RoboChamps (el reto Amazed Challenge en concreto) porque a lo mejor vienen ejemplos de un controlador autónomo que te puede servir para tu servicio Explorer..Raúl Arrabales Moreno. conscious-robots.com
El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Julia
Usuarios Senior Boarder
Mensajes: 17
Karma: 3
Re:Consulta sobre MSRS - 2008/05/02 21:03Finalmente ya he descubierto cual era el error, el problema estaba en la clave de NET Framework SDK. La clave estaba guardada en una ubicación diferente a la que buscaba el servicio al construir una solución. El error salía en la ventana "Output" de MS Visual Studio y no me había dado ni cuenta hasta ayer
Desde que cambie la clave al sitio correcto no me han vuelto a salir los errores de los partners pero... mi robot sigue sin moverse el solo...
Un saludo
El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador Moderador
Mensajes: 325
Karma: 4
Re:Consulta sobre MSRS - 2008/05/03 17:20Vaya, no se me había ocurrido que fuera eso.. Pero, ¿te refieres a la clave para firmar los ensamblados? ¿Al mrisamples.snk que viene en los ejemplos (directorio samples) de Robotics Studio? Yo siempre uso el mismo fichero que viene con los tutoriales, el mrisamples.snk.
Bueno, si ya no tienes errores de compilación, ahora para saber por qué no se mueve el robot lo que puedes hacer para depurar tu servicio es poner trazas.. Puedes usar los métodos que vienen con MSRS como LogInfo y LogError. Estos métodos escriben mensajes en el console-output. ¡Suerte!Raúl Arrabales Moreno. conscious-robots.com
El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
La clave que me estaba dando problemas no era mrisamples.snk sino la de .NET Framework SDK v2.0, no copie el texto del error pero hacía referencia explícita a esta clave e incluso indicaba la ubicación correcta de la misma. Por lo visto es un fallo a la hora de instalarlo, la ubicación que le puse no era la esperada por el programa.
Respecto a lo de que mi robot no se mueve, he ido añadiendo trazas (Mensajes mediante LogInfo) a lo largo de todo el programa cada vez que paso de un estado a otro pero sigo sin obtener resultados. En la ventana del Command Prompt aparecen los mensajes de que los manifest se han cargado correctamente y se queda justo ahí, no sale nada más. Mirando las salidas a través del Panel de Control no sale ningún error. No sale nada más, es como si no se pusiese en funcionamiento.
Un pregunta a parte de este tema, cuando se utiliza InitialStatePartner, el archivo que yo defino para almacenar el estado debe ser creado a priori. Por ejemplo si yo hago: [InitialStatePartner(Optional = true, ServiceUri = "InitialState.xml")] El archivo "InitialState.xml" tiene que existir o se crea automaticamente. Esta duda ya me surgió cuando me pasaste el programa MazeSimulator para echarle un vistazo. El programa se estrellaba y me salía un error porque no encontraba la ubicación que yo había puesto, así que como no necesitaba en ese momento guardar el estado suprimi esta parte. Pero ahora me ha vuelto a surgir la duda porque he estado echando un vistazo al foro de MSRS y en una de las respuestas sobre este atributo hacen referencia a DSS Manifest editor para crear un nuevo estado y asociarlo al manifest. La verdad es que no entiendo como sería exactamente...
Muchísimas gracias Un saludo
El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
No hace falta que exista el fichero de configuración XML. Lo que pasa es que si no existe (o no está en el camino especificado) tienes que controlarlo, porque si no te puede llevar a resultados inesperados. Por ejemplo, inicialmente haces esto para definir el partner de estado inicial:
Como dices que el fichero de configuración es opcional, el servicio arrancará aunque no encuentre el fichero, pero no debes olvidarte de inicializar el estado de alguna forma, porque si no se quedará como null.
Por lo tanto, en el método start() puedes hacer lo siguiente (preguntar si el estado el null (no se ha leido el fichero de configuración) o si se ha creado el objeto estado (sí se ha leído correctamente el fichero de configuración)):
De esta forma, si se leyó el fichero se rellena sola la variable _state. Pero si no se leyó el fichero de estado, entonces llamo a mi método CreateDefaultState() que lo que hace es crear un estado por defecto y rellenarlo en la variable _state.
Otro problema que suele suceder con el estado es que cuando estás programando un servicio cambias o añades variables nuevas en el estado y entonces el fichero de estado que tenías creado de antes ya no es válido. Así que vigila que cada vez que cambies algo de la definición de tu estado lo añadas también en el fichero XML que tengas guardado (o lo borras y creas uno nuevo desde tu servicio).
Para crear el fichero de estado desde tu servicio sólo tienes que hacer lo siguiente:
Code:
// Save the default state to disk
SaveState(_state);