-
Op het lab van de werktuigkunde hebben ze een robotje gemaakt. De
bedoeling is dat de robot van punt A naar punt B (zie
tekening) kan gaan zonder ergens tegen te botsen. Om dit te kunnen
hebben ze de robot een motor gegeven die in alle richtingen kan gaan. Bovendien
hebben heeft hij sensoren die in alle richtingen kunnen kijken of er een
hindernis kortbij aanwezig is.
-
De robot moet nu nog geprogrammeerd worden! Deze code is gegeven (zie Robot.def):
TYPE RichtingEn = (NOORD, OOST, WEST, ZUID);
DetectieStandAr = ARRAY RinchtingEn OF
BOOLEAN;
(* TRUE als sensor
in die richting een hindernis op korte afstand detecteert *)
(* Deze 2 procedures zijn gegeven en moet je gebruiken (oproepen)
om de robot te besturen
StartMotor zet de motor in richting r aan, de robot
begint te rijden
StopMotor stopt de motor in de bepaalde richting en
de robot komt tot stilstand *)
PROCEDURE StartMotor(r: RichtingEn);
PROCEDURE StopMotor(r: RichtingEn);
(* Deze procedure is ook gegeven: deze procedure wacht tot
1 of meerdere sensors van stand wijzigen
en geeft een datastruktuur terug van het type DetectieStandAr
met de status van elke sensor.
De procedure geeft terug of bestemming b bereikt is
(een TRUE). *)
PROCEDURE GeefStandSensors(VAR d: DetectieStandAr): BOOLEAN;
-
Schrijf een procedure ZoekWeg zodanig dat de robot bestemming
B bereikt.
-
De strategie is als volgt: loop rechtdoor tot wanneer je niet meer kan,
dan loop je omhoog tot je een plaats vindt waar je rechtdoor kan. Vind
je die doorgang niet, dan loop je naar beneden tot je weer een doorgang
vindt om je rechtdoor te verplaatsen.
-
Je mag ervan uitgaan dat B steeds bereikt kan worden.
-
De werking van de robot is gegeven met de Library Robot, namelijk de files
Robot.def (met bovenstaande definities)
en Robot.mod.
-
Copieer beide files naar je directory, maak uw programma in een aparte
module en importeer de procedures met volgende lijn:
FROM Robot IMPORT RichtingEn, DetectieStandAr,
StartMotor, StopMotor, GeefStandSensors;
-
Met dank aan John Lataire en Stijn Vastiau voor het schrijven van de robot.
-
zie Solution voor een tip