В соответствии с изложенными ранее принципами управления перемещением робота задачу обхода «пропущенных» при планировании маршрута препятствий и опасных участков можно трактовать как генерацию новых целей и связанных с ними состояний робота в моменты обнаружения новых препятствий.
При обходе одиночных препятствий можно использовать следующий алгоритм управления для случая, когда отсутствует информации об участках поверхности, удаленных от робота более чем на n ячеек матрицы А (рисунок 3.2).
Для каждого из m направлений движения робота, возможных в данный момент, составляется полный вес Рi данного направления, определяемый формулой
Рi = ∑gk Pki , (3.11)
где Pki – оценка i-го направления блоком оценки (Б1 – Б5),
gk – вес оценки.
В качестве направления очередного шага выбирается направление m, получившее наибольший вес Рm.
Рисунок 3.4 – Структурная схема алгоритма обхода опасных участков трассы
Блок Б1 выделяет направление на цель из текущей составляющей на шаге i:
P1i=(x1ц– x1тек)cos π/4(i – 1) + (x2ц– x2тек)sin π/4(i – 1)/
√ (x1ц– x1тек)² + (x2ц– x2тек)² (3.12)
Блок Б2 выделяет среди соседних клеток текущего состояния занятые, а именно Р2i=1, если клетка (x1тек +∆x1i, x2тек +∆x2i) занята и Р2i=0 – в противном случае.
Блок Б3 задает случайные оценки Р3i=z, в котором случайные числа выбираются с равномерной вероятностью на отрезке [0,1].
Блок Б4 определяет инерцию робота, оценка Р4i=1, для направления i0, по которому был сделан предыдущий шаг; Р4i=1/2 – для направлений, отличающихся от i0 на π/4, и Р4i=0 для остальных направлений.
Блок Б5 имитирует «ближнюю предусмотрительность» и дает сигнал о простейших тупиковых ситуациях за один шаг. Оценка Р5i=1, если после шага в i-м направлении роботу придется поворачиваться на угол, больший чем π/4, и Р5i=0, если после шага в i-м направлении есть возможность продолжить движение, не поворачиваясь более чем на π/4.
Выбраны 5 признаков k для оценки:
а) g1 – задает важность выдерживания направления на цель, при g1<0 робот удаляется от цели;
б) g2 – характеризует отношение робота к препятствиям: при g2<0 робот избегает препятствий, при g2>0 робот стремится идти по клеткам, занятым препятствиями;
в) g3 – определяет степень хаотичности в движении робота и может меняться в процессе поиска пути в сложных ситуациях. В случае «осознания» тупика, когда последние M шагов не привели к сокращению расстояния до цели:
rха = √ (x1ц– x1тек)² + (x2ц– x2тек)², (3.13)
при этом вес g3 постепенно увеличивается в диапазоне [0, 1], пока поиск управления не становится случайным. Тогда вероятность попадания на любую незанятую клетку описывается уравнением типа диффузии, и при любой форме тупика робот в конце концов найдет выход;
г) g4 – робот стремится поворачиваться плавно и выдерживать движение по прямой при g4>0, робот рыскает из стороны в сторону и склонен к резким поворотам при g4<0;
д) g5 – характеризует «осторожность» робота, при g5<0 робот «предостерегается» от перпендикулярного приближения к стене и заходов в угол.