4511
правок
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 65: | Строка 65: | ||
'''Режим восстановления''' | '''Режим восстановления''' | ||
Для повышения эффективности работы алгоритма в целом и для обхода сложных препятствий режим восстановления имитирует правило правой руки (right-hand rule, RHR) – хорошо известную технику следования влоль стены для выхода из лабиринта. Схематичное описание RHR-компонента алгоритма GRIC приведено ниже, полное изложение можно найти в работе [12]. В контексте GRIC компонент RHR использует виртуальный компас и флаг. Виртуальный компас присваивает вектору vcur значение кардинальной точки, считая точку назначения сообщения находящейся на севере. Рассматривая угол, определенный выше, компас возвращает строку x-y, где x соответствует северу или югу, если |a| меньше или больше у, соответственно, а y соответствует востоку или западу, если оно является отрицательным или положительным, соответственно. В первый раз, когда компас возвращает значение «юг», флаг поднимается и помечается значением (x, y) компаса. Поднятие флага обозначает направление сообщения в обход препятствия по правилу RHR, если компас указывает на юго-восток. Симметричный случай, когда компас указывает на юго-запад, здесь не рассматривается; в этмо случае взамен RHR будет использоваться аналогичное правило левой руки (left-hand rule, LHR). После поднятия флага он остается поднятым, а его пометка неизменной до тех пор, пока компас не укажет на север, что говорит о том, что обход препятствия завершен. Можно слегка оптимизировать процесс, опуская флаг только тогда, когда компас указывает на северо-восток (при использовании RHR), а не на северо-запад; подробнее об этом – в [12]. Согласно правилу RHR, следует двигаться в тесной близости к периметру препятствия и держаться правой стороны относительно текущего направления движения сообщения. В случае расхождения пометок компаса и флага, например, если флаг помечен значением «юго-восток», а компас выдает значение «юго-запад», считается, что сообщение слишком сильно ушло влево, рискуя уйти от препятствия и нарушить правило правой руки (симметричный подход применим к правилу левой руки). В этом случае алгоритм GRIC переходит в режим восстановления, в котором изменяется принятый по умолчанию способ вычисления vidl: в режиме восстановления сообщение принудительно поворачивается направо (налево в соучае применения правила LHR) путем определения vidl как вектора, полученного поворотом vcur на угол a" (вместо применяемого в режиме инерции a'), где a" = —sign(a)(2n — |a|)/6. | |||
[[Файл:OAA_WSN.png]] | [[Файл:OAA_WSN.png]] | ||
Рисунок 1. Типичный путь сообщения при использовании алгоритма GRIC для обхода определенных препятствий | |||
'''Основные выводы''' |
правок