УДК 681.32

ПРОГРАММИРОВАНИЕ КЛАССИЧЕСКИХ ЗАДАЧ РОБОТОТЕХНИКИ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКООРИЕНТИРОВАННОЙ ОПТИМИЗАЦИИ CAS MAPLE 9.03

С. Л. Герасюто

$($Кафедра "Робототехнические системы", Белорусский национальный технический университет, г. Минск$)$

В работе рассмотрены методы компьютерной алгебры применительно к классическим задачам робототехники. Найдено алгебраическое решение обратной задачи кинематики для плоского двухзвенного манипулятора с вращательными парами пятого класса. Выведено в аналитическом виде необходимое и достаточное условие существования решения. Проведена оптимизация решения для языка программирования С и JAVA. Предложен вариант интеграции разнородных программных продуктов для решения набора научно-прикладных задач робототехники.

Введение

Существенным прорывом в области современной математической науки, оперирующей символьными методами, являются системы компьютерной алгебры. Их область применения постоянно расширяется, а функциональные возможности совершенствуются и дополняются. Это позволяет на обыкновенных персональных компьютерах решать быстро как классические, так и "нерешаемые" в недалеком прошлом задачи $[1]$, $[2]$, $[3]$, $[4]$. Подробную современную информацию по данной тематике можно найти в $[5]$, $[6]$, $[7]$.

1 Аналитическое решение для плоского двухзвенного манипулятора с вращающимися парами пятого класса

В отличие от прямой задачи кинематики, где существует однозначное решение, в обратной задаче кинематики всегда есть множество решений. Рассмотрим двухзвенный манипулятор $($рис. 1$)$.

Двухзвенный манипулятор с вращающимися парами пятого класса

Рисунок 1 - Двухзвенный манипулятор с вращающимися парами пятого класса

Обычное классическое векторное решение такой задачи предусматривает введение пространства присоединенных переменных для кинематической пары каждого из звеньев. Решение находится в виде пар углов $($в данном случае две пары$)$, которые вычисляются ЭВМ через специальную функцию arctg2 .

Аналитический подход не предусматривает дополнительного преобразования систем координат и оперирует неизвестными только в декартовой системе координат. В конечном итоге мы получаем те же наборы решений, что и в векторном методе, но уже в виде координат точек x2,y2 $($в данном примере два$)$. Для этого надо решить в общем виде систему уравнений \eqref{eq:sample1}, связывающую координаты манипулятора. Уравнения системы \eqref{eq:sample1} представляют собой задачу аналитической геометрии о пересечении двух произвольных окружностей на плоскости.

\begin{cases} \begin{equation} \label{eq:sample1} x_1 = 0\\ y_1 = 0\\ x_3 - задается\\ y_3 - задается\\ l - длина звеньев (постоянный параметр)\\ (x_2 - x_1)^2 + (y_2 - y_1)^2 = 1^2\\ (x_2 - x_3)^2 + (y_2 - y_3)^2 = 1^2 \end{equation} \end{cases}

Полное решение \eqref{eq:sample1} получено при помощи CAS Mathematica $($CAS – computer algebra system$)$ и приведено в приложении. Упрощенное решение, где манипулятор робота считается помещенным в начало системы координат (x_1=0\;и\;y_1=0) и длины звеньев равны (l_1=l_2=l) приведено ниже \eqref{eq:sample2}.

\begin{cases} \begin{equation} \label{eq:sample2} x2 = \frac{x3^4+x3^2y3^2-y3\sqrt{-x3^2(x3^2+y3^2)(-4l^2+x3^2+y3^2)}}{2x3(x3^2+y3^2)}\\ y2 = \frac{x3^2y3+y3^2+\sqrt{-x3^2(x3^2+y3^2)(-4l^2+x3^2+y3^2)}}{2(x3^2+y3^2)}\\ x2 = \frac{x3^4+x3^2y3^2+y3\sqrt{-x3^2(x3^2+y3^2)(-4l^2+x3^2+y3^2)}}{2x3(x3^2+y3^2)}\\ y2 = \frac{x3^2y3+y3^2-\sqrt{-x3^2(x3^2+y3^2)(-4l^2+x3^2+y3^2)}}{2(x3^2+y3^2)} \end{equation} \end{cases}

2 Оптимизация решения для языка программирования

Полное или упрощенное решение \eqref{eq:sample2} являются неоптимизированными математическими формулами. Для эффективного их выполнения на ЭВМ нужная языкоориентированная оптимизация. Для этого применен CAS Maple.

Язык C

Неоптимизированный вариант:

restart:
with$($CodeGeneration$)$:
C$($$($x3^4+x3^2*y3^2-y3*sqrt$($-x3^2*$($x3^2+y3^2$)$*$($-4*l^2+x3^2+y3^2$)$$)$$)$/$($2*x3*$($x3^2+y3^2$)$$)$, resultname="x2"$)$;
x2 = $($pow$($x3, 0.4e1$)$ + x3 * x3 * y3 * y3 – y3 * sqrt$($-x3 * x3 * $($x3 * x3 + y3 * y3$)$ * $($-$($double$)$ $($4 * l * l$)$ + x3 * x3 + y3 * y3$)$$)$$)$ / x3 / $($x3 * x3 + y3 * y3$)$ / 0.2e1;

Оптимизированный вариант с использованием промежуточных переменных:

restart:
with$($CodeGeneration$)$:
C$($$($x3^4+x3^2*y3^2-y3*sqrt$($-x3^2*$($x3^2+y3^2$)$*$($-4*l^2+x3^2+y3^2$)$$)$$)$/$($2*x3*$($x3^2+y3^2$)$$)$, optimize$)$;
t1 = $($int$)$ $($x3 * x3$)$;
t2 = $($double$)$ t1 * $($double$)$ t1;
t3 = $($int$)$ $($y3 * y3$)$;
t5 = $($int$)$ $($$($double$)$ t1 + $($double$)$ t3$)$;
t7 = $($int$)$ $($l * l$)$;
t11 = sqrt$($-$($double$)$ $($t1 * t5 * $($-4 * t7 + t1 + t3$)$$)$$)$;
t18 = $($t2 + $($double$)$ $($t1 * t3$)$ – y3 * t11$)$ / x3 / $($double$)$ t5 / 0.2e1;

Язык Java

Неоптимизированный вариант:

restart:
with$($CodeGeneration$)$:
Java$($$($x3^4+x3^2*y3^2-y3*sqrt$($-x3^2*$($x3^2+y3^2$)$*$($-4*l^2+x3^2+y3^2$)$$)$$)$/$($2*x3*$($x3^2+y3^2$)$$)$, resultname="x2"$)$;
x2 = $($Math.pow$($x3, 0.4e1$)$ + x3 * x3 * y3 * y3 – y3 * Math.sqrt$($-x3 * x3 * $($x3 * x3 + y3 * y3$)$ * $($-$($double$)$ $($4 * l * l$)$ + x3 * x3 + y3 * y3$)$$)$$)$ / x3 / $($x3 * x3 + y3 * y3$)$ / 0.2e1;

Оптимизированный вариант с использованием промежуточных переменных:

restart:
with$($CodeGeneration$)$:
Java$($$($x3^4+x3^2*y3^2-y3*sqrt$($-x3^2*$($x3^2+y3^2$)$*$($-4*l^2+x3^2+y3^2$)$$)$$)$/$($2*x3*$($x3^2+y3^2$)$$)$, optimize$)$;
t1 = $($int$)$ $($x3 * x3$)$;
t2 = $($double$)$ t1 * $($double$)$ t1;
t3 = $($int$)$ $($y3 * y3$)$;
t5 = $($int$)$ $($$($double$)$ t1 + $($double$)$ t3$)$;
t7 = $($int$)$ $($l * l$)$;
t11 = Math.sqrt$($-$($double$)$ $($t1 * t5 * $($-4 * t7 + t1 + t3$)$$)$$)$;
t18 = $($t2 + $($double$)$ $($t1 * t3$)$ – y3 * t11$)$ / x3 / $($double$)$ t5 / 0.2e1;

3 Необходимое и достаточное условие существования решения

При реализации модели плоского двухзвенника на ЭВМ для отброса некорректных данных нужно иметь необходимое и достаточное условие существования решения.

Для пояснения приведем пример иллюстрирующий, что именно CAS Mathematica находит для такого рода задач.

Найти необходимое и достаточное условие для уравнения\eqref{eq:sample3}

\begin{equation} \label{eq:sample3} |x| + |y| = l \end{equation}

Геометрическое решение данной проблемы приведено на $($рис. 2$)$

Геометрическое решение уравнения

Рисунок 2 - Геометрическое решение

Необходимое и достаточное условие найденное CAS Mathematica

\begin{gather*} 1+x=0&&y=0||(1+x=y||1+x+y=0)&&1\lt x\lt0||(x=1+y||x+y=1)&&0\lt x\lt1||x=1&&y=0 \end{gather*}

, где по аналогии с языком С:
&& - логическое И
|| - логическое ИЛИ

Информацию и подробные примеры по данной методике можно найти в $[6]$.

4 Написание программ для решения набора научно-прикладных задач робототехники

Учитывая стремительное развитие вычислительной техники и большой интерес к проблемам робототехники в последние десятилетие появилось множество разработок программного обеспечения по данной тематике. На мой взгляд нужно писать как программы сугубо простые, не перегруженные дополнительными функциями, с понятным не специалисту-робототехнику интерфейсом, так и научные тяжеловесные интегрированные пакеты.

Пример копии рабочего окна программ первого типа, ориентированных на учреждения образования и предназначенных для популяризации идей робототехники приведен на $($рис. 3$)$

Копия экрана рабочей программы по исследованию работы плоского двухзвенного манипулятора

Рисунок 3 - Копия экрана рабочей программы по исследованию работы плоского двухзвенного манипулятора

Автором создана 1 очередь интегрированного приложения для проведения научных исследований. Под интегрированным приложением понимается взаимосвязь разнородных программных продуктов для выполнения единой цели. Такие приложения предлагается строить следующим образом:
  • интерфейс
    Borland Delfi, Borland C++ Builder, Visual Basic;
  • численные расчеты
    компилятор C Visual Studio с установленным оптимизатором под процессор $($Intel или AMD$)$;
  • символьные расчеты
    CAS Mathematica и Maple;
  • трехмерная визуализация
    3D Studio MAX через встроенный язык max script;
  • верстка отчетов
    MS Word для текста, MS Exel для таблиц.

В результате по одной нажатой кнопке в интерфейсной части автоматизировано проводятся численные и символьные вычисления, считается трехмерная картинка или ролик, как результат визуализации, и верстается отчет.

Конфигурация созданной рабочей программы:
  • Интерфейсная часть - Visual Basic;
  • Расчетная часть - компилятор C Visual Studio;
  • Конечная визуализация и символьные преобразования - CAS Maple;
  • Оформление отчета о вычислительном эксперименте в формате html для web публикаций, rtf для верстки в MS Word – встроенные средства CAS Maple.

Управление всем процессом ведется через интерфейсную часть.

Заключение

Приведенные в статье методы решения классических теоретических задач робототехники можно использовать для исследования сложных задача: анализ работы роботов с многозвенной кинематикой, разработка алгоритмов управления группами роботов и т. д. Вместе с тем, необходимо отметить высокую вычислительною стоимость символьных методов. Как показывает практика, их использование реально возможно только на суперкомпьютерах.

Список использованных источников