Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Pomocou knižnice PreciseMovement Arduino nechajte svojho robota Arduino prejsť rovnú vzdialenosť na určenú vzdialenosť alebo sa stočte do určeného uhla.
Robot potrebuje koliesko na kolieskach alebo ekvivalent, aby minimalizoval trenie pri krútení.
www.pololu.com/product/954
Môžete robotovi povedať, aby išiel dopredu na zadanú vzdialenosť alebo sa otočil do určeného uhla. Program určí svoju polohu pomocou mŕtveho zúčtovania. Pretože odhady polohy závisia iba od rýchlosti kolesa, sklz spôsobí značné chyby. Konštruktér robota by mal byť opatrný, aby minimalizoval riziko pošmyknutia.
Toto bolo testované, aby fungovalo s robotom SnappyXO.
Krok 1: Poloha výukového programu bola zmenená
Tutoriál bol presunutý na stránku nižšie. Tento návod už nie je udržiavaný.
sites.google.com/stonybrook.edu/premo
Krok 2: Zostavte robot diferenciálneho pohonu SnappyXO
Knižnica PreciseMovement, ktorú budeme používať, je kompatibilná iba s robotmi s diferenciálnym pohonom. Môžete sa rozhodnúť použiť aj iné roboty s pohonom 2 kolies.
Krok 3: Pripojte elektroniku
Pre štandardný optický kodér SnappyXO:
D0 (výstup kodéra) -> Digitálny pin Arduino
VCC -> Arduino 5V
GND -> GND
Výkon motora a Arduina:
Napájací zdroj motora by mal byť vhodný pre motory, ktoré používate. V súprave SnappyXO sa na napájanie motora používajú 4AA batérie a na napájanie Arduino 9V batéria. Zaistite, aby všetky mali spoločný GND.
Krok 4: Nainštalujte si knižnicu PreciseMovement Arduino
Stiahnuť ▼:
github.com/jaean123/PreciseMovement-library/releases
Ako nainštalovať knižnicu Arduino:
wiki.seeedstudio.com/How_to_install_Arduino_Library/
Krok 5: Kód
Arduino kód:
create.arduino.cc/editor/timeloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview
Tieto parametre vyžadujú úpravu. Ostatné parametre označené ako odporúčané v kóde je možné upraviť tak, aby bol výkon lepší.
- Skontrolujte a nastavte kolíky motora pod ARDUINO PINS.
-
Nastavte DĹŽKU a RADIUS.
- LENGTH je vzdialenosť od ľavého kolesa k pravému kolesu.
- RADIUS je polomer kolesa.
-
Nastavte PULSES_PER_REV, čo je počet impulzov, ktoré enkodér vydá na jednu otáčku kolesa.
- Upozorňujeme, že sa líši od počtu impulzov, ktoré enkodér vydá na jednu otáčku hriadeľa motora, pokiaľ nie sú snímače pripojené na čítanie priamo z hriadeľa kolesa.
- PULSES_PER_REV = (impulzy na jednu otáčku hriadeľa motora) x (prevodový pomer)
-
Nastavte STOP_LENGTH, ak vidíte, že robot po pohybe vpred prestreľuje.
Robot sa zastaví, akonáhle bude odhadovaná poloha STOP_LENGTH mimo cieľa. STOP_LENGTH je teda približná vzdialenosť potrebná na to, aby sa robot zastavil
-
Parametre PID
KP_FW: Toto je proporcionálna zložka pohybu vpred. Zvýšte to, kým robot nepôjde rovno. Ak to nedokážete vyladiť, hardvér je pravdepodobne na vine. (napr. nesprávne zarovnanie kolies atď.)
KP_TW: Toto je proporcionálna zložka PID krútivého pohybu. Jednoducho začnite od nízkej hodnoty a zvyšujte ju, kým rýchlosť skrútenia alebo uhlová rýchlosť robota pri krútení nie je dostatočne vysoká, ale nespôsobí prekročenie. Ak chcete vykonávať pozorovania, môžete nechať robota striedať od 0 do 90 a späť vložením nasledujúceho do funkcie slučky
Umiestnite to do slučky a nalaďte KP_FW:
mover.forward (99999);
Umiestnite to do slučky a striedajte od 0 do 90, aby ste vyladili KP_TW:
mover.twist (90); // Twist 90 CW
oneskorenie (2000);
mover.twist (-90) // Twist 90 CCW
oneskorenie (2000);
Všimnite si toho, že na to, aby sa skutočne uhlová rýchlosť v TARGET_TWIST_OMEGA skutočne skrútila, je potrebné vyladiť aj KI_TW, pretože proporcionálny regulátor sa nikdy neusadí na presný cieľ. Nie je však potrebné krútiť sa presne touto uhlovou rýchlosťou. Uhlová rýchlosť musí byť dostatočne pomalá.
Krok 6: Ako to funguje
Ak vás zaujíma, ako to funguje, čítajte ďalej.
Pohyb vpred je udržiavaný rovno pomocou algoritmu čistého prenasledovania na priamke. Viac o Pure Pursuit:
Twist PID regulátor sa snaží udržať uhlovú rýchlosť zákruty na TARGET_TWIST_OMEGA. Všimnite si, že táto uhlová rýchlosť je uhlová rýchlosť celého robota, nie kolies. Je použitý iba jeden PID regulátor a výstupom je rýchlosť zápisu PWM ľavého aj pravého motora. Na výpočet uhla sa používa mŕtve počítanie. Akonáhle uhol dosiahne prah chyby, robot sa zastaví.