Paso 6: física
La navegación de los robots todo se hace por el sensor PING. Esta información aparecerá como una larga cadena de números enteros. Está en nosotros usar nuestro conocimiento de nuestro robot y mecánica para hacer estos datos relevantes.
Una salida fácil sería simplemente enviar el robot hacia adelante hasta que acercó a cierta distancia mínima segura y luego encender hasta que la distancia delante de él es mayor que la minsafe y la repetición. Estaba tratando de divertirse más con mi arduino que esto :)
Si hacemos el robot girar un círculo y recoger los puntos de datos de nuestra función de PING, podríamos utilizar esta información para representar la planta de una habitación en coordenadas polares si podríamos asociar un ángulo correspondiente.
Resolvemos para ese ángulo asociado mediante la medición de la velocidad angular de una de las ruedas de centro de robots, multiplicando por la circunferencia y la cantidad de tiempo de la rueda giratoria. Relacionando esto a la longitud de arco podemos resolver para el cambio en ángulo (Figura 1).
Una forma más simple, forma más práctica de hacerlo sería para medir la cantidad de veces que toma el robot a hacer una completa vuelta y darse cuenta que su velocidad angular (omega r) multiplicado por el cambio en el tiempo es igual los robots cambian de ángulo (cuadro 2).
Apenas para la diversión, podemos convertir estas coordenadas polares a coordenadas cartesianas (con el uso de los valores de theta calculado) por darse cuenta de que el pecado del ángulo incluido es igual al componente de x dividido por la distancia del sensor PING (P1 y P2 en la figura 3). Resolver para x. Podemos derivar un valor para el mismo uso y coseno.
Juntándolo todo podemos calcular x e y las coordenadas de cada punto de datos capturados por el sensor PING (cuadro 4). Permite iniciar con datos de 120 puntos para un análisis completo.
Mi problema es que cuando cambio las pilas, el robot girará a velocidad diferente. Además, como la batería muere el robot girará más lento. El tiempo que toma hacer un 360 completo en una constante global facilita medir y vuelva a introducir el retardo correcto en su programa.
Es posible monitorear la corriente de los motores son dibujo, pero si está usando modulación de anchura de pulso en sus motores, la corriente se mueve en una onda.
¿Hay una manera para trazar con mayor precisión la ubicación de robots mediante el control de estos datos (corriente, voltaje etc.)?