Задача калибровки «глаз-рука»
Проблема калибровки «рука–глаз» (англ. hand–eye calibration problem) — задача в области робототехники и математики, связанная с определением преобразования между конечным исполнителем робота и одним или несколькими датчиками (камера или лазерный сканер) либо между основанием робота и мировой системой координат[1]. Концептуально задача аналогична биологической координации «рука–глаз», откуда и происходит название. Математически она формулируется как {{{1}}}, где A и B — две системы (обычно основание робота и камера), а X и Z — неизвестные матрицы преобразования. Особо изучаемый частный случай — когда {{{1}}}, что приводит к задаче {{{1}}}. Для решения этой задачи используются различные методы: раздельные решения в замкнутой форме, одновременные решения в замкнутой форме и итерационные методы[2]. Ковариация матрицы X в уравнении может быть вычислена для случайно возмущённых матриц A и B[3].
Данная проблема является ключевой частью калибровки роботов, а эффективность и точность её решений определяют скорость и точность калибровки.
Математическая постановка
Математическая постановка задачи калибровки «рука — глаз» описывается через однородные матричные уравнения, связывающие преобразования между различными системами координат. Наиболее известными формами являются уравнения вида и [4]. Уравнение используется для определения неизвестного постоянного преобразования между двумя системами координат при известных относительных движениях. В зависимости от расположения камеры выделяют две основные конфигурации:
- «Глаз на руке» (англ. Eye-in-Hand): камера установлена на исполнительном устройстве (схвате) робота. Матрица описывает искомое преобразование из системы координат исполнительного устройства в систему координат камеры. Матрица отражает изменение положения исполнительного устройства относительно базы робота (определяется из прямой кинематики), а — изменение положения калибровочного объекта относительно камеры (вычисляется методами компьютерного зрения)[4].
- «Глаз в мире» (англ. Eye-to-Hand): камера стационарно закреплена и наблюдает за роботом. В этом случае — преобразование из системы координат базы робота в систему координат камеры, — движение исполнительного устройства относительно базы, а — движение калибровочного объекта, закреплённого на руке робота, относительно камеры[4].
Уравнение является обобщением и применяется для более сложных сценариев, таких как одновременная калибровка преобразований «рука — глаз» и «робот — мир». В данной постановке — преобразование от базы к исполнительному устройству, — неизвестное преобразование от исполнительного устройства к камере, — неизвестное преобразование от базы к мировой системе координат, а — преобразование от камеры к калибровочному объекту. Это уравнение устанавливает равенство двух кинематических цепей, ведущих от базы робота к калибровочному объекту: через манипулятор и камеру, и напрямую[4].
Методы
Для решения проблемы разработано множество различных методов, которые обычно подразделяют на раздельные (separable) и одновременные (simultaneous) решения. Каждый подход имеет специфику, свои достоинства и недостатки, особенности формулировок и применения. Вне зависимости от метода, общим элементом является активное использование кватернионов для представления вращений. Современная классификация включает не только традиционные геометрические подходы, но и активно развивающиеся методы на основе глубокого обучения[5].
Пусть уравнение имеет вид {{{1}}}, его можно разбить на чисто вращательную и трансляционную части — методы, использующие такой подход, называют раздельными. Пусть \mathbf{R}_A — 3×3 матрица вращения, \mathbf{t}_A — вектор сдвига 3×1. Тогда уравнение разбивается на две части:[6]
- {{{1}}}
- {{{1}}}
Второе уравнение становится линейным, если \mathbf{R}_Z известно. Наиболее распространённый подход — сначала найти \mathbf{R}_X и \mathbf{R}_Z по первому уравнению, затем с использованием \mathbf{R}_Z решить второе. Для представления вращений используют кватернионы, что позволяет получить линейное решение. Однако недостаток раздельных методов в том, что ошибка в оценке вращательных матриц усиливается при расчёте вектора трансляции[7]. Существуют методы, позволяющие избежать этого недостатка. Основополагающими классическими алгоритмами для раздельного решения (в частности, для распространённого частного случая {{{1}}}) являются методы, предложенные в 1989 году:
- Алгоритм Шиу и Ахмада (англ. Shiu & Ahmad): один из первых методов, в котором из матричного уравнения выделяется отдельное уравнение для вращения ({{{1}}}). После нахождения матрицы вращения вычисляется вектор трансляции[8].
- Алгоритм Цая и Ленца (англ. Tsai & Lenz): метод, получивший широкую известность благодаря своей эффективности и робастности. Он решает уравнение для вращения с использованием представления «ось-угол», после чего вычисляет вектор трансляции[9].
Принцип раздельного решения, заложенный в этих работах, стал фундаментальным и служит основой для многих последующих алгоритмов[10].
Одновременные методы предполагают одновременное определение как X, так и Z (а не последовательное, как в раздельных решениях), что приводит к гораздо меньшему распространению ошибки. Для одновременного решения (в том числе уравнения {{{1}}}) активно используются двойственные кватернионы, так как они позволяют компактно представить вращение и трансляцию в единой структуре и решать обе задачи одновременно, получая линейное уравнение, позволяющее находить неизвестные преобразования в линейной форме. Альтернативный подход использует метод наименьших квадратов к произведению Кронекера матриц A⊗B. Экспериментальные результаты подтверждают, что одновременные решения дают меньшую ошибку по сравнению с раздельными методами на кватернионах.
Итерационные методы также применяются для борьбы с распространением ошибок. Один из примеров такого подхода — программа минимизации . В процессе итераций программа сходится к решению X, которое не зависит от начальной ориентации робота \mathbf{R}_B. Решения могут включать двухшаговые итерационные процессы и также могут использовать представление уравнений через двойственные кватернионы[11]. Несмотря на то, что исторически итерационные методы могли требовать значительных вычислительных ресурсов и не гарантировали нахождение оптимального решения[7], современные алгоритмы (включая подходы машинного обучения, такие как LRBO) обладают высокой вычислительной эффективностью и могут выполняться менее чем за секунду[12]. Для повышения точности калибровки применяется итеративный алгоритм ближайших точек (ICP). В рамках этого подхода начальное приближение матрицы преобразования вычисляется классическими методами (например, алгоритмом Цая — Ленца), после чего алгоритм ICP итеративно уточняет результат, минимизируя расстояние между облаками точек. Активное развитие также получили итерационные методы на основе глубокого обучения. Современные решения, такие как EasyHeC++ и LRBO2, позволяют проводить автоматическую безмаркерную калибровку, оценивая параметры преобразования напрямую по 3D-облакам точек или изображениям[13][14].
Современные подходы к калибровке «рука — глаз» позволяют отказаться от использования традиционных калибровочных досок, опираясь на естественные или стандартизированные геометрические особенности системы. Одним из таких направлений является использование геометрических особенностей фланца робота (места крепления инструмента) в качестве референтного объекта. На основе облака точек, полученного с помощью 3D-сканера, и известных стандартизированных параметров фланца вычисляются его ключевые точки. Это позволяет напрямую определять трансформацию между сенсором и конечным звеном манипулятора, достигая субмиллиметровой точности[15].[16] Другой подход реализован в методе LRBO (англ. Look at Robot Base Once), который использует основание самого робота в качестве калибровочного объекта. Система применяет 3D-зрение для распознавания основания и совмещения полученного облака точек с эталонной 3D-моделью. Метод полностью автоматизирован, применим для различных конфигураций установки камеры и позволяет выполнить автоматическую калибровку без использования внешних маркеров[12].[17]
Матрица {{{1}}}, где X — неизвестная, имеет бесконечно много решений, что изучается с помощью геометрического подхода. Для нахождения X необходимо рассмотреть одновременное выполнение двух уравнений: {{{1}}} и {{{1}}}; матрицы A_1, A_2, B_1, B_2 должны быть определены экспериментально в оптимизированном режиме.
Здесь p_b — неизвестная координата точки p в базовой системе робота; R_b, T_b — известное соотношение между базовой системой и конечным исполнителем; R_s, T_s — неизвестное соотношение между конечным исполнителем и сканером; p_s — известная координата точки p в локальной системе сканера. Методы включают следующее.
- Прямые ребра
Существует метод калибровки «рука–глаз» для 2D лазерного профиломера с использованием прямых ребер объектов.
Применение
Алгоритмы калибровки «рука — глаз» имеют важное практическое значение в критических областях, в частности, в роботизированной малоинвазивной хирургии[18]. На примере хирургических систем, таких как da Vinci, калибровка обеспечивает высокую точность и безопасность процедур, устанавливая математическое соответствие между системой координат хирургического инструмента и эндоскопической камеры[19]. Это гарантирует, что движения манипуляторов в точности соответствуют командам хирурга. Кроме того, точная калибровка позволяет реализовать технологии дополненной реальности, совмещая изображение с эндоскопа с данными дооперационных исследований в режиме реального времени[20].
Для снижения ошибок локализации инструмента, которые могут возникать из-за особенностей конструкции роботов с тросовым приводом, активно развиваются методы калибровки «на лету» (англ. on-the-fly)[21][20]. Данные алгоритмы позволяют вычислять матрицу преобразования в режиме реального времени и динамически корректировать её непосредственно во время хирургического вмешательства. Современные подходы, представленные в начале 2026 года, способны работать без необходимости предварительного обучения, используя сопоставление ключевых точек и методы фильтрации. Применение интраоперационной калибровки «на лету» позволяет значительно снизить ошибки позиционирования инструментов и поддерживать высокую точность без прерывания операции[18].
Программные реализации
Для решения задачи калибровки «рука — глаз» разработчикам доступен ряд программных библиотек и пакетов. В библиотеке компьютерного зрения OpenCV основным инструментом является функция cv::calibrateHandEye(). Она вычисляет матрицу преобразования между системой координат захвата робота и камерой, поддерживая классические алгоритмы калибровки (методы Цая — Ленца, Парка — Мартина, Оро, Андреффа и Даниилидиса)[22].
В экосистеме ROS 2 представлены пакеты, которые предоставляют инструменты для сбора данных, управления роботом и автоматизации процесса:
- easy_handeye2 — аппаратно-независимый пакет с графическим интерфейсом для управления процессом калибровки, сбора данных и оценки точности (опционально интегрируется с MoveIt!)[23].
- visp_hand2eye_calibration — пакет в составе стека
vision_visp, интегрирующий библиотеку визуального сервоуправления ViSP[24]. - roboreg (ros2_roboreg) — решение для безмаркерной калибровки с помощью RGB-D камер, позволяющее достичь миллиметровой точности всего по трём конфигурациям робота[25].