Én robot, to kontrolenheder og to motorer

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

Sidst opdateret 27.8.18.

Med to kontrolenheder og to motorer kan der bygges en robot, hvor de to hjul på hver side af robotten styres af hver af de to motorer og de to motorer er tilsluttet hver deres kontrolenhed. På videoen ses, hvordan sådan en robot både kan køre frem, bakke, dreje på stedet til højre og venstre og dreje i buer:
På videoen styres de to motorer på de to kontrolenheder fra hver deres enhed (PC/iPad/tablet) med direkte kontrol. I det følgende vises, hvordan robotten med de to kontrolenheder kan styres fra én enhed (PC/iPad/tablet).

For at kunne eksperimentere med kørsel kan videoens simple robot bygges. Den er vist her (klik på billeder for at se detaljer):

Bygning af motorfastgørelse og gearing er inspireret af modellen 1. Slingre fra Modelbiblioteket.

Direkte kontrol af den mobile robot

Når modellen er bygget, kan motor ikoner umniddelbart bruges til at programmere en direkte kontrol af én af de to kontrolenheder fra en enhed (PC/iPad/tablet). Der kan konstrueres et program, som tillader en direkte styring af hver af de to kontrolenheder hver for sig med de fire styringskommandoer:
Et tryk på en af de fire grønne pile aktiverer en af de fire kommandoer. Den direkte kontrol består altså af valget imellem en ud af fire styringskommandoer til robotten.

Eksperimenteres med en sådan direkte kontrol opdages, hvordan robotten drejer, når den ene motor står stille og den anden bevæger sig frem eller tilbage.

Skal begge motorer kunne aktiveres, skal begge kontrolenheder tilknyttes enheden (PC/iPad/tablet) samtidigt. Prøves de fire styrekommandoer, når begge kontrolenheder er tilsluttet, opdages det at begge motorer aktiveres, når et motor ikon aktiveres. F.eks. ved:

aktiveres begge motorer, så de drejer samme vej, nemlig mod uret. Resultatet er, at robotten drejer på stedet.

Hvis robotten skal køre frem eller bakke, skal de to motorer kunne igangsættes, så de drejer hver sin vej. Det skal altså være muligt at kunne styre motorerne enkeltvis, så de to motorer kan igangsættes f.eks. i hver sin retning. For at kunne igangsætte motorerne hver for sig, skal motorer, som er tilsluttet kontrolenheder, kunne udpeges enkeltvis. For den første kontrolenhed som tilsluttes enheden (PC/iPad/tablet) sker det ved at bruge de to farver rød og orange sådan her:

Hvis en motor er tilsluttet rød port igangsættes den med dette motor ikon:
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.

For den anden kontrolenhed som tilsluttes enheden (PC/iPad/tablet) sker det ved at bruge de to farver mørk og lys grøn sådan her:

Hvis en motor er tilsluttet lys grøn port igangsættes den med dette motor ikon:

Hvis kontrolenheden til højre på billedet af robotten nedenfor tilsluttes først og kontrolenheden til venstre tilsluttes sidst, skal hjulene på de to motorer altså udpeges af farverne rød og lys grøn sådan her:
Prøv at eksperimentere med 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 lyse grønne, 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 et 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 denne 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 af 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.