Průběh:

Konfigurace robota:

První trik, který budeme používat je, že se nebudeme snažit, aby robot skutečně sledovat čáru.

Místo toho se budeme snažit sledovat okraj čáry.

Proč? Protože pokud budeme sledovat černou čáru samotnou, pak robot uvidí pouze černou barvu a až vyjede z čáry „uvidí bílou barvu„ nevíme, na které straně čáry jsme.

Jsme na levé nebo pravé straně čáry?

Sledujeme-li však levý okraj čáry, pak můžeme říci, jakým způsobem jsme mimo okraj.

Pokud světelný senzor “vidí bílou”, pak víme, že jsme nalevo od okraje čáry, pokud “vidí černou”, pak víme, že jsme napravo od okraje čáry.

Potřebujeme vědět, jaké hodnoty čidlo vrátí, když “vidí bílou” a když “vidí černou”.

Třípolohová konfigurace:

Nedokonalost předešlého typu regulace lze vylepšit rozdělením naší číselné osy do tří oblastí.

takže

  • pokud úroveň světla je nižší než 43 chceme aby robot zahnul doleva.
  • pokud úroveň světla je mezi 44 a 47 chceme aby robot jel rovně.
  • pokud úroveň světla je vyšší než 47 chceme aby robot zahnul doprava.

Toho lze v Mindstorms NXT-G snadno docílit pomocí vypínače (ano / ne) v rámci přepínače. Musíme vlastně jen rozdělit rozsah místo na dva na tři díly .

Činnost robota:

Naprogramovali jsme robota jako stopaře tak, aby sledoval čáru na okruhu pomocí PID regulace. Spustili jsme robota a sledovali, jak provede úlohu. Pokud nesledoval čáru a zatoulával se, pohyboval se divoce, pak jsme změnili hodnoty na PID regulaci. Měnili jsme hodnoty na čidle, dokud jsme nenašli takovou, která umožnila robotu sledovat čáru se znatelnými výkyvy, ale ne nějak divokými. V případě našeho robota velká změna nastane, když robot narazí na zatáčku. Jak robot reaguje na zatáčku, znamená, jak bude opravovat chyby a jaký bude překmit některým směrem. Museli jsme opravit překmit a určit překmit zpět na druhou stranu. Vzhledem k tomu, robot reaguje na chyby tak, že bude mít tendenci oscilovat kolem požadované polohy. “Doba ustálení” je, jak dlouho trvá robotu vrátit se zpátky k čáře, když narazí na velkou změnu.

Feedback:

Cíl projektu byl splněn. Výsledný robot stopař je schopný sledovat (levy okraj) černé čáry na různých podkladech a při různé šířce čáry. Stavba byla relativně snadná, postupovali jsme dle veřejně dostupného návodu. Ten nám poskytl dobré vodítko ke stavbě celého robota a nikde jsme neměli potřebu doporučený postup nějak měnit, až na jednu jedino výjimku. Výškové nastavení sensoru bylo příliš vysoké a robotovi se stávalo, že “ztratil stopu” a začal se točit dokola. Točení dokola jsme odstranili díky dvěma úpravám, z nichž první byla posunutí senzoru blíže podkladu. To byl díky konstrukci robota troche mechanický oříšek, ale nakonec se podařilo po několika experimentech najít výšku, která robotovi umožňuje sledovat podklad z takové blízkosti, aby dokázal pohodlně držet stopu.

Poté jsme chtěli zkalibrovat lépe sensor, ale snížení vzdálenosti mezi podkladem a senzorem se projevilo s menší schopnosti robota/stopaře číst stopu. Nejprve jsme tedy museli snížit rychlost, jakou se robot pohybuje. Další úpravou byla kalibrace senzoru, kde jsme se na nakonec ustálili na intervalech 0-30, 30-50, 50-100. Po těchto úpravách, tedy zmenšení vzdálenosti mezi podkladem a senzorem, z ní logicky vyplývající snížení celkové rychlosti robota a úpravy kalibrace se nám podařilo dosáhnout cíle a mít k dispozici robota, který plný primární zadání a je schopný sledovat levý okraj jakékoli černé čáry na rovném povrchu s rozumným třením.

stopar

Whole project you can see here.

Autoři: Vladimír Doležal, Jiří Blažek