УДК 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.
Управление всем процессом ведется через интерфейсную часть.
Заключение
Приведенные в статье методы решения классических теоретических задач робототехники можно использовать для исследования сложных задача: анализ работы роботов с многозвенной кинематикой, разработка алгоритмов управления группами роботов и т. д. Вместе с тем, необходимо отметить высокую вычислительною стоимость символьных методов. Как показывает практика, их использование реально возможно только на суперкомпьютерах.Список использованных источников
- Никоноров Ю. Г. Никонорова Ю. В. Применение системы MAPLE к решению геометрических задач: Учебное пособие для студентов специальности "Прикладная математика" / Рубцовский индустриальный институт. – Рубцовск: РИО, 2002. – 80 с.
- Матросов А. В. Maple 6. Решение задач высшей математики и механики. СПб.: БХВ-Петербург, 2001, 528 с.
- Кокс Д., Литтл Дж., О'Ши Д. Идеалы, многообразия и алгоритмы. Введение в вычислительные аспекты алгебраической геометрии и коммутативной алгебры. – М.: Мир, 2000, 687 с
- Дьяконов В. Компьютерная математика. Теория и практика. Нолидж, 2000, 1296 c.
- Экспонента: MATLAB, Simulink, Центр Инженерных Технологий и Моделировния $[$Электронный ресурс$]$ – Минск: 2004. – Режим доступа: http://https://exponenta.ru
- Wolfram: Вычисления и знания, рука к руке $[$Электронный ресурс$]$ – Минск: 2004. – Режим доступа: http://www.wolfram.com
- Maplesoft - Software for Mathematics, Online Learning, Engineering $[$Электронный ресурс$]$ – Минск: 2004. – Режим доступа: https://www.maplesoft.com