HMI

Uit RoboWiki
Ga naar: navigatie, zoeken

Een grafische voorstelling in real time van nuttige robot data !

Jh hmi main.png

Na het knipperend ledje, is seriele communicatie de eerstvolgende stap om je programmeerkunsten naar een hoger niveau te tillen. De klassieke terminal-programma's zijn dan een onmisbaar instrument om je robot te kunnen "debuggen". Deze hebben echter het nadeel dat de data als tekst wordt weergegeven, terwijl soms een grafische weergave nuttiger zou zijn. Voor dit specifiek probleem heb ik een programma geschreven dat typische "robot data" grafisch gaat weergeven. Een aantal parameters die via de seriele poort worden ontvangen kunnen in verschillende vensters op een grafische wijze voorgesteld worden. Ook odometrie-gegevens worden in real-time geplot, zodat de afgelegde baan van de robot zichtbaar wordt. Daarnaast worden ook sensor-data op een lopende grafiek getoond. Rechts zie een screen-shot van het hoofdscherm. In de volgende zip file vindt je dit programma. Het zou moeten werken onder XP en Win7. Media:RoboHMI.zip

Hoe de data doorsturen ?

De data wordt binnengelezen via de seriele poort als een string. Deze moet als volgt opgebouwd zijn : een tag "heartbeat" #*#*#, dan de tag [Data], daarna volgt dan de benaming van de parameter + de waarde :

SL = Actuele snelheid van de motor rechts, uitgedrukt in tics/25 ms
SR = Actuele snelheid van de motor links, uitgedrukt in tics/25 ms
PR = De PWM waarde van de rechter motor, in % uitgedrukt
PR = De PWM waarde van de linker motor, in % uitgedrukt
P_x = De actuele X-coordinaat van de robotpositie, in mm uitgedrukt.
P_y = De actuele Y-coordinaat van de robotpositie, in mm uitgedrukt.
Hd = Heading op basis van odometrie, in graden uitgedrukt.
Hg = Heading op basis van gyroscoop, in graden uitgedrukt.
Hk = Heading op basis van magnetisch kompas, in graden uitgedrukt.
p = Programma nummer
s = state van het programma
S0 = Meting van Sharp afstandsensor 0
Enz.

Uiteindelijk sluit je de string af met [/Data]. Deze string wordt dus voortdurend geupdate en doorgestuurd. Mijn seriele verbinding kan dit ongeveer aan 10 Hz volgen (X-bee, 38400 baud). Met de tag [log] en de tag [error] kan jet boodschappen loggen en foutmeldingen weergeven. Jh hmi terminal.png

Odometrie gegevens plotten in een X-Y grafiek.

Op het scherm "Odometrie" kan nu de afgelegde baan van de robot gevolgd worden. Hiertoe wordt er telkens een lijnstuk geplot tussen 2 opeenvolgende robot coördinaten. Je kan een aantal startpositie's kiezen van waaruit de robot vertrekt. Het mooie van dit systeem is dat deze odometrie eveneens zouden moeten werken als de robot met zijn wielen van de grond is ! Bijgevolg kan je rijopdrachten uittesten als de robot stilstaat ! In de bijgaande plot zie de afgelegde baan voor het H&W rijden met slalom. Jh hmi odo.png

Snelheid en PWM waarden tijdens deze run

Ook is er een scherm voorzien dat voortdurend gemeten data in een lopende grafiek plaatst. Hier een voorbeeld van de snelheid en PWM waarden van beide motoren tijdens de H&W -run : Jh hmi speed.png