Робототехника
Кинематика: прямая и обратная
Цели урока
- Вычислять FK для 2-звенного манипулятора через матрицы однородных преобразований
- Понимать, почему IK неоднозначна, и знать классификацию методов её решения
- Записывать DH-таблицу для произвольного манипулятора
- Использовать якобиан для связи скоростей суставов и end-effector, выявлять сингулярности
Предварительные знания
Da Vinci хирургический робот выполняет операцию: врач двигает джойстик, а манипулятор внутри пациента повторяет движение с точностью до 0.1 мм. Как компьютер за миллисекунды пересчитывает положение джойстика в углы 7 суставов робота? Ответ - кинематика, математический мост между пространством суставов и пространством задач.
- **Промышленная сварка**: робот KUKA вычисляет углы 6 суставов 250 раз в секунду, чтобы вести сварочную горелку по шву с точностью 0.05 мм
- **Компьютерная анимация**: персонажи Pixar двигаются естественно благодаря IK - аниматор задаёт позицию руки, а алгоритм находит позы всех суставов
- **Космические манипуляторы**: Canadarm2 на МКС использует прямую и обратную кинематику для стыковки грузовых кораблей в условиях невесомости
От Вокансона до PUMA: формализация кинематики
В XVIII веке французский механик Жак де Вокансон создавал механических автоматонов - флейтиста (1738) и утку (1739), способную имитировать переваривание пищи. Это первые попытки формализовать движение звеньев. Настоящий математический фундамент заложен в 1955 году: Жак Денавит и Ричард Хартенберг опубликовали статью «A kinematic notation for lower-pair mechanisms based on matrices» - систематический метод через 4 параметра на сочленение. В 1978 году Unimate PUMA 560 стал первым промышленным роботом с DH-параметрами в документации, и этот стандарт используется до сих пор.
Прямая кинематика
**KUKA KR 210 R2700: 250 сварочных швов в час, точность 0.05 мм.** Контроллер в каждый момент времени знает угол каждого из 6 суставов - и из этих чисел вычисляет, где именно находится сварочная горелка. **Прямая кинематика** (forward kinematics, FK) - однозначная задача: один набор углов всегда даёт одну позицию в пространстве.
FK - это функция **f(q) = x**, где **q** - вектор углов суставов (joint angles), а **x** - положение и ориентация end-effector в декартовом пространстве. Для N-звенного манипулятора q имеет размерность N.
Простейший случай - **плоский 2-звенный манипулятор**. Два звена длиной L1 и L2, два вращательных сустава с углами theta1 и theta2. Положение конца вычисляется через тригонометрию:
Для 3D-манипуляторов с 6+ степенями свободы тригонометрия становится громоздкой. Поэтому используют **матрицы однородных преобразований** 4x4, которые комбинируют вращение и перемещение:
| Суставы | Степени свободы | Рабочее пространство | Пример |
|---|---|---|---|
| 2 вращательных | 2 DOF | Плоская область | SCARA (плоскость) |
| 3 вращательных | 3 DOF | Сфера с вырезами | Palletizing robot |
| 6 вращательных | 6 DOF | Полная 3D свобода | Промышленный манипулятор |
| 7+ вращательных | Избыточный | 6 DOF + маневренность | Рука человека (7 DOF) |
Прямая кинематика решает задачу:
Обратная кинематика
**Da Vinci хирургический робот: хирург перемещает джойстик на 2 см - инструмент внутри пациента повторяет движение с точностью 0.1 мм.** Система за миллисекунды пересчитывает желаемую позицию кончика инструмента в углы 7 суставов - это **обратная кинематика** (IK). Если FK однозначна, то IK математически куда сложнее.
IK может иметь **множество решений**, **единственное решение** или **не иметь решений вовсе**. Для 6-DOF манипулятора типичная точка в рабочем пространстве может быть достигнута 8 или даже 16 различными конфигурациями суставов.
Для простых манипуляторов (2-3 DOF) IK решается **аналитически** - через формулы тригонометрии. Но для 6-DOF и выше аналитическое решение существует только для определённых конфигураций (например, когда три последних оси пересекаются в одной точке - **сферическое запястье**).
| Метод IK | Тип | Скорость | Точность | Применение |
|---|---|---|---|---|
| Аналитический | Closed-form | Мгновенно | Точный | Простые манипуляторы, сферическое запястье |
| Якобиан (итеративный) | Численный | Быстро | Приближённый | Общие манипуляторы, real-time |
| CCD (Cyclic Coordinate Descent) | Численный | Средне | Приближённый | Анимация, игры |
| FABRIK | Эвристический | Быстро | Приближённый | Цепи с ограничениями, humanoids |
Когда у робота **больше 6 DOF** (избыточный манипулятор), IK имеет бесконечное множество решений. Это не проблема - наоборот, робот может выбирать наиболее удобную конфигурацию, обходить препятствия или минимизировать расход энергии.
Почему обратная кинематика сложнее прямой?
Параметры Денавита-Хартенберга
**PUMA 560, 1978: первый промышленный манипулятор с компьютерным управлением.** Его кинематика полностью описывается таблицей из 6 строк по 4 числа - DH-параметры. **Нотация Денавита-Хартенберга (DH)** - стандартный метод систематического описания кинематической цепи. Каждому звену соответствует ровно **4 параметра**, которые полностью определяют геометрию сочленения.
**4 параметра DH** для i-го звена: - **ti** (theta) - угол поворота вокруг оси Zi-1 (переменный для вращательного сустава) - **di** - смещение вдоль оси Zi-1 (переменный для призматического сустава) - **ai** (alpha) - длина звена, расстояние между осями Z - **ai** - угол скрутки, поворот оси Zi относительно Zi-1 вокруг оси X
Рассмотрим конкретный пример. **PUMA 560** - классический 6-DOF манипулятор, ставший эталоном для обучения робототехнике. Его DH-таблица описывает всю кинематику в 6 строках:
| Звено i | ti (переменный) | di (мм) | ai (мм) | ai (°) |
|---|---|---|---|---|
| 1 | t1 | 0 | 0 | -90 |
| 2 | t2 | 149.09 | 431.8 | 0 |
| 3 | t3 | 0 | -20.32 | 90 |
| 4 | t4 | 433.07 | 0 | -90 |
| 5 | t5 | 0 | 0 | 90 |
| 6 | t6 | 56.25 | 0 | 0 |
Существуют **две конвенции** DH-параметров: классическая (Denavit-Hartenberg, 1955) и модифицированная (Craig, 1986). Они отличаются порядком применения преобразований. При чтении статей и документации всегда проверяйте, какая конвенция используется - перепутать их означает получить неправильную кинематику.
Сколько параметров DH описывают каждое сочленение робота?
Якобиан манипулятора
**Canadarm2 на МКС стыкует грузовой корабль: конечный эффектор движется со скоростью 3 мм/с в невесомости.** FK говорит, где сейчас находится захват. Якобиан отвечает на следующий вопрос: если каждый сустав вращается с угловой скоростью dtheta/dt, с какой скоростью движется сам захват? **Якобиан** - матрица частных производных, связывающая скорости суставов и конца манипулятора.
**Якобиан** J - матрица размером 6xN (6 - линейная + угловая скорость, N - число суставов): **x_dot = J(q) * q_dot** где x_dot - вектор скорости end-effector (6D: vx, vy, vz, wx, wy, wz), q_dot - вектор скоростей суставов (ND). Якобиан зависит от текущей конфигурации q!
Якобиан - ключ к **итеративному IK**. Вместо аналитического решения используются итерации: вычисляется ошибка delta_x между текущей и желаемой позицией, затем находится нужная коррекция суставов delta_q = J_inv * delta_x. Повторяется, пока ошибка не станет малой.
Когда определитель якобиана det(J) = 0, робот находится в **сингулярности** - конфигурации, где теряется одна или несколько степеней свободы. В сингулярности робот не может двигаться в определённом направлении, а для IK требуются бесконечные скорости суставов. Промышленные контроллеры отслеживают близость к сингулярности и ограничивают скорость.
| Применение якобиана | Формула | Описание |
|---|---|---|
| Скорости | x_dot = J*q_dot | Скорость end-effector через скорости суставов |
| Силы | tau = J_T * F | Моменты суставов через силу на end-effector |
| IK (итеративный) | delta_q = J_inv * delta_x | Коррекция суставов для приближения к цели |
| Манипулируемость | w = sqrt(det(J*J_T)) | Мера «ловкости» робота в текущей позе |
Транспонированный якобиан **J_T** связывает силу на end-effector с моментами суставов: **tau = J_T * F**. Это принцип виртуальных работ: если робот держит груз, J_T позволяет рассчитать нагрузку на каждый мотор. Двойственность «скорости - силы» закодирована в одной матрице.
Обратная кинематика всегда имеет единственное решение
IK может иметь множество решений, единственное решение или не иметь решений вовсе. Для 6-DOF манипулятора одна точка часто достижима 8-16 конфигурациями.
FK - это функция «многие-к-одному»: разные наборы углов могут давать одну и ту же позицию end-effector (например, «локоть вверх» и «локоть вниз»). Поэтому обращение этой функции неоднозначно. А за пределами рабочего пространства решений нет совсем.
Что означает det(J) = 0 для манипулятора?
Ключевые идеи
- **Прямая кинематика (FK)** - однозначная функция f(q)=x: углы суставов -> позиция end-effector. Реализуется перемножением матриц преобразований.
- **Обратная кинематика (IK)** - может иметь 0, 1 или множество решений. Решается аналитически (для простых манипуляторов) или итеративно через якобиан.
- **DH-параметры** - 4 числа на сочленение (theta, d, a, alpha), систематически описывающие любую кинематическую цепь.
- **Якобиан** J связывает скорости суставов со скоростями end-effector (x_dot=J*q_dot) и силы с моментами (tau=J_T*F). При det(J)=0 - сингулярность.
Связанные темы
Кинематика - основа для всех остальных задач робототехники:
- Основы робототехники — FK/IK позволяют управлять сенсорами и актуаторами из предыдущего урока в координатах задачи
- ROS 2 — В ROS 2 библиотека MoveIt реализует IK и планирование движений, используя всё из этого урока
- Линейная алгебра — Матрицы преобразований, якобианы и сингулярности - прямое применение линейной алгебры
Вопросы для размышления
- Хирургический робот Da Vinci: почему для него критически важна проверка на сингулярности якобиана? Что может произойти, если манипулятор окажется в сингулярности во время операции?
- Почему рука человека имеет 7 степеней свободы (избыточна), хотя 6 достаточно для достижения любой позиции? Какое преимущество даёт избыточность?
- Для реализации IK для робота-пылесоса с простой рукой-хваталкой (3 DOF) - какой метод лучше выбрать: аналитический или итеративный? Почему?
Связанные уроки
- rob-01 — Актуаторы и координатные системы вводятся в первом уроке
- rob-03 — MoveIt в ROS 2 реализует IK на основе якобиана из этого урока
- la-01-vectors-intro — Матрицы вращения и векторы - математическая основа DH-параметров
- rob-05 — Планирование траекторий строится поверх FK/IK
- opt-01 — Численная IK - это задача оптимизации с ограничениями
- cg-03 — Скелетная анимация использует FK/IK для персонажей
- rob-08 — Динамика манипулятора расширяет кинематику учётом масс и сил
- la-06-transformations