В зависимости от обстоятельств, предел разрешения обычного GPS приемника часто не лучше порядка 10 метров. (Хотя прибор может сообщать о своём местоположении до милиметра, цифры на дисплее есть ложная точность, так как они не последовательны во времени.) Предположим, что мы пытаемся использовать такой приемник (наряду с электронным компасом), чтобы указать роботу путь в соответствии с безотносительным местоположением. Мы используем следующую программу «нацеливания» на требуемое XY-местоположение, выраженное как Dest_vec.
Поведение Home_GPS
Loc_vec = get_GPS_xy () // GPS выдаёт текущий вектор местоположения
Disp_vec = Dest_vec – Loc_vec // Вектор смещения (displacement) к месту назначения (destination)
Dist = magnitude(Disp_vec) // Расстояние (distance) до места назначения
Theta = arctan_vec (Disp_vec) // Вектор смещения определяет требуемый курс
Heading = Get_compass_heading () // Получите от компаса фактический курс робота
If (Dist ≠ 0) // Мы достигли места назначения?
Rotation = gl * (heading – theta) // Рассчитайте параметры поворота
Translation = g2 * Dist // Рассчитайте скорость перемещения
end if
end Home_GPS
Что случится, когда робот поведёт себя именно так? Если его движение моделировать на компьютере, Home_GPS заставит виртуального робота повернуться к точке назначения, движение пойдёт гладко, и всё закончится, когда робот достигнет точного места, указанного Dest_vec. Но, управляющий физическим роботом в реальном мире, Home_GPS не сможет достичь места назначения. Вместо этого, чем больше робот будет приближаться к цели, тем более растерянным он начнёт казаться.
Пока он далёк от цели, физический робот ведет себя почти таким же образом, как его виртуальный собрат, перемещающийся целенаправленно к месту назначения. Но когда робот прибудет в зону в пределах 10–20 метров от цели, предел разрешения GPS системы вызовет хаос в системе управления поворотно/поступательным движением, описанной выражением Home_GPS.
В какую-то секунду прибор GPS может сообщить роботу, что он находится именно в той самой ячейке таблицы, которая и есть место назначения. Но в следующую секунду прибор сообщит, что робот находится в ячейке слева и поэтому должен развернуться на 90° вправо, а еще в следующую секунду – что робот находится в ячейке справа СКАЧАТЬ