Robot basebil

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

Sidst opdateret 29.8.13.

Bygning af robot basebil

Med udgangspunkt udelukkende i delene i LEGO MINDSTORMS Education NXT Base Set 9797:
har folkene bag nxtprograms.com udviklet Express-Bot, som er fotobaserede byggevejledninger for en robot base med udvidelser.

Udfra ideerne i Express Bot er der lavet en simpel robot basebil bestående af tre moduler: en basebil , en kofanger og en værktøjsmotor. De tre moduler kan bygges ud fra byggevejledninger lavet ved hjælp af værktøjet Lego Digital Designer (LDD). Inden den første byggevejledning kan bruges, skal LDD installeres på maskinen. Når de tre moduler er samlet ser robot basebilen sådan her ud (klik på billedet for at se det i stor størrelse):

De tre moduler basebil, kofanger og værktøjsmotor ser sådan her ud:

De enkelte moduler kan så sættes sammen til sidst eller efterhånden som de bygges. Det betyder, at flere kan være igang med at bygge samtidigt.

Basebil

Hent byggevejledningen for basebilen. Åben byggevejledningen, filen base.lxf, i Lego Digital Designer. Under menuen View skiftes til Building guide mode. Nu viser LDD en byggevejledning i 17 trin, som basebilen kan bygges efter.

Basebil med kofanger bagpå

Hent byggevejledningen for kofangeren. Åben byggevejledningen, filen rear.lxf, i Lego Digital Designer. Under menuen View skiftes til Building guide mode. Nu viser LDD en byggevejledning i 8 trin. Der er desværre ikke mål på de aksler, som skal bruges. I byggevejledningen bruges fire aksler. Akslerne er tre sorte 4'ere og en grå 3'er. Aksler måles ud fra antal huller i teknikbjælker, som vist i NXT Brugervejledning side 80, altså er en 4'er akse lig 4 huller:
Kofangeren monteres bag på basebilen (klik på billedet for at se det i stor størrelse):
Nu skal de to motorer forbindes til de to porte B og C. For at ledningerne ikke skal stritte ud og genere, kan det være bekvemt at føre ledningerne nedenunder NXT'en og vikle dem om kofangeren sådan her - fjern 15'er teknikbjælken inden ledningen vikles om og sæt den på bagefter (klik på billedet for at se det i stor størrelse):

Basebil med værktøjsmotor

Hent byggevejledningen for værktøjsmotor. Åben byggevejledningen, filen motor.lxf, i Lego Digital Designer. Under menuen View skiftes til Building guide mode. Nu viser LDD en byggevejledning i 9 trin. Der er desværre ikke mål på de aksler, som skal bruges. I byggevejledningen bruges to aksler: En sort 6'er og en sort 10'er. Aksler måles ud fra antal huller i teknikbjælker, som vist i NXT Brugervejledning side 80.

Værktøjsmotoren monteres på basebilen, som vist her (klik på billedet for at se det i stor størrelse):

Værktøjsmotoren skal forbindes til port A.

Programmering af robot basebil

1. Programmering af kørsel med basebil

Prøv nu at se, hvordan robot basebilen kører ved at bruge et simpelt program med blot et kør ikon:
I konfigureringspanelet for kør ikonen ses, at bilen er sat til at køre fremad en rotation af hjulet med motorstyrke 75:
Eksperimenter med ændringer i konfigureringspanelet, så bilen bakker, kører længere end en rotation, kører hurtigere, eller drejer. Prøv også med at sætte flere kør ikoner efter hinanden og få på den måde robotbilen til at køre en rute på FLL banen. F. eks. fra basen og hen til opgaven evakueringsskilt - rød rute:
og tilbage til basen igen. Det er svært at få robotbilen til at køre lige, ikke? Prøv med forskellige motorstyrker og undersøg, hvornår robotbilen kører mest lige.

2. Programmering af værktøjsmotor

Prøv nu at undersøge, hvordan værktøjsmotoren på robot basebilen bevæger sig og dermed hvordan "pinden" bevæger sig. Brug et simpelt program med blot et kør ikon:
I konfigureringspanelet for kør ikonen ses, at værktøjsmotoren er sat til at dreje 60 grader med motorstyrke 50 og Retning er sat til at være pilen som peger opad:
Prøv med konfigureringspanelets indstillinger og find ud af, hvilken vej motoren drejer. Eksperimenter med ændringer i konfigureringspanelet for at finde ud af, hvordan pindens bevægelse kan styres. Hvad sker f.eks. hvis pinden forhindres i at dreje det gradantal, som er angivet i konfigurationspanelet?

Anvendelse af brugerdefinerede programmeringsblokke

Når robotbilen skal programmeres til at bevæge sig rundt på banen, kan det være bekvemt at kunne angive strækninger i cm og ikke i rotationer eller grader. Det ser også ud som om det at dreje robotbilen 90 grader skal bruges tit. Derfor kan det være nyttigt en gang for alle at finde ud af, hvor mange grader hjulene skal dreje, for at robotbilen drejer 90 grader. Detaljerne i hvordan robotbilen programmeres til at køre f.eks. 20 cm frem, dreje 90 grader mod uret, osv, kan skjules i såkaldte brugerdefinerede programmeringsblokke. For at vise hvordan brugerdefinerede programmeringsblokke kan bruges i forbindelse med robot basebilen, er der lavet fire programmeringsblokke: frem, drejModUr90, drejMedUr90 og bak. De fire blokke er brugt i et program, kaldet fremOgTilbage, for at illustrere, hvordan de kan bruges til at få robotbilen til at bevæge sig - som det ses på videoen:
Få nu programmet fremOgTilbage til at styre den nybyggede robot basebil:
  1. Hent programmet fremOgTilbage.rbtx
  2. Start programmeringsværktøjet
  3. Gå ind i menuen Rediger:
    og vælg Håndter profiler:
    under Navn skrives et selvvalgt navn, f.eks. FLL. Tryk på Opret og en profil med navnet FLL er oprettet.
  4. Vælg den oprettede profil:
    og åben programmet fremOgTilbage.rbtx i fil-menuen. Efter lidt tid åbnes programmet og det vises med navnet fremOgTilbage.
Overfør programmet til NXT på den nybyggede robot basebil for at se hvordan bilen opfører sig.

Klik på blokken frem og se konfigureringspanelet for frem. Her kan den strækning, som skal køres, angives i cm og motorstyrken angives som et tal imellem 0 og 100:

Prøv også at klikke på de andre blokke og se hvad der skal angives. Eksperimenter med forskellige værdier og se hvordan robotbilen opfører sig.

Prøv nu at eksperimentere med programmer. hvor de fire blokke bruges:

  1. Åben et nyt program:
  2. Tryk på Min palette:
  3. Få de brugerdefinerede blokke frem ved at klikke på den øverste grønne firkant:
  4. Vælg f.eks. blokken frem og anbring blokken i programmet.
Prøv nu at køre korte og lange strækninger og mål efter om robotbilen nu også kører det antal cm, som gives til blokkene. Prøv at lave ruter, som får robotbilen forskellige steder hen på robotbanen.

Ret i brugerdefinerede programmeringsblokke

Dobbeltklik på blokken frem og se, hvad der skjuler sig inde i den brugerdefinerede programmeringsblok:
I det første ikon, matematik ikonen, ganges antal cm, f.eks. 20, med 21,3 ( som kan ses i konfigureringspanelet for matematik ikonen). Resultatet 426 føres via datakablet til antal grader hjulet sættes til at dreje i kør ikonen. Faktoren 21,3 er fundet ved at lade hjulet kører 360 grader, måle strækningen til 16,9 cm og så udregne 360/16,9 grader/cm = 21,3 grader/cm. Hvis faktoren skal ændres, så det passer med den nybyggede basebil, kan det ændres her i konfigureringspanelet for matematik ikonen. Husk at gemme den ændrede udgave af frem:
hvis konstanten 21,3 ændres.

Ikonen bak er næsten som frem, kør ikonet er dog sat til at køre den modsatte retning. Hvis bilen ikke bakker helt det antal cm som angives, skal der ændres i konstanten i matematik ikonen i bak.

Inde i drejMedUr90 er der blot et ikon:

og i konfigurationspanelet for kør ikonen er antal grader sat til 260 og den lille hvide markering under Styring er ført helt ud til venstre, så robotbilen drejer med uret om et centrum som ligger midt imellem hjulene:
Konstanten er fundet ved at lade robotbilen dreje fire gange 90 grader med uret styret af et program med kun drejMedUr90 og så se om bilen nåede en hel omgang rundt:
På videoen ses, at bilen drejer en smule mere end 360 grader, så konstanten skulle måske rettes til 255. Det er altså denne konstant, som skal ændres, hvis den byggede robotbil ikke drejer 90 grader. Husk at gemme den ændrede udgave af drejMedUr90.