У робота есть два способа определения пространства состояний: положение с ориентацией рабочего инструмента и углы поворотов звеньев. Первое называется операционным пространством, второе – конфигурационным.
Переход из конфигурационного пространства однозначен (прямая задача кинематики), а в обратную сторону (обратная задача кинематики) – нет. Из углов поворота звеньев робота мы однозначно можем получить положение и ориентацию рабочего инструмента. Решение обратной задачи достаточно трудоёмко.
Это вызвано сильной нелинейностью связи конфигурационного и операционного пространств. Обычно предлагается решать эту задачу геометрически либо через взятие частных производных.
В своей
магистерской диссертации я предложил новый способ решения обратной задачи кинематики. Обычно ориентация рабочего инструмента робота параметризуется углами Эйлера. Однако они определяются неоднозначно и имеют разрывы, если рассматривать их зависимость от углов поворота звеньев.
Я ввёл новую параметризацию через кватернионы, выраженные параметрами Родриго-Гамильтона. Полученные зависимости оказались непрерывными относительно конфигурационного пространства.
Это позволило составить функцию ошибки между текущим положением рабочего инструмента и желаемым. При этом функция ошибки в конечном счёте являлась скалярной функцией, зависящей только от углов поворота звеньев. Тогда стандартными методами для каждого робота можно составить функцию такого рода, а потом классическими метода минимизировать значение, т. е. свести ошибку решения к нулю.
Для проверки разработанного алгоритма для робота Kuka Youbot было составлено несколько опорных точек, каждая из которых описывала произвольные достижимые положения рабочего инструмента и ориентацию. По каждой из точек с помощью минимизации были получены соответствующие углы поворота звеньев, после чего с помощью Gazebo и Ros был составлен python-скрипт, который последовательно отправлял виртуальному роботу задания по углам поворота звеньев и сравнивал полученные положение и ориентацию с заданными.