Пространство и положение
Скажите роботу: «поверни налево». Налево — это куда? Относительно стены? Относительно вас? Относительно самого робота? Пока мы не договорились, от чего считать, слова «налево», «вперёд», «на два шага» не значат ничего. Вся навигация роботов начинается с одного вопроса: где мы находимся и куда смотрим — и по отношению к чему.
У робота есть свои «вперёд» и «право».
У любого робота есть перёд (куда едет), зад, лево и право — как у вас, когда вы идёте. Это его собственные стороны: если робот развернётся, его «право» повернётся вместе с ним, а ваше — нет. Отсюда классическая путаница: «поверни направо» для вас и для робота — это разные стороны, если он едет вам навстречу.
Чтобы описывать, где робот, удобно расчертить поле на клетки, как шахматную доску. Тогда положение — это просто адрес клетки: «третья вправо, вторая вверх». Два числа — и мы точно знаем, где робот.
Попробуйте. Ведите робота по полю только командами «вперёд на 1 клетку» и «поворот». Быстро станет ясно: чтобы попасть в нужную клетку, надо помнить не только где робот, но и куда он смотрит.
Где это работает на столе
Как только робот должен «повернуть ровно на 90°», «доехать до точки», «запомнить, где был старт» — он работает именно с этими идеями. Компас и гироскоп (см. Датчики навигации) дают угол ; колёсные энкодеры считают пройденный путь и обновляют .
Заглянуть глубже: матрицы поворота, кватернионы, TF
Перевод координат из одной системы в другую записывают компактно — матрицей поворота, а вместе со сдвигом начала — однородным преобразованием (матрица 4×4). Для описания ориентации в 3D углы крен/тангаж/рыскание (углы Эйлера) удобны для человека, но у них есть неприятная «блокировка» (gimbal lock), поэтому в серьёзных системах ориентацию хранят как кватернион — четвёрку чисел без этой проблемы.
Все системы отсчёта робота (мир, база, колесо, камера, схват) связывают в TF-дерево — иерархию преобразований, которой в ROS 2 управляет библиотека tf2. Именно она автоматически отвечает на вопрос «где эта точка относительно камеры, если я знаю, где она относительно мира».