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
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.
C++ como lenguaje.
Player/stage es el simulador , asi que he usado las librerias que proporciona para la conexion con el robot.
Bueno , solo decir que ya lo arregle.
Saludos