Paso 4: El Software de código abierto
http://www.microchip.com/Stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=81
Todo el proyecto está disponible como software libre en Google Code
http://code.Google.com/p/dspid33/
Consulte allí la versión más reciente comentario, descripciones, etc..
El programa se describe paso a paso dentro del código. Para tener un alto nivel de comentarios y un código más legible, en cada punto importante allí es un número entre corchetes (por ejemplo: [7]) como una referencia a un archivo externo (por ejemplo: descrEng.txt) en el proyecto MPLAB.
El diagrama muestra la arquitectura general de los procedimientos de control del tablero de dsNav y las estrategias de navegación en la base del proyecto.
Los controladores de motor pueden verse como cajas negras de la velocidad de las ruedas. La parte del supervisor del programa envía la velocidad de referencia (VeldDesX: desea velocidad). Los módulos de captura de entrada del microcontrolador obtener pulsos de los encoders conectados al eje del motor y la velocidad de giro de los motores se derivan (VelMesX: mide la velocidad). Combinando cada 1ms que esto valores en el control de PID "Velocidad PID" obtenemos el valor PWM adecuado para mantener la velocidad deseada de cada rueda individual.
Los módulos QEI (interfaz de codificador de cuadratura) volver el A y el B pulsos de los codificadores y dar a la función de supervisor la dirección itinerante y el número de pulsos en modo x 4 (contando los bordes de levantamiento y que cae de A señal y señal B: 2 x 2 = 4).
Multiplicar al número de pulsos por una K que indica el espacio viajado cada impulso codificador único, obtenemos la distancia recorrida por las ruedas de derecha e izquierdas cada 10ms. El supervisor esto combina informaciones de viaje y se aplica el procedimiento de cómputo muerto para obtener las coordenadas de posición medida del bot: Xmes, Ymes, θMes (ángulo de orientación).
El supervisor recibe comando de navegación desde fuera por la interfaz en serie (telemetría).
Pueden aplicarse diferentes estrategias:
A - viaje a una velocidad dada en una dirección dada (VelDes, θDes).
B - viaje hacia un punto con coordenadas XDes, YDes.
C - viaje para una distancia dada en una dirección dada (DistDes, θDes).
Modo : con los "interruptores de control lógico" en la posición 1, el control de PID "Ángulo PID" es utilizado por las funciones de supervisor. Éste combina el ángulo θDes con la θMes de ángulo medido calculado por el procedimiento de odometría, para obtener el valor de la ω de la velocidad angular de rotación del vehículo sobre su eje vertical, necesario para corregir el error de orientación.
El valor de DeltaV es proporcional a ω. Ha agregado a VelDes para obtener la velocidad de la rueda izquierda y resta a VelDes para obtener la velocidad de la rueda derecha, con el fin de mantener el título correspondiente al valor de θDes, mientras que el centro de la robusteza todavía está viajando a velocidad de VelDes.
B modo : con los "interruptores de control lógico" en la posición 2, la velocidad deseada VelDes es calculada por el control del PID "Dist PID" y se utiliza como en modo a. La entrada de medida para este PID (DistMes) se calcula en función de las coordenadas actuales y las coordenadas de destino. La θDes del ángulo de orientación deseada también viene desde el mismo procedimiento y se utiliza como entrada de referencia para el "Ángulo de PID". La referencia de entrada para "Dist PID" es 0, lo que significa que se alcanza el destino. Con ω y VelDes disponibles, el control de velocidad de las ruedas funciona en modo a.
C de modo : con los "interruptores de control lógico" en la posición 2, el destino cordinates Xdes, Ydes se calculan una vez al principio como una función de parámetros de entrada DistDes, θDes. Después de todo va como en el modo B