Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Заставьте своего робота Arduino двигаться прямо на указанное расстояние или повернуть на указанный угол с помощью библиотеки PreciseMovement Arduino.
Роботу требуется роликовый шарнир или его аналог, чтобы минимизировать трение при скручивании.
www.pololu.com/product/954
Вы можете сказать роботу, чтобы он пошел вперед на определенное расстояние или повернулся на определенный угол. Программа определяет свое положение с помощью точного счисления. Поскольку оценки положения зависят только от скорости колеса, проскальзывание приведет к значительной ошибке. Конструктор робота должен соблюдать осторожность, чтобы свести к минимуму риск соскальзывания.
Это было протестировано для работы с роботом SnappyXO.
Шаг 1. Местоположение учебника изменено
Учебник перемещен на страницу ниже. Это руководство больше не поддерживается.
sites.google.com/stonybrook.edu/premo
Шаг 2. Соберите робота с дифференциальным приводом SnappyXO
Библиотека PreciseMovement, которую мы будем использовать, совместима только с роботами с дифференциальным приводом. Вы можете использовать других роботов с приводом на 2 колеса.
Шаг 3: Подключите электронику
Для стандартного оптического кодировщика SnappyXO:
D0 (выход энкодера) -> цифровой вывод Arduino
VCC -> Arduino 5 В
GND -> GND
Мощность двигателя и Arduino:
Источник питания двигателя должен соответствовать используемым вами двигателям. Для комплекта SnappyXO используются батареи 4AA для питания двигателя и батарея 9V для питания Arduino. Убедитесь, что все они имеют общий GND.
Шаг 4: Установите библиотеку PreciseMovement Arduino
Скачать:
github.com/jaean123/PreciseMovement-library/releases
Как установить библиотеку Arduino:
wiki.seeedstudio.com/How_to_install_Arduino_Library/
Шаг 5: Код
Код Arduino:
create.arduino.cc/editor/ whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview
Эти параметры требуют настройки. Другие параметры, отмеченные в коде как рекомендуемые, можно отрегулировать для повышения производительности.
- Проверьте и установите штифты двигателя под ARDUINO PINS.
-
Установите ДЛИНУ и РАДИУС.
- ДЛИНА - это расстояние от левого колеса до правого колеса.
- РАДИУС - это радиус колеса.
-
Установите PULSES_PER_REV - количество импульсов на выходе энкодера за один оборот колеса.
- Обратите внимание, что это отличается от количества импульсов на выходе энкодера за один оборот вала двигателя, если только энкодеры не подключены для считывания непосредственно с вала колеса.
- PULSES_PER_REV = (импульсы на один оборот вала двигателя) x (передаточное число)
-
Установите STOP_LENGTH, если вы видите, что робот пролетает мимо после движения вперед.
Робот остановится, когда расчетная позиция будет на расстоянии STOP_LENGTH от цели. Таким образом, STOP_LENGTH - это приблизительное расстояние, необходимое для остановки робота
-
Параметры ПИД
KP_FW: это пропорциональная составляющая поступательного движения. Увеличивайте это, пока робот не пойдет прямо. Если вы не можете заставить его работать прямо, настроив это, скорее всего, неисправно оборудование. (например, перекос колес и т. д.)
KP_TW: это пропорциональная составляющая ПИД-регулятора крутящего момента. Просто начните с низкого значения и увеличивайте его до тех пор, пока скорость вращения или угловая скорость робота при повороте не станет достаточно высокой, но не приведет к перерегулированию. Для проведения наблюдений вы можете настроить робота поочередно от 0 до 90 и обратно, вставив следующее в функцию цикла
Поместите это в цикл для настройки KP_FW:
mover.forward (99999);
Поместите это в цикл, чтобы чередовать от 0 до 90 для настройки KP_TW:
mover.twist (90); // Твист 90 CW
задержка (2000);
mover.twist (-90) // Поворот на 90 против часовой стрелки
задержка (2000);
Обратите внимание, что для фактического изменения угловой скорости на TARGET_TWIST_OMEGA, KI_TW также необходимо настроить, поскольку пропорциональный контроллер никогда не установит точную цель. Однако нет необходимости крутить именно с такой угловой скоростью. Угловая скорость просто должна быть достаточно низкой.
Шаг 6: как это работает
Если вам интересно, как это работает, читайте дальше.
Движение вперед поддерживается прямым с использованием алгоритма чистого преследования по прямолинейному пути. Подробнее о Pure Pursuit:
ПИД-регулятор поворота пытается поддерживать угловую скорость поворота на уровне TARGET_TWIST_OMEGA. Обратите внимание, что эта угловая скорость является угловой скоростью всего робота, а не колес. Используется только один ПИД-регулятор, а на выходе - скорость записи ШИМ левого и правого двигателей. Для вычисления угла используется точный счет. Как только угол достигает порога ошибки, робот останавливается.