Материал: 2426

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Поэтому предложено осуществлять проверку выполнения условия непересечения с препятствиями всех точек, лежащих на прямой в пространстве конфигураций между точками si1 и sj1, используя второй способ, по следующей модификации рекурсивного алгоритма.

4.1. Переменная break, определяющая наличие (break=1) либо отсутствие (break=0) пересечения груза с препятствиями при движении по прямой в пространстве конфигураций между двумя точками si1 и sj1, принимается равной нулю:

break=0. (3.104)

4.2. В цикле с идентификатором i2 происходит изменение значения индекса i2 от 1 до некоторого максимального значения i2max, определяемого условием

 

LLmin,

 

 

(3.105)

где Lmin – постоянная величина,

 

 

 

DL =

 

+ cγω ×

 

,

 

(Dx2)2 + (Dy2)2 + (Dz2)2

(Dγ 2)2 + (Dω2)2

(3.106)

здесь

 

 

 

 

x2=(xi1xj1)/i2; y2=(yi1yj1)/i2; z2=(zi1zj1)/i2;

 

 

Δγ2=(γi1γj1)/i2; Δω2=(ωi1ωj1)/i2.

(3.107)

 

L

sj1

 

 

si1

 

 

 

 

i2=1; j2 [1;2]

 

 

 

 

i2=2; j2 [1;4]

 

i2=4; j2 [1;8]

…………………………………………

Рис. 3.23. Графическая интерпретация модификации рекурсивного алгоритма деления отрезка пополам (пример на плоскости, дерево рекурсии)

Изменение индекса i2 на каждой итерации цикла i2 происходит по закону геометрической прогрессии (увеличение в 2 раза):

i2=i2 ∙ 2.

(3.108)

125

Значение i2 определяет количество равноотстоящих друг от друга точек на прямой между точками si1 и sj1, в которых на текущей итерации цикла i2 происходит проверка пересечения груза с препятствиями

(рис. 3.23).

4.3. Кроме того, на каждой итерации цикла i2 во вложенном цикле j2 с интервалом в 1 варьируется вспомогательный индекс j2:

j2 [1; i2∙2].

(3.109)

Максимальное значение j2=i2∙2 определяет суммарное количество точек, проверенных на пересечение с препятствиями с начала цикла i2. Причем на каждой итерации цикла i2 во вложенном цикле j2 проверяются новые точки, не совпадающие с проверенными на предыдущей итерации i2 (см. рис. 3.23). Для этого на каждой итерации алгоритма i2 определяются собственные значения координат точки, с которой начинается проверка:

x2нач=xi1+(xi1xj1)/(i2∙2); y2нач=yi1+(yi1yj1)/(i2∙2); z2нач=zi1+(zi1zj1)/(i2∙2);

γ2нач=γi1+(γi1γj1)/(i2∙2); ω2нач=ωi1+(ωi1ωj1)/(i2∙2). (3.110)

Затем во вложенном цикле j2 вычисляются координаты текущей проверяемой точки:

x2= x2нач+ x2∙(j2–1); y2= y2нач+ y2∙(j2–1); z2= z2нач+

z2∙(j2–1);

 

γ2= γ2нач+ Δγ2∙(j2–1); ω2= ω2нач+ Δω2∙(j2–1).

(3.111)

Соответствующие индексы координат на равномерной дискрет-

ной сетке определяются следующим образом:

 

 

i= x2/ l ; j= y2/ l ; k= z2/ l ; l= (γ2–γmin)/

u ;

 

m= (ω2– ωmin)/ u .

 

(3.112)

4.4. Далее во вложенном цикле j2 для текущей проверяемой точки с индексами координат (3.112) выполняется собственно проверка условия непересечения груза с препятствиями (3.102). В случае, если данное условие не выполняется, т.е. имеет место пересечение груза с препятствиями, переменная break принимается равной 1 и одновременно циклы j2 и i2 прерываются:

break=1. (3.113)

126

4.5. Данный пункт выполняется после завершения либо прерывания вложенных циклов j2 и i2. Выполняется проверка условия (3.104). Если данное условие не выполняется, т.е. имеет место пересечение груза с препятствиями при движении из точки si1 в sj1, вес соответствующей дуги (ребра) графа принимается равным бесконечно большому значению по (3.97). В случае выполнения условия (3.104) вес дуги рассчитывается как значение целевой функции СВД по (3.18).

5. Осуществляется поиск кратчайшего пути между двумя вершинами графа (sнач и sкон) при помощи алгоритма Дейкстры [216]. Результатом поиска является оптимальная траектория S* с минимальным значением целевой функции L*, представляющая собой последовательность из нескольких вершин графа дорожной карты Gr:

S*={sp}sn= .

p 1

6. Осуществляется линейная интерполяция найденной траектории на равномерной сетке обобщенной координаты xi (i [1; imax]) для вычисления обобщенных координат yi, zi, γi, ωi. Под интерполяцией подразумевается вычисление значений каждой из обобщенных координат груза в промежутках между узловыми точками найденной траектории, которое выполняется по известному алгоритму [65, 191].

Пуск

1

2

 

 

Ввод исходных данных: sнач=(xн0, yн0, zн0, γн0, ωн0);

sкон=(xк0, yк0, zк0, γк0, ωк0);

{ R }; imax; jmax; kmax; lmax; mmax; [YПР]; ng; cγω;

u; δopt; lзап_г; lзап_в

ig

 

3

 

 

Построение массива гиперповерхности [Ymin] по методике раздела 3.4

4

s1=sнач=(xн0, yн0, zн0, γн0, ωн0)

p=2 5 6

ip=Rand∙imax; jp=Rand∙jmax; kp=Rand∙kmax; lp=Rand∙lmax; mp=Rand∙mmax;

xp=ip∙Δl; yp= jp∙Δl; zp=kp∙Δl; γp=(lp–0,5∙lmax)∙Δu; ωp=(mp–0,5∙mmax)∙Δu

7 yp≥Ymin(ip,kp,lp,mp) Нет

Да 8 p=p+1

1

10

Да

9

Нет

sng=sкон=(xк0, yк0, zк0, γк0, ωк0)

p>(ng–1)

 

 

Рис. 3.24. Блок-схема модифицированного алгоритма ВДК для пяти учитываемых обобщенных координат груза (начало)

127

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i1

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i1=1;

i1≤ng;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i1=i1+1

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

j1=1;

j1≤ng;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j1=j1+1

 

 

 

 

 

 

 

 

 

 

i2

 

 

 

 

 

 

 

 

 

 

 

 

Нет 13

 

 

Да

 

 

14

 

i2=2; L≤ΔLmin;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i2=i2∙2

 

 

 

 

 

 

 

 

 

 

 

break=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xj1≥ xi1

 

 

 

 

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2нач=xi1+(xi1xj1)/(i2∙2); y2нач=yi1+(yi1yj1)/(i2∙2); z2нач=zi1+(zi1zj1)/(i2∙2);

 

 

 

 

 

 

 

 

 

 

 

 

γ2нач=γi1+(γi1γj1)/(i2∙2); ω2нач=ωi1+(ωi1ωj1)/(i2∙2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2=(xi1xj1)/i2;

y2=(yi1yj1)/i2;

z2=(zi1zj1)/i2;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Δγ2=(γi1γj1)/i2; Δω2=(ωi1ωj1)/i2

18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L =

( x2)2 + ( y2)2 + ( z2)2

+ cγω ×

( γ 2)2 + ( ω2)2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j2

19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j2=1; j2≤ i2∙2;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j2=j2+1

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2= x2нач+ x2∙(j2–1); y2= y2нач+ y2∙(j2–1); z2= z2нач+ z2∙(j2–1);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

γ2= γ2нач+ Δγ2∙(j2–1); ω2= ω2нач+ Δω2∙(j2–1)

 

 

 

 

21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i= x2/ l ; j= y2/ l ; k= z2/

l ; l= (γ2–γmin)/

 

u ; m= (ω2– ωmin)/

u

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

26

 

 

 

 

 

 

 

 

Да

 

22

Нет

 

23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y2≥Ymin(i,k,l,m)

 

 

break=0

 

 

 

 

 

 

 

 

 

break=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Li1,j1=∞

 

 

 

 

28

 

 

j2

 

24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

æ

 

 

 

 

 

 

 

ö

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ç

 

(xi1 - x j1 )

 

÷

 

 

 

 

 

 

 

25

 

 

 

 

 

 

 

 

 

Li1 j1 = çç + (yi1 - y j1 )2 +

÷÷ +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i2

 

 

 

 

 

 

 

 

 

 

 

 

ç

+

 

 

 

 

2

 

÷

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ç

(zi1 - z j1 )

 

 

÷

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

è

 

 

 

 

 

 

 

 

 

ø

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ cγω ×

(γ i1 - γ j1 )2 + (ωi1 - ω j1 )2

 

 

 

 

 

 

 

 

 

 

 

31

 

 

 

 

 

 

 

 

 

 

 

 

 

29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поиск кратчайшего пути между двумя вершинами

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j1

 

 

 

 

 

 

 

графа (sнач и sкон) при помощи алгоритма Дейкстры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Интерполяция и дискретная локальная оптимизация

 

 

 

 

 

 

 

 

 

 

 

 

30

 

 

 

 

 

 

найденной траектории по методике раздела 3.5

 

 

 

 

 

 

 

i1

 

 

 

 

 

 

 

Вывод резуль-

33

 

 

34

 

32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

татов: S*, L*

 

 

Останов

 

 

 

 

Рис. 3.24. Блок-схема модифицированного алгоритма ВДК для пяти учитываемых обобщенных координат груза (окончание)

128

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

равномерной решетке S*={sp}ipmax=1 .

7.Выполняется локальная оптимизация интерполированной траектории S* по методике, изложенной в разделе 3.5.

8.Определяется уточненное значение целевой функции L* оптимизированной лучшей траектории S* по (3.19).

9.Вывод результатов: L*, S*. Окончание работы алгоритма.

Блок-схема модифицированного алгоритма ВДК перемещения груза, положение которого определяют 3 линейные и 2 угловые обобщенные координаты, приведена на рис. 3.24. Вычислительные реализации модифицированного алгоритма и описанной методики на его основе в средах Microsoft Visual C++ и MATLAB показали работоспособность и эффективность алгоритма для решения поставленной задачи.

3.9. Методика планирования траектории на основе алгоритма декомпозиции линейных и угловых координат

Для решения задачи, сформулированной в разделе 3.1, предлагается применить метод декомпозиции, разбивающий исходную задачу на несколько более мелких подзадач. Данный подход использует основную идею метода динамического программирования, которая заключается в уменьшении размерности задачи за счет ее декомпозиции на подзадачи, каждая из которых имеет меньшую размерность по сравнению с основной. Оптимальное решение подзадач меньшего размера используется для решения исходной задачи [27, 74, 204, 209].

Предлагается разделить на две отдельные подзадачи оптимизацию линейных координат груза и его угловых координат. Все преобразования в трехмерном пространстве могут быть сведены к композиции двух преобразований: вращения и переноса вдоль координатных осей. Это позволяет разделить и выполнять по отдельности: 1) нахождение траектории определенной точки груза в трехмерном пространстве с препятствиями; 2) оптимизацию траекторий трех угловых обобщенных координат груза. Необходимо разработать методику планирования траектории на основе алгоритма декомпозиции линейных и угловых координат.

129