Robotika

mBot

mBot – Senzor za praćenje linije

Senzor za praćenje linije nalazi se ispod robota. Sastoji od dva senzora, senzora 1 i 2, od kojih svaki ima infracrveni odašiljač i infracrveni prijemnik. Infracrveni odašiljač neprekidno emitira infracrvenu svjetlost tijekom kretanja mBota. Infracrveno svjetlo se reflektira kada se mBot susreće s bijelom ili nekom drugom svijetlom površinom i tada prijemnik prima infracrveni signal i upravljačkoj pločici šalje vrijednost 1. Ako se infracrveno svjetlo apsorbira ili se ne može odraziti (na tamnim površinama), prijemnik neće primiti infracrveni signal, ali šalje vrijednost 0. Raspon detekcije je 1 do 2 cm. S obzirom na to da postoje dva senzora te da svaki od njih može detektirati nalazi li se na svijetloj (1) ili tamnoj površini (0), četiri su moguće vrijednosti koje senzor može poslati upravljačkoj pločici:

  1. Oba senzora su na tamnoj podlozi (senzor1 = 0 i senzor2 = 0) – senzor šalje vrijednost 0
  2. Prvi senzor je na tamnoj podlozi, a drugi na svijetloj (senzor1 = 0 i senzor2 = 1) – senzor šalje vrijednost 1
  3. Prvi senzor je na svijetloj podlozi, a drugi na tamnoj (senzor1 = 1 i senzor2 = 0) – senzor šalje vrijednost 2
  4. Oba senzora su na svijetloj podlozi (senzor1 = 1 i senzor2 = 1) – senzor šalje vrijednost 3

Ako je robot predaleko od površine (udaljeniji od 2 centimetara), infracrveno svijetlo se ne može reflektirati pa senzor šalje vrijednost 0 kao u slučaju kad se mBot nalazi na tamnoj površini.

Zadatak

Izradite program koji će se izvršavati pomoću senzora za praćenje linije. Neka se robot kreće ravno po tamnoj površini (nepravilnoj tamnoj liniji).  Kada jednim od dva senzora detektira svijetlu podlogu (to se dogodi na mjestima gdje je linija po kojoj se robot kreće zakrivljena) ovisno kojom stranom je van linije neka robot skrene lijevo ili desno i na taj se način nastavlja kretati po liniji. Kad dođe do kraja linije neka se zaustavi. Brzina kretanja robota neka bude 100.

Rješenje

Objašnjenje

Ovim jednostavnim programom zadali smo da se mBot počne kretati nakon pritiska na tipkalo (wait until on bord button pressed) po tamnoj liniji. Nakon toga definirana su četiri načina kretanja mBota s obzirom na četiri moguće pozicije u kojima se robot može naći. Zbog toga su korištene četiri if then petlje i u svakoj je zadano kako da se robot kreće. Ako su oba senzora na tamnoj podlozi (if line follower Port2 = 0), robot se kreće ravno (run forward at speed 100).

U situacijama kad je linija zakrivljena u lijevo ili desno, jedan od senzora će detektirati da se van linije i da se nalazi na svijetloj podlozi. U tim situacijama će robot skrenuti lijevo ili desno da se vrati na tamnu liniju i nastaviti se kretati ravno. U slučaju lijevog zavoja (kad je prvim senzorom robot na tamnoj, a drugim na svijetloj podlozi), naredba if line follower Port2 = 1 kaže da lijevi motor miruje (set motor M1 speed 0), a desni motor (tj. kotač) da se kreće (set motor M2 speed 100). Tim naredbama smo omogućili robotu da skrene lijevo na stazi. Kad su oba senzora na tamnoj liniji, robot nastavlja ravno. Kad robot naiđe na desni zavoj (prvi senzor detektira svijetlu površinu, a drugi je na tamnoj), program očitava vrijednost 2 (if line follower Port2 = 2). U tom slučaju lijevi kotač se kreće (set motor M1 speed 100), a desni miruje (set motor M2 speed 0) kako bi mBot skrenuo desno.

U slučaju da su oba senzora izvan linije (if line follower Port2 = 3), robot će stati (run forward at speed 0). S obzirom na to da su sve naredbe smještene u forever petlju program će se izvršavati dokle god se robot nalazi na tamnoj liniji.