
13. Útvonalkövetés valós robotok segítségével (57)
13. Útvonalkövetés valós robotok segítségével (57)
Vonalkövetés egy lehetséges algoritmusa
ismételd
menj előre 2 lépést
ha a jobb oldali érzékelő az útvonal színét érzékeli
fordulj a csík mentén jobbra
elágazás vége
ha a bal oldali érzékelő az útvonal színét érzékeli
fordulj a csík mentén balra
elágazás vége
ha elérte a kijáratot
álljon le a program
elágazás vége
ismétlés vége
Vonalkövetés – Egy lehetséges algoritmusa
Pseudokód
plaintext
ISMÉTELD VÉGTELEN SZOR
// 1. Előre lépés
MENJ_ELŐRE(2)
// 2. Jobb oldali szenzor vizsgálata
HA (JOBB_ÉRZÉKELŐ = ÚTVONAL_SZÍN) AKKOR
FORDULJ_CSÍK_MENTÉN_JOBBRA()
VÉGE_HA
// 3. Bal oldali szenzor vizsgálata
HA (BAL_ÉRZÉKELŐ = ÚTVONAL_SZÍN) AKKOR
FORDULJ_CSÍK_MENTÉN_BALRA()
VÉGE_HA
// 4. Kilépés, ha elérte a kijáratot
HA (KIJÁRAT_ÉSZLELÉS = IGAZ) AKKOR
ÁLLJ_LE()
TÖRÖL_ISMÉTLÉS
VÉGE_HA
ISMÉTLÉS_VÉGE
Mit csinál a program?
- Végtelen ciklus A főprogram egy végtelen ismétlésben fut, amíg a kilépési feltétel be nem következik.
- Előrelépés A MENJ_ELŐRE(2) utasítás kb. két kerékfordulatnyi (vagy két logikai "lépés") távolságot tesz meg egyenesben.
- Jobb oldali korrekció Ha a jobb oldali szenzor az útvonalfestés színét érzékeli, a robot a vonal mentén jobbra fordul, ezzel visszakorrigál az út vonalára.
- Bal oldali korrekció Ha a bal oldali szenzor érzékel vonalat, hasonlóan, de balra fordítja el a robotot.
- Kilépés a végén Amint a KIJÁRAT_ÉSZLELÉS feltétel (például mindkét szenzor világos felületet jelez) igaz értéket ad, a ÁLLJ_LE() utasítás megállítja a motorokat, és a ciklus megszakad.
- Kígyózó vonalkövetés A folyamatos "előre–jobbra-balra" váltás eredményezi a karakterisztikus kígyózó mozgást, amely végigköveti a pálya szélét.
Továbblendítő gondolatok
- Próbáld ki, hogyan alakul a mozgás, ha csak 1 lépésenként (MENJ_ELŐRE(1)) haladsz!
- Finomíthatod a fordulás mértékét, például különböző fordulási szögeket kipróbálva.
- Érdemes lehet bevezetni időzítést (VÁRJ(ms)) az egyes lépések közé a simább működésért.