Étape 4: Le logiciel Open Source
http://www.Microchip.com/Stellent/idcplg?IdcService=SS_GET_PAGE&NodeId=81
L’ensemble du projet est disponible en open source sur Google Code
http://code.google.com/p/dspid33/
Veuillez consulter là pour la dernière version, les commentaires, les descriptions, etc.
Le programme est décrit étape par étape, à l’intérieur du code. Afin d’avoir un niveau élevé de commenter et d’un code plus lisible, à chaque point important il est un nombre entre parenthèses (par exemple: [7]) comme une référence à un fichier externe (p. ex.: descrEng.txt) dans le projet MPLAB.
Le diagramme montre l’architecture globale de dsNav Conseil d’administration, les procédures de contrôle et les stratégies de navigation appliquées à la base du projet.
Les contrôleurs de moteurs peuvent être considérées comme des boîtes noires qui s’occupent de la vitesse des roues. La partie du superviseur du programme transmet à la vitesse de référence (VeldDesX : désiré de vélocité). Les modules Input Capture du microcontrôleur impulsions en retire les encodeurs reliés à l’axe du moteur et calculer la vitesse de rotation des moteurs (VelMesX : mesuré la vitesse). Combinant tous 1ms que cela les valeurs dans le contrôle PID « PID de vitesse », nous obtenons la bonne valeur PWM pour maintenir la vitesse désirée de chaque roue unique.
Les modules QEI (Interface d’encodeur en Quadrature) revenir le A et le B des encodeurs et donner à la fonction de surveillant la direction itinérante et le nombre d’impulsions en mode x 4 (en comptant les bords fronts montants et descendants du signal A et le signal b: 2 x 2 = 4).
Multipliant le nombre d’impulsions par un K qui indique l’espace s’est rendu pour chaque impulsion seul encodeur, on obtient la distance parcourue par les roues droites et gauches chaque 10ms. Le maître d’oeuvre cela combine des informations de voyage et applique la procédure de lestime afin d’obtenir les coordonnées de position mesurée du bot : θMes Xmes, Ymes, (angle d’orientation).
Le superviseur reçoit la commande de navigation de dehors par interface série (télémétrie).
Différentes stratégies peuvent être appliquées :
A - voyage à une vitesse donnée dans une direction donnée (VelDes, θDes).
B - voyage vers un point donné avec coordonnées XDes, YDes.
C - voyage pour une distance donnée dans une direction donnée (DistDes, θDes).
Mode A : avec les « commutateurs de commande logique"en position 1, seul le contrôle PID"Angle PID"est utilisé par les fonctions de superviseur. Celui-ci combine l’angle désiré θDes avec l’angle mesuré θMes calculé par la procédure de l’odométrie, afin d’obtenir la valeur de la rotation vitesse angulaire ω du véhicule autour de son axe vertical, nécessaire pour corriger l’erreur d’orientation.
La valeur du DeltaV est proportionnelle à ω. Il a ajouté à VelDes pour obtenir la vitesse de la roue gauche et soustrait à VelDes pour obtenir la vitesse de la roue droite, afin de maintenir la position correspondant à la valeur de θDes, tandis que le centre du robot est toujours en voyage à la vitesse de VelDes.
Mode B : avec les « commutateurs de commande logique"en position 2, la vitesse désirée VelDes est calculée par le contrôle PID"Dist PID"et il est utilisé comme mode A. L’entrée mesurée pour ce PID (DistMes) est calculée en fonction des coordonnées actuelles et les coordonnées de destination. L’orientation désirée angle θDes provient aussi de la même procédure et il est utilisé comme entrée de référence pour « Angle PID ». La référence d’entrée pour « Dist PID » est 0, ce qui signifie que la destination est atteinte. Avec ω et VelDes disponible, le régulateur de vitesse des roues fonctionne comme en mode A.
Mode C : avec les "commandes logiques" en position 2, la destination cordinates Xdes, Ydes sont calculés une fois au début de l’année en fonction des paramètres d’entrée DistDes, θDes. Après cela, tout se passe comme en mode B