- •П. К. Лопатин Интеллектуальные манипуляционные роботы
- •Предисловие
- •Введение
- •1. Кинематика манипуляторов
- •1.1. Манипулятор как система твердых тел
- •1.2. Кинематика произвольного движения тела,
- •1.3. Кинематика поступательного движения тела
- •1.4. Кинематика произвольного движения твердого тела
- •1.5. Характер связей между звеньями
- •1.6. Расстановка систем координат по алгоритму Денавита-Хартенберга
- •1.7. Вывод матрицы перехода от I-й к (I–1)-й системе координат
- •1.8. Уравнение кинематики манипулятора
- •1.9. Скорость и ускорение некоторой точки манипулятора
- •Правая часть (1.45), если k j, k I;
- •0, Если k j.
- •1.10. Прямая задача кинематики
- •1.11. Обратная задача кинематики
- •Примеры решения задач
- •Разделим уравнение (1.71) на (1.72). Получим
- •Задачи для самостоятельного решения
- •Библиографический список
- •2.1. Уравнения Лагранжа II рода
- •2.2. Кинетическая энергия манипулятора
- •Поскольку интеграл – это сумма, то формулу (2.3) можно записать в виде уравнения
- •Из (1.36) следует, что
- •Из формулы (1.42) видно, что
- •2.3. Потенциальная энергия манипулятора
- •2.4. Уравнение динамики манипулятора
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3. Планирование путей, траекторий и управление манипуляторами
- •3.1. Понятие пространства обобщенных координат.
- •Постановки задачи
- •3.2. Планирование пути методом полиномиальной аппроксимации
- •Решая эту систему, получим
- •3.3. Планирование пути с учетом ограничений на положение, скорость и ускорение
- •3.4. Планирование траектории с учетом динамики манипулятора
- •Библиографический список
- •3.5. Исполнение траектории
- •Библиографический список
- •Библиографический список
- •3.6.1. Алгоритм полного перебора
- •Библиографический список
- •3.6.2. Алгоритм перебора в глубину
- •3.6.3. Алгоритм а*
- •Библиографический список
- •3.6.4. Алгоритм фронта волны
- •Библиографический список
- •3.6.5. Алгоритм полиномиальной апроксимации
- •Библиографический список
- •3.6.6. Диаграммы вороного
- •Библиографический список
- •3.6.7. Алгоритм разделения ячеек
- •1. Предварительный поиск маршрута
- •2. Разделение плоскости на свободные области
- •3. Соединение свободных областей
- •4. Объединение свободных соединенных областей
- •5. Соединение свободных областей на соседних плоскостях
- •6. Создание объединенных областей и проверка достижимости
- •7. Построение маршрута
- •8. Пример
- •Библиографический список
- •Примеры решения задач
- •3.7. Управление манипуляторами в среде с неизвестными препятствиями
- •Библиографический список
- •Алгоритм
- •3.8. Иерархия уровней Управления роботами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Заключение
- •Учебное издание
- •Учебное пособие
3.6.3. Алгоритм а*
В алгоритме А* [1, 2] все точки в пространстве обобщенных координат, соответствующие разрешенным конфигурациям, представляются в виде вершин нагруженного графа. Вес ребра графа соответствуют расстояниям между вершинами, соединенными этим ребром. Путь ищется на графе от начальной вершины s до конечной вершины e. В основе алгоритма лежит выбор на каждом шаге поиска следующей точки пути такой точки, чтобы значение ее оценочной функции было минимальным. В качестве оценочной функции в данной работе использовалась функция
f(n)=g(n)+h(n), (3.108)
где g(n) – стоимость пути в дереве перебора от начальной вершины до вершины n, а h(n) – это расстояние в пространстве обобщенных координат от точки, соответствующей конфигурации n, до целевой конфигурации.
Алгоритм А* может быть представлен следующей последовательностью шагов:
Поместить начальную вершину s в список, называемый ОТКРЫТ, и вычислить f(s).
Если список ОТКРЫТ пуст, то на выход подается сигнал о неудаче; в противном случае нужно перейти к следующему этапу.
Взять из списка ОТКРЫТ ту вершину, для которой значений функции f наименьшее, и поместить ее в список ЗАКРЫТ. Дать этой вершине имя n. (В случае совпадения значений f для нескольких вершин, можно выбирать вершину с минимальным f произвольно, но всегда необходимо отдавать предпочтение целевой вершине.)
Если n – целевая вершина, то на выход подать решающий путь, получаемый прослеживанием соответствующих указателей вершин на свою родительскую вершину. В противном случае переходить к следующему этапу.
Раскрыть вершину n, построив все непосредственно следующие за ней вершины. (Если таких не оказалось, переходить к шагу 2.) Для каждой такой дочерней вершины ni вычислить значение f(ni).
Связать с теми из вершин ni, которых еще нет в списках ОТКРЫТ или ЗАКРЫТ, только что подсчитанные значения f(ni). Поместить эти вершины в список ОТКРЫТ и провести от них к вершине n указатели.
Связать с теми из непосредственно следующих за n вершинами, которые уже были в списках ОТКРЫТ или ЗАКРЫТ, меньшее из прежних и только что вычисленных значений f. Поместить в список ОТКРЫТ те из непосредственно следующих за n вершин, для которых новое значение f оказалось ниже, и изменить направление указателей от всех вершин, для которых значение f уменьшилось, направив их к n.
Перейти к шагу 2.
Рассмотрим использование алгоритма А* на примере, приведённом на рисунке 3.6. В результате работы найден путь A→E→I→J
ОТКРЫТ
ЗАКРЫТ
A
A:n, f(n)=0
g(ni)=AF=1
h(ni)=F
EI
J=3
f(ni)=4,
AF
g(ni)=1
h(ni)=
EI
J=2
f(ni)=3,
AE
AE
g(ni)=
AEI=2
h(ni)=
I J=1
f(ni)=3,
AEI
g(ni)=
AED=2
h(ni)=DIJ=2
f(ni)=4,
AED
g(ni)=
AEC=2
h(ni)=C
DIJ=3
f(ni)=5,
AEC
AEI
AEI
J
Рис.3.9.
Алгоритм А* применим для n-мерного пространства состояний. Алгоритм за конечное число шагов либо находит путь, либо сообщает,что путь найден быть не может. В среде без препятствий найденный путь является оптимальным.