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?

  1. 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.
  2. 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.
  3. 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.
  4. Bal oldali korrekció Ha a bal oldali szenzor érzékel vonalat, hasonlóan, de balra fordítja el a robotot.
  5. 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.
  6. 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.

Vissza