Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Libreria externa se "desconecta" y no responde

Iniciado por Capiflash, 15 de Febrero de 2008, 01:51:57 PM

« anterior - próximo »

Capiflash

El titulo es el mejor que se me ocurrio la verdad. El problema es el siguiente. Estoy desarrollando una unidad de control para un robot simulado ( con lógica difusa ) , Su único cometido es no chocarse nunca , da igual a donde vaya o que haga , pero siempre ha de estar en movimiento.

El problema : Yo leo los 180 sensores del "frente" del robot  , divididos en dos zonas ( izquierda y derecha , con 90º para cada una ). Hallo la suma de las distancias de cada zona , y le paso a la libreria los 90 valores de la zona con menos obstaculos. Los 90 resultados de la libreria los azumulo y luego divido entre 90 , y ese es el giro que efectuo , lo mismo con la velocidad.

Sin motivo aparente ( o que yo vea :( ) , la libreria empieza a devolverme valores extraños , en al consola veo lo siguiente :

--------------------GIRANDO A LA Derecha -------
Giro : -2.35099e-38
Velocidad : 0.164444
Distancias en la DERECHA : 9.18685
Distancias en la IZQUIERDA : 2.07312

Como es lógico , ha de girar a la derecha pues es la zona con las distancias mas grandes ( menos poblada ) , pero el resultado del giro es irreal total . Pero mas confundido me quedo aun cuando en el fichero de log que me crea la aplicacion me sale esto :


Punto del laser : 105 / Distancia : 5.000000  / Giro FFLL : 0.000000  / Velocidad FFLL : 0.000000 / Giro acumulado : 0.000000 / Velocidad acumulada : 2.600000

Por que sin motivos aparentes la libreria devuelve valores "imposibles" ? Los valores leidos por los sensores están dentro del rango en las variables de la libreria , lo unico que se me ocurre es que la libreria se "aturulle" y no le de tiempo a procesar esos datos ya que ha de hacer 180 calculos ( 90 para el giro y 90 para la velocidad ) en 250 milisegundos.... pero vamos , creo que eso es bastante improbable con las máquinas de hoy en dia no?

Otra peculiaridad es que el programa a veces es capaz de remontar el vuelo , y despues de recibir unos 30 valores o asi ( si el robot aun no se ha chocado ) pues vuelve a recibir valores correctos y "retoma" el control.

A ver si alguien me echa una mano o al menos me pone su hombro para llorar xDD

Saludos y siento el tochopost.

P.D. Si quereis ver el codigo o el fichero de log completo decidlo y lo subo a algun lado , que aqui no veo opciones para adjuntar ficheros

tamat

no sería mejor que en lugar de hablarnos de robots y sensores nos dijeras qué lenguaje has usado, de qué modo estan conectados los módulos (usas sockets a pelo? RPC?), o qué librerias usas.
Por un stratos menos tenso

Capiflash

C++ como lenguaje.
Player/stage es el simulador , asi que he usado las librerias que proporciona para la conexion con el robot.

Capiflash







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.