Regular - indsamling af æg

Lasse Deleuran og Ole Caprani
Institut for Datalogi, Aarhus Universitet,
ocaprani@cs.au.dk

Sidst opdateret 10.5.13.

NXT-G programmering af WRO Starter Bot 2013

Til højre for banen er vist et billede af WRO Starter Bot 2013. Klik på billedet og se en video, som viser, hvordan WRO Starter Bot 2013 kører langs kanten af Komodo Island og samler de 4 røde kugler, som ligger yders ved kanten. Kuglerne bringes tilbage til basen og robotten standser i feltet 4, svarende til det antal, som er opsamlet.

NXT-G programmet som samler de 4 røde kugler på videoen hedder Regular2013. Start med at få programmet Regular2013 til at styre WRO Starter Bot 2013:

  1. Hent Regular2013.rbtx
  2. Start det grafiske programmeringsværktøj NXT-G
  3. Vælg profilen Regular2013, som blev oprettet, da programmet Rundt blev afprøvet i Rundt om Komodo Island med robot basebil:
  4. Åben programmet Regular2013.rbtx i fil-menuen. Efter lidt tid vises:
    Tryk OK både i denne boks og de to næste, som vises. Efter dette åbnes programmet og det vises med navnet Regular2013.
  5. Overfør programmet til robotbilen
  6. Anbring robotbilen i basen
  7. Start robotbilen ved at trykke på den orange knap
Det kan være, at robotbilen kører rundt om Komodo Island og samler røde bolde, men det vil nok være lidt heldigt. Det mest sandsynlige vil være, at robotbilen laver en eller flere fejl. Der skal altså nok foretages justeringer i programmet og det er derfor nødvendigt at kende til programmets struktur og detaljer.

Når Regular2013.rbtx åbnes ser det sådan her ud:

De fire første brugerdefinerede programmeringsblokke i programmet får robotten til at køre langs den hvide væg og samle røde bolde op undervejs. Robotten følger altså den samme rute som i programmet Rundt (se Rundt om Komodo Island med robot basebil) indtil robotten er ved enden af den blå pil, som vist på billedet til højre:

Den sidste del af programmet sørger for, at robotten kører ind i et af felterne mærket 2,3 eller 4 afhængig af det antal kugler, som er opsamlet.

Lyssensoren, som er tilsluttet port 3, bruges i programmet til at registrere om robotten er ud for en rød kugle. Det sker i blokken samlKugler. Dobbeltklik på blokken og se hvordan, der inde i løkken, som holder øje med om robotten er nået til en kant, er indføjet en såkaldt forgrening, se eventuelt Forgrening ikon:

Forgreningen indeholder to grene, den øverste, som starter med blokken fremCm og den nederste, som ikke indeholder nogen blokke. Når programmet udfører en forgrening, vælger programmet at udføre en af de to grene. Valget afgøres af den betingelse, som står inden forgreningen. Her sammenlignes værdien af lyssensoren på port 3 med værdien af konstanten rød, som aktuelt er sat til 51. Hvis lysprocenten er større end 51, antages det, at robotten er ud for en rød kugle. I så tilfælde udføres blokkene i den øverste forgrening. Den første blok får robotten til at køre lidt frem, den næste stopper robotten, så svingarmen er ud for den røde kugle. Kør ikonet sætter motor A til at dreje en omgang, så svingarmen drejer en omgang og den røde kugle forhåbentlig havner i kurven.

De tre sidste blokke i forgreningen registrerer at endnu en kugle er opsamlet:

Til at holde rede på hvor mange kugler, som er opsamlet, bruges en variabel med navnet kugler i programmet. I den første blok, et variabel ikon, læses hvor mange kugler, som hidtil er opsamlet, f.eks. 2. Værdien sendes til den næste blok, et matematik ikon, hvor antallet 2 øges med 1 til 3. Resultatet bruges i den tredie blok til at give variablen kugler den nye værdi 3 svarende til det antal røde kugler, som nu er opsamlet. I konfigureringspanelet for de tre ikoner kan detaljerne i beregningen ses.

I blokken Start:

bruges et variabel ikon til at sætte værdien af kugler til 0 inden opsamlingen af kugler begynder. Se hvordan i konfigureringspanelet for variabel ikonet:
Læs mere om hvordan variable defineres og navngives i Variabel ikon.

Når robotten er nået til enden af den blå pil og forhåbentlig har opsamlet de røde kugler, bruges værdien af variablen kugler til at afgøre, hvor langt robotten skal køre for at stoppe i et af felterne mærket 2,3 eller 4. Det sker i en forgrening med tre grene:

Der er tre valgmuligheder i forgreningen svarende til de forskellige værdier 2,3 eller 4. Et klik på de tre orange felter viser de tre forskellige valg. I alle tre valg udføres blokken fremCm, men med forskellige strækninger, nemlig henholdsvis 25, 40 og 55 cm. Længden af de tre strækninger svarer til opmålte afstande fra positionen ved enden af den blå pil og så til de tre forskellige grønne felter. Læs mere om forgreningsikoner med mere end to grene i Forgrening ikon.

Den største udfordring ved opsamlingen af kugler er nok at registrere alle de røde kugler med lyssensoren og kun de røde kugler. I programmet Regular2013 sker det ved at afgøre, om lyssensoren registrerer en lysprocent, som er større end konstanten rød. Det afgørende for om dette netop finder de røde kugler er, at konstanten skal have den rigtige værdi efter lysforholdene, og at lyssensoren er justeret til at pege på kuglerne under kørslen.

For at finde en rigtig værdi for konstanten rød bruges værktøjet View til at måle de lysprocenter, som lyssensoren på port 3 registrerer i forskellige positioner på banen. Se hvordan View aktiveres i Rundt om Komodo Island med robot basebil. Når View er aktiveret, måles lysprocenten f.eks. ud for en rød kugle og ud for et mellemrum imellem kuglerne:

Resultatet var:
Ud fra disse målinger valgtes værdien 51 for rød. Måske lidt tæt på de 47 %, men så kunne det være at også røde bolde på det lave plateau kunne findes. For at kunne ændre værdien af konstanten rød, skal rød defineres i listen over konstanter for programmet Regular2013. Samtidig kan de tre øvrige konstanter hvid, kant og motorstyrke tilføjes til listen. Det sker som vist i Rundt om Komodo Island med robot basebil.

Under tilpasningen af programmet Regular2013.rbtx til WRO Starter Bot 2013 er det nyttigt at kunne stoppe programmet steder, hvor det lige skal konstateres, at robotbilen står rigtigt, inden den skal fortsætte. Til det formål kan der i programmet indføjes ventepunkter, en løkke som venter på, at der trykkes på den orange knap:

med det tilsvarende konfigurationspanel:
Husk, at robotbilens kørsel og især svingarmens bevægelse afhænger af om batteriet lige er blevet ladet op eller det er ved at blive fladt. Sørg for, at batteriet ikke bliver alt for fladt. For at kontrollere batteriets tilstand kan en tilsluttet NXT undersøges ved at trykke på NXT-vindue:
Så vises et vindue, hvor bl.a. batteriniveauet kan aflæses.