Отправлено Гость (не проверено) от ср, 05/24/2017 - 10:31

Представлено Дарреллом 02/01/2017 - 18:01
Вы изо всех сил пытаетесь понять, как использовать  Talon контроллер SRX эффективно? Что такое PID и PIDF? Как работает управление с обратной связью? Что такое опережающее упраление? Как определяются значения P, I, D, & F? Как предполагается использовать новую Talon SRX функцию программы движения?
Если это Ваши вопросы, этот блог для Вас. 
Последующий материал поможет Вам лучше понимать и реализовывать управление движением на своем собственном роботе. Интерактивные модели для моделирования с использованием SystemVision Облака, проиллюстрируют концепцию и позволят Вам взаимодействовать со множеством виртуальных конфигураций системы управления движения. Вы можете скопировать эти модели, изменить выбранные двигатели, коробки передач, параметры управления, загрузки, и вводы, чтобы настроить константы PIDF, предсказать ответы и проблемы поиска и устранения неисправностей.
Предпосылки
Двигатели используются для того, чтобы управлять  скоростью и позицией в огромном количестве приложений. Двигатели - основной источник управления движением, например, в Робототехнике. Первое Соревнование по Робототехнике (FRC) является популярным предприятием робототехники для старшеклассников. Это соревнование ограничивает двигатели, которые могут использоваться на роботах, по правилу, выбирая из фиксированного списка (см. мой предыдущий блог по  двигателю FRC).
 В дополнение к двигателям моторные контроллеры являются ключевыми для успешных приложений управления движением. Моторный контроллер позволяет каждому двигателю быть приведенным в действие, от основного источника питания, но с переменной силой. Отправляя сигналы от основной программы робота до этого посредника, двигателями можно управлять, чтобы продвинуться вперёд или назад на различных скоростях и к различным позициям. FRC ограничивает моторные контроллеры, которые могут быть использованы, из фиксированного списка.

Talon SRX контроллер.1

Контроллер Talon SRX - самый сложный  контроллер, допустимый для робота FRC.
Он маленький, легкий, устойчивый, и универсальный. В пассивно охлаждаемом корпусе для силовой электроники содержатся мощный микроконтроллер CAN шина. Есть также поддержка того, чтобы непосредственно соединить обратную связь датчиков, таких как энкодеры и предельные переключатели, включить автономное управление замкнутым контуром. Встроенный микроконтроллер программируется на высоком уровне, через прикладной программный интерфейс (API), который связывается с устройством через последовательную шину CAN. Все это позволяет разгрузить сложные функции управления движения с Talon SRX, уменьшая  загрузку основного контроллера робота (обычно RoboRIO для FRC). Использование Talon SRX для независимого управления также имеет преимущества производительности, так как у него есть специальный цикл ответа в режиме реального времени в 1 миллисекунду по сравнению с 20 или 25 миллисекундами на основном процессоре.
Talon SRX запрограммирован через сложный API. Это хорошо задокументировано в Руководстве по программному обеспечению Talon SRX (ссылка внешняя). Примеры программирования доступны для LabVIEW, C++ и Java (ссылка внешняя). Но программирование не является фокусом этого блога – скорее,  эти материалы разработаны, чтобы помочь Вам понимать, получать и диагностировать константы управления PIDF, которые являются неотъемлемой частью средств управления программным обеспечением. 

CIMple Box с двойными двитателями CIM 

Для этого примера мы моделируем обычно используемые CIMple Box, коробку передач, снабженные двумя двигателями CIM. Наш пример также использует квадратурный энкодер  с 250 кодами за цикл (CPR), подключенный непосредственно к ведомому валу коробки передач через вал между двумя моторами.
3D CAD модель of CIMple коробки и два CIMs. Скачать. 
Эта сборку можно увидеть в схематике для  двух двигателей, присоединённых к коробке передач. Здесь использованы коэффициенты для  коробки передач  CIMple  4.67:1. Но это может быть изменено, когда Вы копируете и редактируете любую схему . 
Другая популярная коробка передач - это Toughbox Mini.  Это стандартная коробка передач, доступная с FRC kit-of-parts (KoP) chassis . The Toughbox Mini доступна со следующим дополнительным коэффициентом передачи: 12.75, 10.71, 8.45, и 5.95. По умолчанию - 10.71.

Проектирование онлайн

Проектирование в этом блоге – онлайн – вы можете взаимодействовать с этим не покидая страницу. Посмотрите это короткое видео, чтобы увидеть, как это работает. 

Простое управление без обратной связи

Самое простое управление, которое может быть использовано с Talon SRX – это управление без обратной связи, используя режим the PercentVBus. В этом режиме, устройства ввода данных, такие как джойстик, используются, чтобы просто отправить команду в Talon SRX, чтобы установить выходное напряжение на уровне указанного процента от  максимального напряжения наа шине  (обычно ~12 вольт). Заданная координата - число между-1 и +1, соответствует биполярному выходному диапазону (например,  от -12V до +12V).
Следующая симуляция показывает этот сценарий. Сигнал motor_cmd_percent_bus устанавливается от 0 до +1 и затем назад к 0. Получающееся напряжение передается двигателям, движение осуществляется  через коробку передач, скорость и позицию можно наблюдать.
Отметьте, что полная скорость (motor_cmd_percent_bus = 1.0) мотора RPM - 1.0621k, или 1062.1.  Это число полезно для нас, так как оно демонстрирует максимальную скорость мотора, которую мы можем ожидать. 
Вы заметите, если Вы измените нагрузку (смотрите видео выше, чтобы увидеть, как), что изменится только время, которое требуется, чтобы добраться до полной скорости. Если передаточное отношение изменено, однако, максимальная частота вращения двигателя может измениться значительно. Посмотрите здесь версию этого проектирования с коробкой передач Toughbox Mini. 

Управление поступательной скорости

Следующий шаг в нашем движении вперёд – это использование управления поступательной скорости. Это немного более сложно, чем предыдущий пример. В этой конфигурации режим ввода изменяется от PercentVBus до скорости. Желаемая скорость, set_speed_rpm, масштабируется значением усиления в прямом направлении канала, F-усиления, прежде, чем применить его к Talon SRX. Важно, однако, полностью понять принятые модули для всех количеств, используемых в этом вычислении. Это может быть утомительно, чтобы держаться прямо, но уделение внимания этим деталям значительно уменьшит последующие головные боли!
Руководство по программному обеспечению Talon SRX предоставляет подробное описание для вычисления Feed-Forward F-усиления констант, заботясь, чтобы использовать корректные единицы (см. раздел 12.4.2. Velocity Closed-Loop Walkthrough – Calculating Feed Forward)
В этом примере квадратурный энкодер, который мы используем, производит 250 кодов за оборот. От раздела 17.2.1 в справочном руководстве, мы видим, что собственные единицы для этого кодера равняются 4 X CPR. Максимальная скорость, что мы измеряли используя наш первый эксперимент, выше, была приблизительно 1062 вращений в минуту. 
Для вычисления F-усиления скорости измерена в изменении в собственных единицах за TvelMeas=100ms. 
(1062 Вращений / минута) X (1 минута / 60 секунд) X (1 секунда / 10 TvelMeas) X (250 кодов / вращение) X (4 собственных ед. / код)
= 1770 собственных единиц за 100 мс
Теперь давайте вычислим F-усиление прямого прохождение так, чтобы 100%-й моторный вывод был вычислен, когда требуемая скорость - 1770 собственных единиц за 100 мс.
F-усиление = (100% X 1023) / 1770
F- усиление = 0.5780
Давайте проверим нашу математику, если целевая скорость будет 1770 собственных единиц за 100 мс, вывод С обратной связью будет (0.5780 X 1770) => 1023 (полный вперёд).
Это удобно, поскольку мы можем теперь непосредственно запросить, чтобы двигатель перешел к определенной скорости. Заметьте, тем не менее, что точность этого метода полагается на наш прогноз, что моторная скорость вывода - линейная функция сигнала motor_cmd_percent_bus. Мы видим, тем не менее, сравнивая set_speed_rpm с сигналами load_speed_rpm, что этот прогноз только приблизителен. Иначе эти сигналы были бы идентичны.
Это несоответствие - таково, потому что передний привод канала - форма разомкнутого цикла управления - информация об энкодере не используется здесь, чтобы активно исправить сигнал motor_cmd_percent_bus, чтобы выравнять его с сигналом set_speed_rpm. Следующим нашим шагом будет добавить обратную связь, чтобы улучшить производительность.

Упреждение PIDF + регулировка скорости с обратной связью

На этом шаге мы добавляем управление с обратной связью, чтобы достигнуть лучшего соответствия между заданной величиной скорости и измеренным результатом. Структура всех систем управления с обратной связью подобна: заданная величина сравнивается со значением обратной связи (вычитанием), чтобы определить ошибку (различие). Эта ошибка используется, чтобы управлять приводом способом, который, надо надеяться, приблизит ее к заданной величине (приведите ошибку максимально близко к нулю).
Ищите этот образец в схеме ниже. Скорость обратной связи, load_speed_NU вычтена из заданной величины, set_speed_NU, чтобы произвести сигнал ошибки. Сигнал ошибки, в свою очередь, обработан тремя различными математическими операторами: простое умножается P_gain, интегрирует и умножается I_gain, и дифференцируется и умножается D_gain. Эти три условия добавлены, чтобы произвести ответ PID, чтобы управлять двигателем. Но прежде чем они применены к двигателю, условие упреждения F_gain, сверху, добавлен к условиям PID. Но это - все еще в собственных единицах, внутренних микроконтроллера Talon, в котором максимальное значение представлено значением 1023. Так, прежде, чем применить это к нашей модели, которая ожидает значение между-1 и +1, мы должны разделить на 1023 (т.е., умножить 9.775E-4).
Помните, теперь, что все это происходит в Talon SRX как функции программного обеспечения, работающие на встроенном микроконтроллере. Все зеленые сигналы в этой схеме (и их соответствующие функциональные блоки) представляют функциональность этого встроенного программного обеспечения. Эта модель удобна, поскольку она позволяет нам попробовать различные значения усилений PIDF, чтобы проверить, что мы получим результаты, которые мы хотим. Это может быть трудным и/или трудоемким, чтобы сделать с реальным роботом. Если Вы попробовали это с роботом, Вы будете знать, что, если Вы делаете значение P_усиления слишком маленьким, ничего не происходит. Если Вы делаете его слишком большим, робот может колебаться дико.

Руководство по программному обеспечению Talon SRX предоставляет подробное описание  определения констант в пропорциональном усилении (P-усиление), заботясь, чтобы использовать корректные единицы (см. раздел 12.4.3. 12.4.3. Velocity Closed-Loop Walkthrough -- Dialing Proportional Gain).
Предположим нашу худшую ошибку до сих пор (~150 собственных единиц за 100 мс), мы хотим ответить еще 10-ю % дросселя. Тогда наше стартовое p-усиление было бы …. (10% X 1023) / (150) = 0.682
Теперь давайте проверим нашу математику, если Talon SRX видит ошибку 150 P-условия, будет 150 X 0.682 = 102 (который составляет приблизительно 10% из 1023)

P-усиление= 0.682
Заметьте по симуляции ниже, тем не менее, что даже значение P-усиления целых 20.0 не вызывает колебания.

PID управление позицией с обратной связью

Управление позиции с обратной связью подобно регулировке скорости, за исключением того, что упреждение не используется (только PID). Это вызвано тем, что, в то время как уровень напряжения - хорошее прогнозирующее устройство скорости, это - ужасное прогнозирующее устройство позиции. Упреждение может все еще быть полезно для управления позицией, но оно требует осторожной координации установки и скорости и позиции (см. Профиль Движения ниже).
В примере ниже, заметьте, что значение F_gain - 0.0, таким образом, нет никакого прямого вклада в управление. Заметьте также, что сигнал обратной связи - load_pos_NU (загрузка позиции в собственных единицах), проверяет, что наш цикл управления - позиционная система управления.
Заметьте, что загружаемая скорость , load_speed_nu, поднимается до ~400  за 100 мс и затем отступает к 0.0, поскольку заданное значение позиции достигнуто. Сравните это с заданием значения позиции, set_pos_nu, и Вы увидите, почему упреждение не подходит для прямого использования в управлении позицией. В следующем разделе, тем не менее, мы будем видеть что, если мы обеспечим две скоординированных величины, одну для позиции и одну для скорости,  мы сможем достигнуть лучшего управления для профиля движения.

Упреждение PIDF + управление профилем движения с обратной связью (плюс волшебство движения)
Часто желательно управлять загружаемой позицией  согласно желаемому профилю. Это может включать сценарии, такие как указание направить камеру в определенном направлении или перемещение робота к предопределенной позиции на поле. Talon SRX имеет встроенную поддержку для этой функции. Посмотрите профиль движения для детальной документации на API и как это работает. 
Чтобы сделать профили движения простыми в использовании, Talon SRX обеспечивает рабочий режим под названием Волшебство Движения (см. Волшебство Движения для документации и примеров). Волшебство движения усиливает функциональность профиля движения, обеспечивая высокоуровневый API, который генерирует  подробный профиль движения, необходимый чтобы выполнить задачу управления движением.
Заметьте, что профиль движения требует установки профиля для позиции и для скорости (см. сигналы set_pos_revsand set_speed_rpm, соответственно, ниже). Если возможно ожидать регулирование частоты вращения двигателя, для достижения определенной позиции, то алгоритм управления может эффективно использовать в своих интересах передний привод канала. Это устраняет часть бремени управления с обратной связью. Вы можете думать о нем как об использовании упреждения для грубой настройки и обратной связи для точной настройки. Этот подход эффективный, быстро реагирующий, и стабильный.
Требуется лишь немного знания физики, чтобы понять, что скорость и позиция объекта ВЕСЬМА зависимы! Поэтому эти два профиля - скорость и позиция - должны быть тщательно скоординированы.
Разработчики Talon SRX используют электронную таблицу Excel, чтобы сделать этот процесс проще. Электронная таблица позволяет задать спецификацию некоторых параметров желаемого профиля движения и затем производит полный, скоординированный профиль, который может быть включен в функциональность профиля движения Talon SRX.
Волшебство движения работает немного по-другому. Эквивалент электронной таблицы встроен во встроенное микропрограммное обеспечение Talon SRX. Вы только должны определить максимальную скорость, максимальное ускорение и заданную позицию. Talon SRX, при использовании режима волшебства движения,генерирует и позицию и профили скорости. Функция волшебства движения также корректно обрабатывает изменение этих параметров на лету!
Значение F-усиления должно совпасть с той, в примере управления поступательной скорости канала, поскольку ввод - профиль скорости.
Значения P-усиления, I-усиления, D-усиления, однако, не обязательно совпадут со значением в позиции с обратной связью controlexample, даже при том, что заданное значение - профиль позиции. Это вызвано тем, что FFC  помогает делать это задание проще для управления с обратной связью. Вы можете увидеть, что получаете хорошие результаты, понижая (или возможно увеличивая) другие усиления PID. Используйте Облачное моделирование SystemVision, чтобы экспериментировать с различными значениями PID и их эффектом на производительность и устойчивость.
Моделирование ниже использует профиль движения (последовательность соответствующей позиции, скорости, и значения продолжительности) от примера, доступного на github. Профиль скорости обеспечен кусочно-линейным источником speed_profile, приведя к сигналу, названному set_speed_RPM. Соответствующий профиль позиции обеспечен кусочно-линейным sourcepos_profile, приводящим к сигналу, названному set_pos_revs.
Заметьте, что сигналы set_speed_rpm и load_speed_rpm хорошо соответствуют, даже при том, что сигнал load_speed_rpm не используется в управлении с обратной связью. Это вызвано тем, что позиция и скорость физически связаны. Это отношение физики встроено в генерацию профилей (в электронной таблице Excel или в волшебстве движения), позволив приблизить управление позиции, установив скорость! Это - относительно сложная стратегия управления и часть причины того, что Talon SRX так полезен.

Toughbox мини-коробка передач

Мини-Toughbox является также популярной коробкой передач, как эта - стандартная коробка передач на Шасси Набора AndyMark.  
Посмотрите ниже для версии проекта профиля движения, сверху, но с Мини-коробкой передач Toughbox вместо Коробки CIMple.