logo logo
Inicio arrow Foros...
Sunday, 04 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  


avionf18
Usuarios

Expert Boarder
Mensajes: 24
graphgraph
Karma: 3  
Crear un controlador difuso - 2008/03/12 12:31 Hola, 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.
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:Crear un controlador difuso - 2008/03/12 22:17 Hola, 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:

-> Servicio de Sonar Simulado

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?

¡Ánimo con tu proyecto! Tiene buena pinta..
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
avionf18
Usuarios

Expert Boarder
Mensajes: 24
graphgraph
Karma: 3  
Re:Crear un controlador difuso - 2008/03/13 01:37 El 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?

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

Moderador
Mensajes: 444
graph
Karma: 6  
Re:Crear un controlador difuso - 2008/03/13 11:07 Suena 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

Mensaje editado por: Raúl, el: 2008/03/13 11:08
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
avionf18
Usuarios

Expert Boarder
Mensajes: 24
graphgraph
Karma: 3  
Re:Crear un controlador difuso - 2008/03/26 13:20 Quiero comentarte una idea Raul a ver que opinas:

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
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
avionf18
Usuarios

Expert Boarder
Mensajes: 24
graphgraph
Karma: 3  
Re:Crear un controlador difuso - 2008/03/26 15:00 Cual 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.
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:Crear un controlador difuso - 2008/03/26 15:49 Ten en cuenta que el vector empieza con el índice cero:

Code:

 notificacion.DistanceMeasurements[0]



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).

Mensaje editado por: Raúl, el: 2008/03/26 15:49
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:Crear un controlador difuso - 2008/03/26 15:53 Para 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:

Code:

  pxdrive.Get getRequest = new pxdrive.Get(); _drivePort.Post(getRequest); yield return Arbiter.Choice(getRequest.ResponsePort,        DriveStateUpdate,        delegate(Fault fault) { } );



Y en el manejador correspondiente recoger los valores de las posición X e Y:

Code:

  private void DriveStateUpdate(pxdrive.DriveDifferentialTwoWheelState s) {     float w s.LeftWheel.MotorState.Pose.Orientation.W;     _state.= (s.LeftWheel.MotorState.Pose.Position.+                        s.RightWheel.MotorState.Pose.Position.X) / 2;     _state.= (s.LeftWheel.MotorState.Pose.Position.+                       s.RightWheel.MotorState.Pose.Position.Z) / 2;     _state.Theta = (float)(Math.Acos(w) * 180 Math.PI);      if (s.LeftWheel.MotorState.Pose.Orientation.0)                 _state.Theta = -_state.Theta;             }



Mensaje editado por: Raúl, el: 2008/03/26 15:54
Raúl Arrabales Moreno. conscious-robots.com/raul
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
avionf18
Usuarios

Expert Boarder
Mensajes: 24
graphgraph
Karma: 3  
Re:Crear un controlador difuso - 2008/03/26 19:22 La 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.
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 444
graph
Karma: 6  
Re:Crear un controlador difuso - 2008/03/27 16:01 Ops. 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
  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!