Spisu treści:

Robot SnappyXO Precise Mover: 6 kroków
Robot SnappyXO Precise Mover: 6 kroków

Wideo: Robot SnappyXO Precise Mover: 6 kroków

Wideo: Robot SnappyXO Precise Mover: 6 kroków
Wideo: SnappyXO mini two-wheel drive robot 2024, Listopad
Anonim
Robot precyzyjny SnappyXO
Robot precyzyjny SnappyXO

Spraw, aby robot Arduino szedł prosto na określoną odległość lub skręcał pod określonym kątem, korzystając z biblioteki PreciseMovement Arduino.

Robot potrzebuje kółka samonastawnego lub jego odpowiednika, aby zminimalizować tarcie podczas skręcania.

www.pololu.com/product/954

Możesz powiedzieć robotowi, aby szedł do przodu na określoną odległość lub skręcał pod określonym kątem. Program określa swoją pozycję za pomocą martwego liczenia. Ponieważ oszacowania położenia opierają się tylko na prędkości koła, poślizg spowoduje znaczny błąd. Projektant robota powinien zachować ostrożność, aby zminimalizować ryzyko poślizgu.

Zostało to przetestowane pod kątem współpracy z robotem SnappyXO.

Krok 1: Zmieniono lokalizację samouczka

Samouczek został przeniesiony na poniższą stronę. Ten samouczek nie jest już obsługiwany.

sites.google.com/stonybrook.edu/premo

Krok 2: Zbuduj robota z napędem różnicowym SnappyXO

Biblioteka PreciseMovement, z której będziemy korzystać, jest kompatybilna tylko z robotami z napędem różnicowym. Możesz wybrać inne roboty z napędem na 2 koła.

Krok 3: Podłącz elektronikę

Podłącz elektronikę
Podłącz elektronikę

Dla standardowego enkodera optycznego SnappyXO:

D0 (wyjście enkodera) -> Pin cyfrowy Arduino

VCC -> Arduino 5V

GND -> GND

Moc silnika i Arduino:

Źródło zasilania silnika powinno być odpowiednie dla używanych silników. W zestawie SnappyXO do zasilania silnika używane są baterie 4AA, a do zasilania Arduino bateria 9V. Upewnij się, że wszystkie mają wspólny GND.

Krok 4: Zainstaluj bibliotekę PreciseMovement Arduino

Pobierać:

github.com/jaean123/PreciseMovement-library/releases

Jak zainstalować bibliotekę Arduino:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Krok 5: Kod

Kod Arduino:

create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/podgląd

Te parametry wymagają korekty. Inne parametry oznaczone jako zalecane w kodzie można dostosować w celu uzyskania lepszej wydajności.

  • Sprawdź i ustaw kołki silnika pod kołkami ARDUINO.
  • Ustaw DŁUGOŚĆ i PROMIEŃ.

    • DŁUGOŚĆ to odległość od lewego do prawego koła.
    • PROMIEŃ to promień koła.
  • Ustaw PULSES_PER_REV, czyli liczbę impulsów wysyłanych przez enkoder na jeden obrót koła.

    • Należy zauważyć, że różni się to od liczby impulsów, które wysyła enkoder na jeden obrót wału silnika, chyba że enkodery są podłączone do odczytu bezpośrednio z wału koła.
    • PULSES_PER_REV = (impulsy na jeden obrót wału silnika) x (przełożenie)
  • Ustaw STOP_LENGTH, jeśli widzisz, że robot przelatuje po ruchu do przodu.

    Robot zatrzyma się, gdy szacowana pozycja będzie oddalona o STOP_LENGTH od celu. Zatem STOP_LENGTH jest przybliżoną odległością wymaganą do zatrzymania się robota

  • Parametry PID

    KP_FW: Jest to proporcjonalna składowa ruchu do przodu. Zwiększaj to, aż robot będzie szedł prosto. Jeśli nie możesz sprawić, by wszystko poszło prosto, dostrajając to, prawdopodobnie wadliwy jest sprzęt. (np. niewspółosiowość kół itp.)

    KP_TW: Jest to proporcjonalna składowa ruchu skręcającego PID. Po prostu zacznij od niskiej wartości i zwiększaj ją, aż prędkość skręcania lub prędkość kątowa robota podczas skręcania będzie wystarczająco duża, ale nie spowoduje przeregulowania. Aby wykonać obserwacje, możesz ustawić robota naprzemiennie od 0 do 90 iz powrotem, wstawiając następujące elementy w funkcji pętli

Umieść to w pętli, aby dostroić KP_FW:

mover.forward(99999);

Umieść to w pętli, aby zmienić od 0 do 90, aby dostroić KP_TW:

mover.twist(90); // Skręt 90 CW

opóźnienie (2000);

mover.twist(-90) // Twist 90 CCW

opóźnienie (2000);

Należy zauważyć, że aby faktycznie skręcić prędkość kątową w TARGET_TWIST_OMEGA, KI_TW również musi być dostrojone, ponieważ regulator proporcjonalny nigdy nie ustawi się dokładnie na docelowym. Jednak nie jest konieczne skręcanie z dokładnie taką prędkością kątową. Prędkość kątowa musi być po prostu wystarczająco mała.

Krok 6: Jak to działa

Jeśli jesteś ciekawy, jak to działa, czytaj dalej.

Ruch do przodu jest utrzymywany prosto przy użyciu czystego algorytmu pościgu na ścieżce prostej. Więcej o Pure Pursuit:

Regulator skrętu PID próbuje utrzymać prędkość kątową skrętu na poziomie TARGET_TWIST_OMEGA. Zauważ, że ta prędkość kątowa jest prędkością kątową całego robota, a nie kół. Używany jest tylko jeden regulator PID, a wyjściem jest prędkość zapisu PWM zarówno lewego, jak i prawego silnika. Obliczenie martwe odbywa się w celu obliczenia kąta. Gdy kąt osiągnie próg błędu, robot zatrzymuje się.

Zalecana: