logo logo
Home arrow Forums...
Monday, 05 January 2009
 
 
English English  Español Español  
Upcoming Events
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
Tag Cloud
Architectures Associations Books Conferences Conscious Consciousness Developer Documentación Documentation Español Howto Machine Machine Consciousness Machines Neuroscience Publications Research Researchers Reviews Robotics Robots Spanish Studio VPL
Spotlight
Conscious-Robots.com Forum  


avionf18
User

Expert Boarder
Posts: 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.
  The administrator has disabled public write access. Please, register to participate in the forum.
Raúl
Moderator

Moderator
Posts: 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
  The administrator has disabled public write access. Please, register to participate in the forum.
avionf18
User

Expert Boarder
Posts: 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?

  The administrator has disabled public write access. Please, register to participate in the forum.
Raúl
Moderator

Moderator
Posts: 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
  The administrator has disabled public write access. Please, register to participate in the forum.
avionf18
User

Expert Boarder
Posts: 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
  The administrator has disabled public write access. Please, register to participate in the forum.
avionf18
User

Expert Boarder
Posts: 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.
  The administrator has disabled public write access. Please, register to participate in the forum.
Raúl
Moderator

Moderator
Posts: 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
  The administrator has disabled public write access. Please, register to participate in the forum.
Raúl
Moderator

Moderator
Posts: 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
  The administrator has disabled public write access. Please, register to participate in the forum.
avionf18
User

Expert Boarder
Posts: 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.
  The administrator has disabled public write access. Please, register to participate in the forum.
Raúl
Moderator

Moderator
Posts: 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
  The administrator has disabled public write access. Please, register to participate in the forum.
Syndicate
 Conscious Robots RSS FeedConscious Robots RSS Feed





Lost Password?
No account yet? Register
Last Posts in Forum
 
Top! Top!