Nedenfor ses en første prototype af banen i udfordring 2. Detaljer omkring banemål, baneelementer, pointgivning osv kommer senere. Regn dog med, at der vil være en flytbar væg.

Hold afstand

Robotten starter i et startområde i bunden af billedet. Robotten skal køre ligeud indtil den registrerer en tværgående væg. Når dette sker, skal robotten standse i en passende afstand fra væggen, f.eks. 10 cm. Når robotten holder stille fjernes væggen, robotten skal køre videre frem til den næste væg og standse og holde helt stille i den samme afstand fra den næste væg.

Robotten skal opføre sig autonomt efter den er blevet startet.

Robotten på videoen nedenfor kører ligeud fremad indtil afstandssensoren ( Sensor Guide, How to Use The Distance Sensor) monteret foran på robotten registrerer den tværgående væg. Når det sker stopper robotten.

Programmet som bestemmer robottens opførsel ser sådan her ud ( Programmet kan hentes som Challenge2.blk), dog havde konstanten pGain værdien 0.01 i kørslen på videoen og ikke 0.08 som vist i programmet:

De to motorer har i dette program fået navnene leftMotor og rightMotor mens afstandssensoren har fået navnet DistanceSensor i konfigurationsfilen som hører til programmet.

I programmet bestemmes motorhastigheden af hvad afstanden er fra robotten til væggen. Det sker på en måde, så hastigheden er 0, altså robotten holder stille, når afstanden er lig 10 cm, som i programmet hedder threshold. Hastigheden beregnes ud fra den aktuelle afstand til væggen ved at bruge såkaldt propertional regulering som kan udtrykkes i ligningerne:

error = distance - threshold
motorPower = pGain*error
Befinder robotten sig i afstanden 40 cm fra væggen og er pGain 0.01 vil motorPower altså være 0.3 og robotten kører stille og roligt fremad. I afstanden 14 cm bliver motorPower 0.04. Robotten standser, som det ses på videoen, netop i denne afstand, da motorPower 0.04 på grund af gnidningsmodstand åbenbart ikke kan få robotten til at køre.

Hvis vi vil have robotten til at stoppe i afstanden præcis 10 cm fra væggen kan vi forsøge med at sætte pGain op f.eks. til 0.08. På videoen nedenfor ses hvad der så sker:

Måske skulle konstanten pGain sættes lidt ned?

Inden programmet blev udformet blev afstandsmålerens præcision undersøgt med følgende program:

I undersøgelsen blev robotten stillet i tre forskellige afstande fra væggen med følgende resultat:

Tæt på væggen er resultatet rimeligt præcist, men længere væk spiller det nok en rolle, at afstandssensoren peger en smule nedad på grund af at baghjulene er en smule større en forhjulene. Måske skulle det justeres.