Regular - Robot basebil

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

Sidst opdateret 10.5.13.

NXT-G programmering af robot basebil

Nu kan det afprøves, om den nybyggede robot basebil kan kører rundt omkring Komodo Island langs den hvide væg. Der er lavet et NXT-G program, kaldet Rundt, som kan få robotbilen til at følge først den gule pil, så den røde og sidst den blå pil, så bilen kommer rundt omkring Komodo Island som vist (klik på billedet for at se en video af en kørsel):

Start med at få NXT-G programmet Rundt til at styre den nybyggede robot:
  1. Hent Rundt.rbtx
  2. Start det grafiske programmeringsværktøj NXT-G
  3. Gå ind i menuen Rediger:
    og vælg Håndter profiler:
    under Navn skrives et selvvalgt navn, f.eks. som her Regular2013. Tryk på Opret og en profil med navnet Regular2013 er oprettet.
  4. Vælg den oprettede profil:
  5. Åben programmet Rundt.rbtx i fil-menuen. Efter lidt tid åbnes programmet og det vises med navnet Rundt.
  6. Overfør programmet til robotbilen
  7. Anbring robotbilen i basen
  8. Start robotbilen ved at trykke på den orange knap
Det kan være, at robotbilen kører rundt om Komodo Island som planlagt, men det vil nok være lidt heldigt. Det mest sandsynlige vil være, at robotbilen laver en eller flere fejl. Der skal derfor foretages justeringer i programmet og det er derfor nødvendigt at kende til programmets struktur og detaljer.

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

Programmet består af en sekvens af brugerdefinerede programmeringsblokke. Blokkene udføres efter hinanden startende med fremVenstre, som får robotbilen til at køre frem og samtidig holde lidt til venstre, så bilen så at sige glider langs væggen. De tre første blokke får bilen til at følge den gule pil på ruten:

Den første blok får bilen til at køre fremad og holde lidt til venstre. Den næste blok får programmet til at vente indtil bilen i sin kørsel fremad mod venstre er nået hen til den hvide væg, så bilen i sin bevægelse fremad glider langs med den hvide væg. Den tredie blok får programmet til at vente på, at bilen i sin bevægelse langs væggen er ud for kanten altså for enden af den gule pil.

De fem næste blokke styrer bilen langs den røde pil:

De to drej blokke får bilen til at dreje ved start og slut af den røde pil. De midterste tre blokke får bilen til at køre langs den hvide endevæg til kanten for enden af den røde pil.

De sidste fire blokke får bilen til at følge den blå pil og stoppe:

Dobbeltklik nu på blokken fremVenstre. Så åbnes en ny side med navnet fremVenstre. Siden viser to blokke, som får bilen til at bevæge sig fremad en lille smule mod venstre:

Den første blok, et konstant ikon, har navnet motorkraft. Værdien af motorkraft bruges som motorstyrke i den anden blok, kør ikonet. Værdien af motorkraft er sat til 60. Det kan ses i konfigureringspanelet for konstant ikonet, som ses nederst, når konstant ionet er markeret med et museklik:

Dobbeltklik nu på blokkene ventHvid og ventKant, for at se, hvad der gemmer sig i dem:
Begge blokke er såkaldte venteløkker, en løkke som får programmet til at vente indtil en betingelse er opfyldt, se Løkke-ikon.

I ventHvid er betingelsen, som undersøges ved hvert gennemløb af løkken, om lyssensoren's værdi er større end værdien af konstanten hvid. I konfigureringspanelet for konstanten hvid kan det ses, at hvid har værdien 60. Det betyder, at programmet bliver i løkken, indtil bilen i sin kørsel fremad mod venstre kommer så tæt på væggen, at lyssensoren registrerer en lysprocent på over 60. Se eventuelt Lyssensor-ikon og Sammenlignings-ikon.

I ventKant er betingelsen om lyssensoren's værdi er mindre end værdien af konstanten kant, som i konfigureringspanelet kan ses at have værdien 50. Der ventes altså indtil lyssensoren under kørslen har registreret en lysprocent på under 50.

Værdierne 60 for konstanten hvid og 50 for konstanten kant er fundet ved at måle, hvilke lysprocenter lyssensoren registrerer, når bilen er tæt på den hvide væg, ved en kant for enden af en hvid væg og ved stop ud for trappen.

Til at måle lysprocenterne er NXT værktøjet View blevet brugt. For at finde View blandt de valg, som kan foretages lige efter NXT er tændt, bruges de to lysegrå knapper og på NXT:

Når View vises midt på skærmen, vil et tryk på den orange knap vise valget Sound dB. Brug de to lysegrå knapper til at finde Reflected Light. Et tryk på den orange knap vælger Reflected Light og skærmen viser, at port nummeret skal vælges for den port lyssensoren er tilsluttet. Da det er Port 1 lyssensoren er tilsluttet, og denne allerede er valgt, kan endnu et tryk på orange vælge porten og skærmen viser en lysprocent f.eks. som her 34 %:
Robotbilen sættes nu med lyssensoren tæt på en hvid væg:
Nu måles lysprocenten ud for hvid, f.eks. 65 %:
Da lysprocenten kan variere rundt langs væggene, sættes konstanten hvid noget lavere end 65 nemlig 60. Når lyssensoren registrerer en værdi over værdien for hvid, er bilen altså tæt på væggen.

Dernæst sættes robotbilen ved en kant for enden af en væg og ved stop punktet ud for trappen:

Lysprocenten efter kant er f.eks. 33 % og lysprocenten ved stop er noget højere f.eks. 46 %:
Ud fra de to målinger sættes værdien af kant til 50, så der er plads til lidt variation i de målte lysprocenter.

Måleværktøjet View standses ved et antal tryk på den mørkegrå firkantede knap .

Ændring af konstantværdier

I programmet bruges tre konstanter med navnene motorkraft, hvid og kant. Motorkraft fastsætter den motorstyrke robotbilen kører med i alle kør ikoner. Konstanterne hvid og kant bruges til at konstatere om bilen er tæt på en hvid væg eller ved kanten for enden af en væg. De tre konstanter har værdierne 60, 60 og 50 i programmet Rundt. Hvis konstanterne skal ændres til at have nye værdier skal Rediger Menuen åbnes:
Vælg Definer konstanter:
og i vinduet Rediger konstanter trykkes på Opret:
Skriv hvid i feltet Navn, Datatype sættes til Tal, og værdien vælges f.eks. til 60. Så trykkes på Ok. Opret de to øvrige konstanter på samme vis og afslut ved et tryk på Luk. Hver gang konstanter oprettes eller redigeres skal programmet gemmes. Fordelen ved at bruge en konstant, som f.eks. motorstyrke, er, at der kan eksperimenteres med forskellige værdier uden at ændre i programmet og uden at detaljerne i programmet skal kendes. Læs mere om konstanter under Konstant-ikon.

Blokken fremCm

I blokken drej:
Optræder en blok med navnet fremCm. Blokken får bilen til at køre et antal centimeter frem. I konfigureringspanelet for fremCm angives antallet af centimeter f.eks. 10:
Klik på fremCm og se, hvad der skjuler sig inde i den brugerdefinerede programmeringsblok:
I det første ikon, matematik ikonen, ganges antal cm, f.eks. 10, med 21,8 ( som kan ses i konfigureringspanelet for matematik ikonen). Resultatet 218 føres via datakablet til antal grader hjulet sættes til at dreje i kør ikonen. Faktoren 21,8 er fundet ved at lade hjulet kører 360 grader, måle strækningen til 16,5 cm og så udregne 360/16,5 grader/cm = 21,8 grader/cm. Hvis faktoren skal ændres, så det passer med den byggede basebil, kan det ændres her i konfigureringspanelet for matematik ikonen. Husk at gemme den ændrede udgave af fremCm.