Crear un controlador difuso - 2008/03/12 12:31Hola, soy un estudiante de universidad de 4º de informática. Me han encargado una práctica IA para implementar un controlador Difuso. He decidido implementarlo de MSRS, ya que tengo un nivel basico y me gustaría profundizar en este entorno un poco más.
Para ello he planteado el proyecto de la siguiente manera:
-MANIFIESTO DE SIMULACION: donde cargo el mundo virtual ,osea,el laberinto,el robot.
-MANIFIESTO DE CONTROL DIFUSO: Aqui donde creo los iteradores de movimiento, iteradores bumpers y SONAR. Lo importante, el CONTROL DIFUSO con el SONAR y los bumpers. -AÑADO EL CONTROLPANEL AL MANIFIESTO DE LA SIMULACION
ROBOT DE LA SIMULACIÓN: PIONNER 3DX
EL PROBLEMA: LA COMUNICACIÓN DEL SONAR CON EL MANIFIESTO DE CONTROL DIFUSO.
Es que cargo el manifiesto del Sonar de Raul y no conecta con el manifiesto del ControlPadPanel. No se lo que me ocurre. Además me gustaría que alguíen me orientase como realizar la comunicación del array que vienen los valores de los transductores de los SONARES.
The administrator has disabled public write access. Please, register to participate in the
forum.
Raúl
Moderator Moderator
Posts: 444
Karma: 6
Re:Crear un controlador difuso - 2008/03/12 22:17Hola, parece un buen enfoque.. El problema del contro panel es lo que te comentaba en el otro mensaje, que cambié el nombre del servicio y tienes una versión nueva que se llama Cranium Dashboard disponible en descargas dentro del paquete ExplorerSimSonar Application. Perdón por la confusión.. tengo que actualizar la sección de descargas un día de estos..
El array de doubles que tiene el estado del servicio de sonar corresponde a las lecturas de cada uno de los transductores sonar del anillo frontal de sonar simulado. Cada uno indica una distancia en milímetros.
Mira el esquema que hay en la descripción del servicio:
La posición 0 del array corresponde a la medición del transducer sonar que está más a la derecha (a 90 grados). La posición 7 del array corresponde al transductor que está a la izquierda a -90 grados del centro.
¿Qué es lo que quieres conseguir exactamente con el controlador basado en lógica difusa?
The administrator has disabled public write access. Please, register to participate in the
forum.
avionf18
User Expert Boarder
Posts: 24
Karma: 3
Re:Crear un controlador difuso - 2008/03/13 01:37El proyecto va de una simulación de un robot en marte. A tráves del sonar y el bumper, voy captando las variables de distancia y de contacto. Para sacar etiquetas de muy lejos, cerca, muy cerca. Despues aplicaria el controlador. Que por ahora no lo he planteado, primero quiero simular el problema. Osea controlar todas la variables de mi control y tener generadas las situaciones en las que se modifican las variables.
Ahora todas el controladores difusos los quiero implementar en el mismo modulo donde controlo los iteradores del movimiento diferencial de PIONEER. Por comodidad de implementación.
¿Que te parece el planteamiento?
The administrator has disabled public write access. Please, register to participate in the
forum.
Raúl
Moderator Moderator
Posts: 444
Karma: 6
Re:Crear un controlador difuso - 2008/03/13 11:07Suena interesante... Ya nos contarás como va funcionando.. Ahora que si te llevas el robot de verdad a Marte no creo que te funcionara el sonar muy bien. No sé como de densa es la atmósfera de marte, pero seguramente habría que ajustar los trasductores sonar para calcular distancias en base a la velocidad de propagación de los ultrasonidos en la atmósfera marciana, aunque creo que ese es el menor de nuestros problemas
El controlador difuso lo quiero ejecutar dentro del manipulador del sonar, vamos esto:
private void SonarHandler(Sonar.SonarState notificacion) { LogInfo(LogGroups.Console, "Medida del transductor 1:" + notificacion.DistanceMeasurements[1]); //Aqui viene el Control difuso }
Esta idea la saco en el que un controlador difuso necesita una entrada de una funcion sensorial, en este caso es el sonar. Y cada vez que haya una notificación en el sonar se obtengan unas salidas, en este caso serán movimientos del robot.
UN SALUDO
The administrator has disabled public write access. Please, register to participate in the
forum.
avionf18
User Expert Boarder
Posts: 24
Karma: 3
Re:Crear un controlador difuso - 2008/03/26 15:00Cual es el metodo que me marca la posición del robot en el mundo virtual, es que no lo encuentro. Es que me hace falta para indicar el destino y el final del trayecto.
The administrator has disabled public write access. Please, register to participate in the
forum.
Para la realización del control difuso yo creo que es mejor que te bases en una secuencia de medidas para aplicar el algoritmo. Quiero decir que si generas una acción cada vez que te llegue una lectura de sonar el robot no parará de oscilar. Debes mantener las acciones durante cierto tiempo para que resulte un comportamiento más efectivo.
Aunque puedes empezar con un enfoque más reactivo, en el que sólo tengas en cuenta la última lectura del sonar. En cualquier caso, no desencadenes una acción por cada lectura (ten en cuenta que te llegarán varias lecturas por segundo, y las lecturas de sonar muy cercanas en el tiempo son muy similares y no te van a proporcionar información relevante para tener que cambiar la acción que estás ejecutando en ese instante).
The administrator has disabled public write access. Please, register to participate in the
forum.
Raúl
Moderator Moderator
Posts: 444
Karma: 6
Re:Crear un controlador difuso - 2008/03/26 15:53Para obtener la posición del robot en el simulador (¡esto sólo vale para el simulador!) puedes forzar que se actualice el estado del servicio drive:
The administrator has disabled public write access. Please, register to participate in the
forum.
avionf18
User Expert Boarder
Posts: 24
Karma: 3
Re:Crear un controlador difuso - 2008/03/26 19:22La segunda parte la comprendo, pero la primera no entiendo con lo de enviar una notificación al servicio drive. Si yo lo que espero es información de ese servicio. NO lo entiendo.
The administrator has disabled public write access. Please, register to participate in the
forum.
Raúl
Moderator Moderator
Posts: 444
Karma: 6
Re:Crear un controlador difuso - 2008/03/27 16:01Ops. En realidad es que se me olvidó comentarte que la primera parte es un truco para forzar a que se actualize el estado del servicio Drive. Vamos que obligas a que se llame al método DriveStateUpdate en el momento que tu quieras.
Es que si no haces eso, cuando uses las variables X e Y pueden estar desactualizadas. De esta forma, si mandas el getRequest justo antes de usar las variables X e Y te aseguras que éstas se acaban de actualizar con el último valor que tenía el servicio Drive.
La verdad es que este es un truco que sólo vale para el simulador, porque en un entorno real no puedes obtener las coordenadas de posición del robot de una manera simple. Lo que se hace es aplicar algoritmos de localización (SLAM - Simultaneous Lozalization and Mapping) para estimar la posición del robot en el mundo real.Raúl Arrabales Moreno. conscious-robots.com/raul
The administrator has disabled public write access. Please, register to participate in the
forum.