Съдържание:

SnappyXO Precision Mover Robot: 6 стъпки
SnappyXO Precision Mover Robot: 6 стъпки

Видео: SnappyXO Precision Mover Robot: 6 стъпки

Видео: SnappyXO Precision Mover Robot: 6 стъпки
Видео: Your Body's Molecular Machines 2024, Ноември
Anonim
SnappyXO Precision Mover Robot
SnappyXO Precision Mover Robot

Накарайте вашия робот Arduino да отиде направо за определено разстояние или да завърти до определен ъгъл с помощта на библиотеката PreciseMovement Arduino.

Роботът се нуждае от търкаляща се топка или еквивалент, за да сведе до минимум триенето при усукване.

www.pololu.com/product/954

Можете да кажете на робота да премине напред на определено разстояние или да завърти до определен ъгъл. Програмата определя позицията си с помощта на мъртви сметки. Тъй като оценките на позицията разчитат само на скоростта на колелото, приплъзването ще предизвика значителна грешка. Дизайнерът на робота трябва да внимава да сведе до минимум риска от подхлъзване.

Това е тествано за работа с SnappyXO робота.

Стъпка 1: Променено е местоположението на урока

Урокът е преместен на страницата по -долу. Този урок вече не се поддържа.

sites.google.com/stonybrook.edu/premo

Стъпка 2: Създайте робот за диференциално задвижване SnappyXO

Библиотеката PreciseMovement, която ще използваме, е съвместима само с роботи с диференциално задвижване. Можете да изберете да използвате други роботи с 2 колела.

Стъпка 3: Свържете електрониката

Свържете електрониката
Свържете електрониката

За стандартния оптичен енкодер SnappyXO:

D0 (изход на енкодер) -> Arduino Digital Pin

VCC -> Arduino 5V

GND -> GND

Мощност на двигателя и Arduino:

Източникът на захранване на двигателя трябва да е подходящ за моторите, които използвате. За комплекта SnappyXO се използват батерии 4AA за захранване на двигателя и 9V батерия за захранване на Arduino. Уверете се, че всички те имат общ GND.

Стъпка 4: Инсталирайте библиотеката PreciseMovement Arduino

Изтегли:

github.com/jaean123/PreciseMovement-library/releases

Как да инсталирате Arduino Library:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Стъпка 5: Код

Код на Arduino:

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

Тези параметри изискват корекция. Други параметри, обозначени като препоръчани в кода, могат да бъдат коригирани за по -добра производителност.

  • Проверете и настройте щифтовете на двигателя под ARDUINO PINS.
  • Задайте LENGTH и RADIUS.

    • LENGTH е разстоянието от лявото колело до дясното колело.
    • RADIUS е радиусът на колелото.
  • Задайте PULSES_PER_REV, който е броят на импулсите, които кодерът извежда за едно завъртане на колелото.

    • Обърнете внимание, че това е различно от броя импулси, които енкодерът извежда за един оборот на вала на двигателя, освен ако енкодерите не са свързани за отчитане директно от вала на колелото.
    • PULSES_PER_REV = (импулси на един оборот на вала на двигателя) x (предавателно отношение)
  • Задайте STOP_LENGTH, ако видите, че роботът превишава стрелбата след движението напред.

    Роботът ще спре, след като прогнозната позиция е на STOP_LENGTH от целта. По този начин STOP_LENGTH е приблизителното разстояние, необходимо за спиране на робота

  • PID параметри

    KP_FW: Това е пропорционалният компонент на движението напред. Увеличете това, докато роботът тръгне направо. Ако не можете да го накарате да премине направо, като настроите това, тогава хардуерът вероятно е виновен. (напр. разминаване на колелата и т.н.)

    KP_TW: Това е пропорционалният компонент на PID за усукващо движение. Просто започнете от ниска стойност и увеличете това, докато скоростта на завъртане или ъгловата скорост на робота по време на усукване, е достатъчно бърза, но не причинява превишаване. За да правите наблюдения, можете да накарате робота да се редува от 0 до 90 и обратно, като вмъкнете следното във функцията за цикъл

Поставете това в цикъл, за да настроите KP_FW:

mover.forward (99999);

Поставете това в цикъл, за да редувате от 0 до 90, за да настроите KP_TW:

mover.twist (90); // Twist 90 CW

забавяне (2000);

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

забавяне (2000);

Обърнете внимание, че за да се обърне действително ъгловата скорост на TARGET_TWIST_OMEGA, KI_TW също трябва да бъде настроен, тъй като пропорционалният контролер никога няма да се установи на точната цел. Не е необходимо обаче да се усуква с точно тази ъглова скорост. Ъгловата скорост просто трябва да бъде достатъчно бавна.

Стъпка 6: Как работи

Ако се интересувате как работи, прочетете.

Движението напред се поддържа прави, като се използва алгоритъм за чисто преследване по права линия. Повече за Pure Pursuit:

PID контролерът на усукване се опитва да поддържа ъгловата скорост на усукване на TARGET_TWIST_OMEGA. Обърнете внимание, че тази ъглова скорост е ъгловата скорост на целия робот, а не на колелата. Използва се само един PID контролер и изходът е скоростта на запис на ШИМ както на левия, така и на десния двигател. За изчисляване на ъгъла се прави мъртва сметка. След като ъгълът достигне прага на грешка, роботът спира.

Препоръчано: