Programmering af LEGO robot sumo bryder

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

Sidst opdateret 2.4.17.

Sumo bryder program opdager modstander

Når den simple EV3 baserede sumo bryder af typen sumoBot:
styres af programmet, SumoBot fra projektet Sumo.ev3:
benyttes en helt enkelt strategi for hvordan sumo bryderen skal opføre sig:
Programmet sørger ganske enkelt for, at robotten ikke kører ud af ringen. Der er ikke noget i programmet, som får robotten til at reagere på modstanderen.

Monteres en ultralydssensor foran på sumoBot:

kan sensoren bruges til at finde modstanderen, som skitseret her:
Når modstanderen er fundet kan modstanderen f.eks. angribes som her:
Programmet som styrer robotten med ultralydssensoren ser sådan her ud:
Ultralydssensoren er tilsluttet port 4, farvesensoren port 3. Programmet findes i projektet Sumo.ev3 og det hedder SumoUltraBot.

I programmets løkke-blok benyttes to forgrening-blokke og registreringer fra de to sensorer til at afgøre hvilken situation robotten er i og dermed afgøre hvilken handling robotten skal udføre:

  • Modstanderen tættere på end 30 cm og robot ikke ved hvid kant: Angrib modstander ved at køre fremad
  • Modstanderen længere væk end 30 cm og robot ikke ved hvid kant: Drej en smule rundt på stedet
  • Robot ved hvid kant: Kør væk fra kant ved at bakke og dreje på stedet
Se eventuelt under EV3 hjælp > Programmeringsblokke > Flow-blokke > Forgrening:

Generel skabelon for sumo bryder program

I programmet SumoBot fra projektet Sumo.ev3:
benyttes en vent-blok, så programmet venter i vent-blokken indtil farvesensoren har registreret en hvid farve, hvorefter robotten undviger fra ringens hvide kant. Den samme funktionalitet kunne opnås ved at benytte en forgrening-blok:
I programmet bruges en forgrening-blok, som på basis af den aktuelle farve afgør om programmet skal bakke og dreje lidt for at komme fri af ringens kant (farven hvid, øverste gren) eller blot fortsætte (farve ikke hvid, nederste gren).

De to viste programmer får robotten til at opføre sig ens. For at holde øje med kanten kan programmet altså enten bruge en vent-blok eller en forgrening-blok. Programmet med vent-blokken er måske simplere at forstå og er måske at foretrække til en start. Brug af vent-blokken til at holde øje med den hvide kant kan dog ikke bruges, hvis programmet samtidig skal holde øje med modstanderen ved hjælp af ultralydssensoren, da det kun er muligt at holde øje med én sensor i en vent-blok.

Så hvis programmet skal holde øje med flere sensorer samtidigt er det nødvendigt med én forgrening-blok for hver sensor, f.eks. én for farvesensoren og én for ultralydsensoren. At have flere forgrening-blokke er altså en generel skabelon for et sumo bryder program som holder øje med flere sensorer samtidigt.

Eksempler på brug af program skabelon

Ved flere lejligheder er sumo brydende robotter blevet brugt til at give et publikum en fornemmelse af autonome robotter som på egen hånd kæmper om at blive i en sumo ring. Til det formål er der bygget fire forskellige sumo brydere, en gul, en grøn, en blå og en rød:
De fire robotter kæmper alle mod hinanden og publikum kan så sætte en indsats, et stykke slik, på hvilken af de fire robotter som vinder. En kamp imellem de fire robotter kan ses her:
Alle fire robotter er foran udstyret med to farvesensorer som det tydeligt ses på den grønne robot. De to farvesensorer gør det muligt at lave en undvigemanøvrene ved den hvide kant, så robotten bakker væk fra kanten til højre eller venstre afhængig af hvilken farvesensor, som ser kanten. Det ses her, hvor den gule robot registrerer kanten med den venstre farvesensor, hvorefter robotten bakker og drejer på stedet til højre:
Programmet som styrer den gule robot ser sådan her ud:
I programmet bruges den generelle skabelon med én forgrening-blok for hver sensor, altså her en forgrening-blok for venstre sensor på port 1 og en forgrening-blok for højre sensor på port 4. Forskellen i de to undvigemanøvre er, at robotten drejer på stedet til højre henholdsvis venstre afhængig af den farvesensor som registrerer den hvide kant.

Den røde robot opfører sig sådan her:

Programmet som styrer den røde robot har de samme to forgreninger som er vist i programmet for den gule robot. Derudover er der yderligere én forgrening i løkke-blokken:
Forgreningen holder øje med tiden (ved hjælp af timer 1) og hvert 5. sekund drejer robotten på stedet til højre som det ses på videoen. På den måde skifter robotten retning hvert 5. sekund. Se eventuelt under EV3 hjælp >Programmeringsblokke>Sensorblokke>Timer>Brug af timeren:

Den blå robot opfører sig sådan her:

Programmet som styrer den blå robot har de samme to forgreninger som er vist i programmet for den gule robot. Derudover er der yderligere én forgrening i løkke-blokken:
Forgreningen holder øje med modstanderen (ved hjælp af ultralydssensoren på port 3) og mens den holder øje drejer den på stedet som det ses på videoen.

Den grønne robot opfører sig sådan her:

Programmet som styrer den grønne robot har de samme to forgreninger som er vist i programmet for den gule robot. Derudover er der yderligere én forgrening i løkke-blokken:
Forgreningen holder øje med modstanderen (ved hjælp af ultralydssensoren på port 3) og mens den holder øje drejer den omkring det ene hjul, som det ses på videoen, nemlig hjulet som styres af motoren på port C. Der er altså ikke den store forskel på programmet for den blå og grønne robot.

Når blå og grøn robot møder hinanden kan det se sådan her ud:

Programmerne for de fire robotter kan findes i projektet SumoPrograms.ev3.