Estoy en las primeras etapas de intentar construir un robot que deambula y construye un mapa de su entorno. Estoy usando un Arduino y actualmente tengo un Sharp 2Y0A21 El detector de rango IR se colocó encima de un servo para que pueda funcionar un barrido de 180 grados en incrementos de 10 grados.
El problema es que las lecturas de voltaje del sensor IR de Sharp no son consistentes. Si escribo una aplicación que simplemente envía el valor que lee del sensor a través del puerto serie y lo muestro en mi computadora portátil, colocando el sensor apuntando a un objeto, los valores rebotan.
Observando los valores, puedo ver que tiende a reportar un valor más que el resto, así que escribí una clase SharpReader que toma 20 muestras y luego devuelve el modo de estos valores. Esto ahora significa que obtengo valores más consistentes, pero no tan buenos como me gustaría.
Tengo un código que realiza la exploración de 180 grados y envía el ángulo y la distancia a la serie. Luego tengo un script de python que recibe estos valores y dibuja lo que ve en la pantalla, ignorando cualquier valor en cualquiera de los extremos del rango de sensores. Entonces, al ponerlo frente a una caja, debería dibujar una línea recta en la pantalla, pero no lo hace. La línea está torcida y no siempre torcida, lo que me confirma que son las lecturas las que están desactivadas, no mi código.
He leído en la hoja de datos que es recomendable colocar un condensador (no puedo recordar el valor de manera inmediata) entre las líneas GND y PWR en el IR de Sharp. Intenté forzar las patas del condensador en el conector JST del Sharp IR, pero no hizo ninguna diferencia. Intentaré soldarlo al sensor y ver si eso hace alguna diferencia.
¿Alguien puede recomendar algo más para probar, o estoy esperando demasiado de Sharp IR?
También estoy considerando comprar un segundo servo y Sharp IR y ejecutar dos al mismo tiempo como un par de ojos, luego tratar de tomar un promedio de los dos valores para ver si eso aumenta la precisión.
Por cierto, soy un novato en electrónica, mi experiencia es en programación.