Кто есть кто в робототехнике. Выпуск I. Компоненты и решения для создания роботов и робототехнических систем - страница 2
Рис. 1.3. Заманчиво воображать, как показано на «а», что система позиционирования установит таблицу координат и, по мере того как наш робот путешествует, система позиционирования будет сообщать ему, которую из ячеек таблицы он занимает. К сожалению, разрешение (также как шум и другие ошибки) ограничивает способность любой системы позиционирования функционировать таким образом. Если разрешение нашей системы позиционирования – R, то при ограничении разрешения будут сомнения в любом измерении координат, сообщенном системой, по крайней мере, на величину ± R. Это означает, что в отличие от координат пикселя на экране компьютера, координаты робота, вычисленные системой позиционирования, можно воспринимать только как предположительные. Пример этого показан в форме чисел на «b». Когда робот занимает определённую ячейку таблицы координат в реальном мире, система позиционирования может сообщить, что робот находится в другой ячейке. То, как ячейки словно блуяздают в разные стороны от их фактических положений, показано на «с» – и они блуяздают непрерывно. Безотносительное позиционирование робота построено на этой сомнительной основе.
Каждая система позиционирования может точно измерить местоположение до некоторого минимума расстояния, но никак не меньше. Например, вы можете использовать линейку длиной в ярд, чтобы измерить расстояние всего в 1/16 дюйма. Но вы не можете использовать эту линейку, чтобы измерить толщину листа бумаги. Такие маленькие расстояния меньше предела разрешения данной линейки. Аналогично, вы не можете использовать одометр вашего автомобиля, чтобы измерить диаметр баскетбольного мяча. И так же за пределами своего разрешения ни одна система позиционирования не выдаст значащую информацию. Таким образом, первый вопрос к любой системе позиционирования – каково её разрешение?
В зависимости от обстоятельств, предел разрешения обычного 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 не сможет достичь места назначения. Вместо этого, чем больше робот будет приближаться к цели, тем более растерянным он начнёт казаться.