Paso 6: Detalles de software: odometría y asignación de campos = ¿Dónde estoy?
Una vez que tenemos la información sobre la distancia recorrida por cada rueda en una actualización de tiempo discreto (odometría), podemos calcular las coordenadas de posición del robot con la misma periodicidad sin ninguna referencia externa (dead reckoning).
Algunos antecedentes teóricos sobre cómputo muerto por odometría pueden encontrarse en el libro de Johann Borenstein:
"¿Where Am? -Sensores y métodos para el posicionamiento de robots móviles "
y en las siguientes páginas web:
http://www.seattlerobotics.org/Encoder/200010/dead_reckoning_article.html
El fondo matemático y una explicación profunda del método general utilizado, puede encontrarse en el papel de G.W. Lucas primaria modelo de trayectoria y un Tutorial para el diferencial del manejo de Robot rueda Actuadores Domóticos, disponible en Internet:
http://Rossum.sourceforge.net/Papers/DiffSteer/DiffSteer.html
Algunos algoritmos simplificados también se pueden encontrar en esa misma documentación, por lo que es posible obtener el correcto compromiso entre precisión y velocidad de elaboración, utilizando la capacidad matemática (trigonometría) de serie dsPIC33F.
Puede encontrarse una descripción de las matemáticas que se utiliza para calcular la posición en las fotos adjunta a este paso. La primera de ellas muestra el significado de los símbolos, el segundo muestra las fórmulas con los símbolos. Clic en las casillas junto a cada paso computacional una breve descripción se muestra.
Al final sabemos cuánto el robot se movió en ese intervalo de tiempo como un delta de la orientación, un delta en el eje X y un delta en el eje Y en el campo de referencia cartesianos.
Acumular cada valor delta en su propia variable sabemos que las actuales coordenadas (posición y orientación) de la plataforma.
Para evitar errores computacionales (dividir por cero) y residuos de la época de controlador, un cheque se tiene que hacer de antemano sobre las variables Sr y Sl. Definición de un cuasi-cero valor de mínima aproximaciones computacionales y mecánicas nos podemos simplificar las fórmulas si el robot está viajando en línea recta (el espacio que ocupa la rueda derecha es casi lo mismo que el espacio recorrido por la rueda izquierda) o si está girando alrededor de su eje vertical (el espacio que ocupa la rueda derecha es casi lo mismo que el espacio recorrido por la rueda izquierda pero en una dirección opuesta) , como indica en el diagrama de flujo se muestra en la última foto.
Este video muestra un ejemplo de que la precisión que podemos obtener:
http://www.youtube.com/watch?v=d7KZDPJW5n8
Mapeo de campo
Con datos calculados por las funciones anteriores se realiza un mapeo de campo.
Cada Xms, después de la elaboración de la posición actual, una asignación de campo se realiza dividiendo el campo desconocido en una cuadrícula de celdas de 10 x 10cm. Definir una dimensión de campo máximo de 5 x 5m, obtenemos un 50 x 50 = 2500 matriz de las células. Cada célula se define con un nibble, con una ocupación de memoria total de 1250 Bytes. 16 valores diferentes pueden ser asignados a cada celda:
n = 00 celular desconocido
n = 01-10 celular visitado n veces
n = 11 obstáculo encontrado
n = 12 blanco de gas encontrado
n = 13 luz blanco encontrado
n = 14 sonido blanco encontrado
El robot puede partir de cualquier posición en el campo; serán las coordenadas de referencia (0,0) en su sistema de referencia.
Mapeo de campo es útil para encontrar la mejor explorar la estrategia en un campo desconocido. El robot puede dirigirse a la parte menos explorada del campo (menor valor de "n"), puede ahorrar tiempo al no detener dos veces en un objetivo ya descubierto, puede encontrar el mejor camino para llegar a una coordenada dada y más.