Stap 4: De Open sourcesoftware
http://www.microchip.com/Stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=81
Het hele project is beschikbaar als open source op Google Code
http://code.Google.com/p/dspid33/
Raadpleeg er voor de meest recente versie, commentaar, beschrijvingen, enz.
Het programma wordt stap voor stap beschreven binnen de code. Om een hoog niveau van commentaar en een meer leesbare code, aan elke belangrijke punt er is een getal tussen haakjes (bv: [7]) als een verwijzing naar een extern bestand (dat wil zeggen: descrEng.txt) in het project van MPLAB.
Het diagram toont de algemene architectuur van de controleprocedures van de Raad van de dsNav en de strategieën van de navigatie aan de basis van het project toegepast.
De motor controllers kunnen worden gezien als de zwarte dozen die voor de snelheid van de wielen zorgen. Het deel van de toezichthouder van het programma stuurt ze de referentiesnelheid (VeldDesX: gewenste snelheid). De Input Capture modules van de microcontroller krijgen pulsen van de encoders aangesloten op de motoras en ontlenen van het toerental van de motoren (VelMesX: gemeten snelheid). Het combineren van elke 1ms die dit in het besturingselement van de PID "Snelheid PID waarden" krijgen we de juiste PWM-waarde om de gewenste snelheid van elk één wiel te houden.
De modules QEI (Quadrature Encoder Interface) krijgen zowel de A- en B-pulsen van de encoders en geven terug naar de functie van toezichthouder de reizende richting en het aantal pulsen in 4 x modus (afgezien van de stijgende en dalende randen van signaal A en signaal B: 2 x 2 = 4).
Te vermenigvuldigen met het aantal pulsen door een K die de ruimte reisde voor elke één encoder pulse aangeeft, krijgen we de afstand reisde door de rechter en linker wielen elke 10ms. De toezichthouder combineert deze informatie reizen en de dead reckoning-procedure is van toepassing met het oog op de gemeten positie coördinaten van het bot: Xmes, Ymes, θMes (richting hoek).
De toezichthouder ontvangt opdracht van de navigatie van buiten door seriële interface (telemetrie).
Verschillende strategieën kunnen worden toegepast:
A - reizen met een bepaalde snelheid in een bepaalde richting (VelDes, θDes).
B - reizen naar een bepaald punt met coördinaten XDes, YDes.
C - reizen voor een bepaalde afstand in een bepaalde richting (DistDes, θDes).
Mode A : met de "logische controle switches" in positie 1, alleen de controle van de PID "Hoek PID" wordt gebruikt door de supervisor-functies. Deze combineert de gewenste hoek-θDes met de θMes van de gemeten hoek berekend door odometry procedure, teneinde de waarde van de rotatie hoeksnelheid ω van het voertuig om de verticale as, die nodig zijn om de afdrukstand fout te corrigeren.
De waarde van DeltaV is evenredig aan ω. Het heeft toegevoegd aan VelDes te verkrijgen van de snelheid van het linker wiel en afgetrokken tot VelDes te verkrijgen van de snelheid van het juiste wiel, zodat de kop overeenkomt met θDes waarde, terwijl het midden van de robot is nog steeds het reizen op snelheid van de VelDes.
Modus B : met de "logische controle switches" in positie 2, de gewenste snelheid VelDes wordt berekend door het PID-besturingselement "Dist PID" en het wordt gebruikt zoals in de modus A. De gemeten input voor deze PID (DistMes) wordt berekend als een functie van de huidige coördinaten en de coördinaten van de bestemming. De gewenste afdrukstand hoek θDes komt ook uit dezelfde procedure en het wordt gebruikt als referentie-ingang voor "Hoek PID". De verwijzing ingang voor "Dist PID" 0 is, betekenis die de bestemming is bereikt. Met ω en VelDes beschikbaar, de controle van de snelheid van de wielen wordt uitgevoerd zoals in de modus A.
Modus C : met de "logische controle schakelaars" in positie 2, de bestemming cordinates Xdes, Ydes worden berekend zodra aan het begin als een functie van de invoerparameters DistDes, θDes. Na dat alles zoals in de modus B gaat