Robot med én kontrolenhed og to motorer

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

Sidst opdateret 28.8.18.

Dette klip fra videoen LEGO WeDo 2.0: Turtle Graphics #1 viser en mobil WeDo robot med én kontrolenhed og to motorer. De to hjul på hver side af robotten styres af hver af de to motorer. Det betyder, at robotten som det ses på videoen kan programmeres til køre ligeud frem og dreje på stedet til højre:
Med to motorer kan robotten også programmeres til at bakke eller dreje i buer til højre og venstre.

Til at eksperimentere med programmering af kørsel med to motorer kan der bruges en meget simpel robot, som vist her (klik på billeder for at se detaljer):

Direkte kontrol af den mobile robot

Når modellen er bygget, kan motor ikoner bruges til at programmere en direkte kontrol af robotten til at dreje på stedet enten til højre eller venstre, eller til at standse:
Et tryk på en af de tre grønne pile aktiverer et af de tre motor ikoner. Den direkte kontrol består altså af valget imellem en ud af tre styringskommandoer til robotten.

Motor ikonet, som sætter rotationshastigheden for en motor, kan bruges til at bestemme hastigheden robotten drejer med på stedet, f.eks sådan her:

Hastigheden et et tal imellem 0 og 8. Eksperimenteres med forskellige hastigheder og skift imellem at dreje til højre og venstre kan det ses, at robotten ved et skift kører en anelse videre i samme retning som før inden robotten skifter retning. Det skyldes, at det motor ikonet, der sætter hastighed, også igangsætter motoren med den satte hastighed, men i den retning, som motoren havde før. Skal denne lille unøjagtighed undgås kan hastigheden sættes i en selvstændig styrekommando sådan her:
Føjes denne kommando som ændrer hastigheden til de tre øvrige kommandoer, er der konstrueret et program som tillader en direkte kontrol med fire styringskommandoer.

Hvis robotten holdes med bunden opad, kan det ses, hvilken vej motorerne drejede, når robotten drejer til højre eller venstre. Og det kan ses, at de to motorer drejer samme vej rundt, med eller mod uret. De to motor ikoner igangsætter altså begge motorer. For at få robotten til at køre frem eller bakke skal det kunne angives i en styrekommando, at de to motorer skal dreje hver sin vej rundt: Det skal altså være muligt at styre motorerne enkeltvis, så den ene motor igangsættes i én retning og den anden motor igangsættes i den anden retning.

For at kunne igangsætte motorerne hver for sig skal de to motorer kunne udpeges enkeltvis. Det sker ved at bruge de to farver rød og orange farver sådan her:

Hjulene på de to motorer udpeges altså af farverne rød og orange sådan her:
Hvis en motor er tilsluttet rød port igangsættes den med dette motor ikon:
Er det motoren på den orange port, der skal igangsættes, sker det sådan her:
Figuren ovenover et motor ikon med de 6 felter fås frem ved at holde en finger på ikonen eller holde musen nede indtil de seks felter viser sig. Skift imellem farverne sker ved at trykke på figuren med felterne. Prøv at se hvordan robotten bevæger sig, når de to motorer igangsættes enkeltvis. De aktuelle motor hastigheder kan ses på skærmen sådan her:
Med de nye muligheder kan der tilføjes to styrekommandoer, som får robotten til at køre frem og tilbage, så der nu er seks styrekommandoer i den direkte kontrol:

Undgå det lille drej i starten af kør frem og tilbage

Eksperimenteres med de seks styrekommandoer opdages det hurtigt, at kommandoerne, der får robotten til at køre frem og tilbage begge får robotten til at starte med et lille drej. Det skyldes, at den ene motor, den røde, startes af det første motor ikon, før den anden motor, den orange, startes af det andet motor ikon.

På videoen LEGO WeDo 2.0 Turtle Graphics #3 (Programmierung) kan det ses, hvordan det lille drej i starten af kør frem og tilbage kan undgås. Der skal bruges et send besked ikon og to start ved besked ikoner sådan her for at få de to motor ikoner til at starte de to motorer samtidigt og dermed undgå det lille drej:

Med denne teknik kan de seks styrekommandoer udformes sådan her:

Robotten kører ikke lige

Eksperimenteres med de seks styrekommandoer opdages formentlig hurtigt, at robotten ikke kører lige, når kommandoerne Frem og Bak aktiveres. Når der bruges to motorer til at bevæge robotten frem og tilbage, kan det være et problem at få robotten til at køre lige, da de to motorer styres af to uafhængige motor ikoner uden synkronisering imellem den hastighed de to motorer drejer med.

Se f.eks. Why doesn’t my robot drive straight? hvor det beskrives, at selv LEGO Mindstorms EV3 robotter med to motorer er svære at få til at køre lige ud, selvom der findes motor ikoner til EV3 programmering, der synkroniserer to motorer, så de har ens dreje hastighed.

I artiklen gives en liste af råd til at få en EV3 robot til at køre ligeud. Nogle af rådene kan også bruges på WeDo robotter med to motorer:

  • Prøv at udskifte motorerne indtil der findes to, så robotten kører mest muligt ligeud.
  • Vægtfordeling i LEGO modellen, er der mere vægt på det ene hjul?
  • Kontroller at hjulene er ens sat på akser, osv. Undgå bøjede akser.
  • Med to hjul på underlaget skal der være mindst ét tredie punkt som rører underlaget. Eksperimenter med placeringen af dette.
  • To forskellige hjul kan have lidt forskellig omkreds, prøv at skifte ud.
  • Fjern støv og snavs fra hjulene.
  • Reducer hastigheden. Lav eventuelt en gearing for at få hastigheden ned som f.eks. på robotten i WeDo 2.0 example vehicle with 2 motors:
Mon ikke rådene kan bruges, så den meget simple robot, som er blevet brugt, kan bringes til at køre mere lige ud.

Programmeret kontrol af robotten

Når robotten styres med de seks styrekommandoer, opdages det hurtigt, at der er en lille forsinkelse fra der trykkes på den grønne pil til motoren reagerer, og dermed f.eks. til robotten stopper. Det kan gøre det svært med direkte kontrol at få robotten til at køre præcist, som det ønskes.

En måde at få robotten til at køre præcist som ønsket, er at lave et program, der består af en række send besked ikoner efter hinanden hver efterfulgt af vent ikonet og et motor ikon, som standser motoren:

De første tre ikon får robotten til at køre ligeud i 5 sekunder, de tre næste får robotten til at dreje til højre i 0,7 sekunder og dernæst kører robotten ligeud i 1 sekund. Alle start ved besked kommandoer er som tidligere:
Når robotten styres af programmet kører den sådan her:
Robottens hastighed er sat til 1 inden kørslen ved hjælp af den nederste styrekommando. Ved at eksperimentere med hastighed og tider kan en sådan programmeret kontrol af robotten få robotten til at følge en ønsket rute ret præcist, hvis robotten starter i samme udgangsposition hver gang.

Den direkte kontrol med de seks styrekommandoer kan altså udvides med styrekommandoer, som aktiverer en sekvens af ikoner, et program, som får robotten til at køre en ønsket rute.