Кинематика манипулятора: от ШИМ (PWM) к обратной кинематике
Вы сможете переместить рабочий орган манипулятора в выбранную точку, понимая прямую и обратную кинематику, достижимую рабочую область и сингулярности до работы с оборудованием.
Кинематика роботизированной руки — геометрия, связывающая две вещи, которые должен согласовывать манипулятор: углы суставов, которыми он действительно может управлять, и положение рабочего органа, которое нужно в мире. Переход в одну сторону, от углов к положению, — прямая кинематика, и она проста. Переход в другую сторону, от положения к углам, — обратная кинематика, и именно в ней живут интересные задачи: два решения, недостижимые границы и положения, в которых рука на мгновение теряет управление направлением.
Этот путь последовательно формирует такое понимание. Сначала вы работаете с оборудованием: перемещаете сервопривод к заданному углу через драйвер PCA9685, включая калибровку. Затем изучаете геометрию: как углы руки из двух звеньев задают положение рабочего органа и как обратить это преобразование для достижения цели. Наконец вы исследуете это в реальном времени в симуляторе, перемещая цель и наблюдая, как решатель выбирает углы суставов, достигает границы рабочей области и отмечает недостижимые положения.
Проходите узлы по порядку: каждый открывает следующий после выполнения, а прогресс сохраняется на этом устройстве. Когда будете готовы создать настоящую систему, этот путь непосредственно приведёт к проекту роботизированной руки 4-DOF (четырёх степеней свободы).
Прежде чем начать
Вам нужна тригонометрия, в частности sin, cos и atan2, и достаточно навыков программирования,
чтобы написать функцию, возвращающую два значения. Опыт работы с сервоприводами пригодится, но всё
необходимо изложено в пути. Физическая рука здесь не нужна: всю геометрию можно изучить в симуляторе.
Чему вы сможете научиться
- Вычислять положение рабочего органа руки из двух звеньев по углам суставов и обращать это преобразование, чтобы найти углы, достигающие заданной точки.
- Осознанно выбирать между двумя решениями — локтем вверх и локтем вниз, — вместо выбора того, которое вернула математика.
- Предсказывать границу достижимой рабочей области и обнаруживать цель за её пределами до начала движения руки.
- Распознавать сингулярность при приближении к полному выпрямлению, когда небольшое изменение положения рабочего органа требует огромного изменения угла сустава.
- Измерять люфт своих суставов и называть долю ошибки схвата, приходящуюся на механизм, а не на математику.
Где обычно возникают трудности
Использование atan вместо atan2. Обычный atan не может определить квадрант цели,
поэтому рука правильно тянется вперёд и зеркально отклоняется назад. atan2 принимает две
составляющие отдельно и правильно обрабатывает все четыре квадранта.
Ошибка области значений acos. Когда цель дальше, чем могут достичь звенья, теорема косинусов
даёт аргумент вне диапазона от −1 до 1, и acos возвращает NaN. Это значение NaN попадает в
команду сервопривода как недопустимый угол. Проверяйте достижимость до тригонометрии, а не после.
Путаница между углом сустава и углом сервопривода. Нулевое положение сервопривода зависит от установки рычага, а вращение может быть противоположно вашим расчётам. Каждому суставу нужны калибровочный сдвиг и, возможно, смена знака. Пропуск этого приводит к тому, что рука движется плавно, но оказывается далеко от цели.
Игнорирование гравитации при вытягивании. Геометрия предполагает, что рука движется туда, куда указано. Сервопривод радиолюбительского класса, удерживающий полностью вытянутое звено, работает в самом невыгодном положении, и реальное положение провисает ниже заданного — наиболее заметно у дальней границы рабочей области.
Попытка настроить механическую ошибку. Если рука достигает одной точки по-разному в зависимости от приближения слева или справа, никакой коэффициент это не исправит: это люфт редуктора, умноженный на всю длину руки. Четыре градуса в плечевом шарнире при длине звена 150 mm дают более 10 mm у схвата.
Прохождение через сингулярность. Вблизи полного выпрямления обратное решение становится плохо обусловленным, и плавная траектория рабочего органа превращается в резкое движение суставов. Оставляйте запас от границы, а не проводите траектории вплотную.
Что понадобится
| Что | Зачем это нужно пути | Примечания |
|---|---|---|
sin, cos и atan2 |
Весь необходимый математический инструментарий | Если понимаете назначение atan2, вы готовы |
| Функция, возвращающая два значения | IK возвращает пару углов, а часто две пары | Кортеж, структура, выходной параметр — подойдёт любое решение |
| Транспортир и линейка | Сверьте, куда рука доехала, с заданным положением | Единственная честная проверка реализации кинематики |
| Рука и PCA9685 (необязательно) | Часть, связанная с оборудованием | Геометрию можно полностью изучить в симуляторе |
Почему путь устроен именно так
Сначала управление сервоприводами, затем геометрия, и необходимость этого неочевидна. Причина в калибровке. Когда можно задать сустав и увидеть, куда он действительно пришёл, получается способ проверять каждый последующий результат по реальности. Если сначала изучить геометрию, невозможно отличить неверный решатель от неправильно установленного рычага сервопривода: две совершенно разные неисправности выглядят одинаково издалека.
Далее идут типы рук, потому что они объясняют смысл звена. Декартовы, SCARA и delta-руки решают одну задачу совершенно разной геометрией, и знакомство с тремя показывает, что кинематика относится к расположению суставов, а не к конкретной руке. Это также объясняет, почему IK для SCARA почти тривиален, а для delta — нет.
Обратная кинематика идёт третьей, когда выполнены оба предварительных условия. Она является сутью пути и единственным узлом, на который придётся потратить реальное время на математику.
Симулятор идёт четвёртым, потому что делает невидимое видимым. Достижимость, две ветви положения локтя и сингулярности можно доказать на бумаге, но по-настоящему понять их можно, только перетащив цель к границе рабочей области и увидев, как изменится поведение решателя. Перетаскивание цели — также самый быстрый способ определить форму рабочей области: при неравных звеньях она представляет собой кольцо с отверстием, а не диск.
Люфт намеренно завершает путь. Это момент, когда точность руки больше нельзя улучшить математикой. Все предыдущие узлы посвящены вычислению правильного угла; этот посвящён миллиметрам между правильным углом и правильным положением.
Контрольные точки: как проверить усвоение этапа
| Этап | Проверка | Признак успешного прохождения |
|---|---|---|
| Управление сервоприводами | Задайте 0°, 90° и 180° каждому суставу | Рычаг оказывается в заданном положении, а сдвиг и знак каждого сустава записаны |
| Калибровка PWM | Найдите ширину импульсов реальных конечных положений каждого сервопривода | У каждого сервопривода свои минимальное и максимальное значения, а не значения по умолчанию из библиотеки, и на пределах нет гудения |
| Прямая кинематика | Задайте известные углы, вычислите и измерьте положение рабочего органа | Расчёт и измерение совпадают в пределах нескольких миллиметров |
| Обратный переход | Передайте вычисленное положение обратно через IK | Полученные углы совпадают с заданными |
| Обработка квадрантов | Запросите цели во всех четырёх квадрантах | Все четыре работают; если две зеркальны, используется atan |
| Достижимость | Запросите цель далеко за пределами досягаемости руки | Получаете однозначное «недостижимо», а не NaN и не рывок |
| Форма рабочей области | Постройте достижимую границу в симуляторе | Можете описать её и объяснить, почему неравные звенья образуют кольцо с отверстием |
| Ветви положения локтя | Достигните одной точки обоими способами | Оба решения работают, одно выбрано сознательно, и вы можете объяснить выбор |
| Сингулярность | Проведите прямую траекторию рабочего органа вблизи полного вытягивания | Видите скачок скорости сустава и теперь планируете запас |
| Люфт | Приближайтесь к одной точке с каждого направления и измеряйте | Получаете ненулевое число в миллиметрах у схвата |
Где заканчивается этот путь
Этот путь рассматривает плоское решение для руки из двух звеньев, получаемое в замкнутом виде: геометрию плеча и локтя почти каждой радиолюбительской руки. Это правильно изучать первым, поскольку решение можно вывести, проверить и точно понять причину каждого отказа.
Он не охватывает несколько следующих тем. Общая кинематика n-DOF использует параметры Денавита–Хартенберга и однородные матрицы преобразований для систематического описания любой цепочки суставов вместо ручного решения геометрии каждой руки. Численная обратная кинематика (IK) — итерация на основе якобиана — применяется, когда нет решения в замкнутом виде, то есть в обычной ситуации после четырёх или пяти суставов; она также сохраняет работоспособность вблизи сингулярностей, где замкнутое решение просто перестаёт работать.
Устранение избыточности — вопрос о том, что делать, когда у руки больше суставов, чем ограничивает задача, а значит, существует бесконечно много допустимых решений; это действительно интересная задача, с которой этому пути не приходится сталкиваться, поскольку у руки из двух звеньев ровно два решения.
А динамика — вторая половина задач манипулирования: кинематика ничего не говорит о силах, инерции или скорости движения сустава без перерегулирования. Всё здесь предполагает, что рука перемещается туда, куда её направляют, достаточно медленно для выполнения этого предположения.
Дорожная карта обучения
Путь
Проходите узлы по порядку — каждый открывает следующий, когда вы его выполните. Ваш прогресс сохраняется на этом устройстве.
0 / 5 выполнено
Частые вопросы
Часто задаваемые вопросы
Чем прямая кинематика отличается от обратной?
Прямая кинематика отвечает на вопрос «при заданных углах суставов где находится рабочий орган?» — это прямое вычисление, у него всегда ровно один ответ, и оно действительно простое. Обратная кинематика отвечает на полезный вопрос: «чтобы поместить рабочий орган сюда, какие углы нужны?» — и во всём она сложнее. У неё может быть два ответа, ни одного при недостижимой цели или бесконечно много, если у руки больше суставов, чем ограничений задачи. Все интересные задачи управления рукой находятся на стороне обратной кинематики.
Почему рука тянется в неверную сторону к целям, расположенным за ней?
Почти наверняка используется atan вместо atan2. Обычный atan принимает одно отношение и не может отличить цель спереди от её зеркального отражения сзади, поскольку оба дают одинаковый результат: рука правильно достигает цели в двух квадрантах и зеркально отклоняется в двух других. atan2 принимает две составляющие отдельно и правильно разрешает все четыре квадранта. Это самая частая ошибка в первой реализации обратной кинематики (IK), и она проявляется как рука, которая работает идеально, пока не попросишь её дотянуться до цели за собой.
Что означают локоть вверх и локоть вниз в обратной кинематике?
Для руки из двух звеньев почти каждую достижимую точку можно получить двумя способами: с локтем, загнутым вверх или вниз, — и математика возвращает оба решения, поскольку оба верны. Выбор зависит от окружения руки: один вариант может привести к столкновению со столом или заготовкой либо к перекручиванию кабеля. Важно выбирать сознательно и единообразно, поскольку молчаливое переключение между ветвями посреди траектории заставляет руку совершить большое, быстрое и незапланированное движение.
Почему код IK возвращает NaN из-за аргумента acos?
Потому что цель находится дальше, чем могут достичь звенья, и теорема косинусов дала аргумент вне диапазона от −1 до 1, принимаемого acos. Затем NaN попадает прямо в команду сервопривода как недопустимый угол, поэтому недостижимая цель часто вызывает резкое движение вместо отказа. Проверяйте достижимость до выполнения тригонометрии: сравнивайте расстояние до цели с суммой и разностью длин звеньев — и возвращайте «недостижимо» как настоящий результат, не поручая acos обнаруживать это самостоятельно.
Что такое сингулярность роботизированной руки?
Конфигурация, в которой рука мгновенно утрачивает возможность перемещать рабочий орган в некотором направлении независимо от движения суставов. Для руки из двух звеньев очевидная сингулярность возникает при полном выпрямлении: когда рука выпрямлена, невозможно отвести рабочий орган дальше, а небольшое перемещение в этом направлении требует огромного изменения угла сустава. Практическое следствие: плавная траектория рабочего органа вблизи полного выпрямления превращается в резкое движение суставов. Планируйте траектории с запасом от границы рабочей области, а не вплотную к ней.
Почему рука оказывается не там, куда указывают расчёты?
Три причины в приблизительном порядке вероятности. Калибровка: нулевое положение сервопривода зависит от установки рычага, а вращение может идти в направлении, противоположном принятому, поэтому каждому суставу нужен сдвиг и, возможно, смена знака. Гравитация: сервопривод радиолюбительского класса, удерживающий полностью вытянутое звено, работает в самом невыгодном положении и просто провисает ниже заданного угла. И люфт: четыре градуса свободного хода в плечевом шарнире при длине звена 150 mm дают более 10 mm ошибки у схвата, причём знак меняется в зависимости от направления приближения.