Системы координат (фреймы)
Документация для версий образа, начиная с 0.15. Для более ранних версий см. документацию для версии 0.14.
Основные фреймы в пакете clover
:
map
— координаты относительно точки инициализации полетного контроллера: белая сетка на иллюстрации;base_link
— координаты относительно квадрокоптера: схематичное изображение квадрокоптера на иллюстрации;body
— координаты относительно квадрокоптера без учета наклонов по тангажу и крену: красная, синяя и зеленая линии на иллюстрации;navigate_target
– координаты точки, в которую сейчас летит дрон (с использованием navigate);terrain
– координаты относительно пола в текущей позиции коптера (см. сервис set_altitude)setpoint
– текущий setpoint по позиции;main_camera_optical
– система координат, связанная с основной камерой.
При использовании системы позиционирования по ArUco-маркерам появляются дополнительные фреймы:
aruco_map
– координаты относительно карты ArUco-маркеров;aruco_N
– координаты относительно маркера с ID=N.
В соответствии с соглашением, для фреймов, связанных с коптером, ось X направлена вперед, Y – налево и Z – вверх.
Более наглядно 3D визуализацию систем координат можно наблюдать, используя rviz.
tf2
Основная документация: http://wiki.ros.org/tf2
Для работы с системами координат в Клевере используется ROS-пакет tf2. tf2 – это набор библиотек для языков программирования C++, Python и других, которые помогают работать с системами координат. ROS-ноды публикуют в топик /tf
сообщения формата TransformStamped
, которые содержат в себе трансформации между заданными системами координат в определенные моменты времени.
С помощью simple_offboard
можно запросить расположение коптера в любой системе координат, используя аргумент frame_id
сервиса get_telemetry
.
Из Python можно использовать библиотеку tf2 для преобразования геометрических объектов (например, PoseStamped, PointStamped) из одной системы координат в другую.