# Навигация по вертикальным ArUco-маркерам Алгоритм навигации по визуальным ArUco-маркерам, реализованный в образе Клевера, поддерживает гибкую настройку положения маркеров в пространстве, что позволяет располагать их на любой поверхности, под любым углом. ## Установка вертикального крепления камеры Для более точного распознавания маркеров необходимо установить камеру вертикально таким образом, чтобы объектив был направлен параллельно горизонту. > **Note** Конфигурационный файл позволяет настраивать расположение камеры в пространстве относительно коптера любым образом. Для удобства далее будет рассматриваться вариант установки камеры под 90° к горизонту, по направлению носа коптера. ### Крепление камеры, 3D печать Распечатайте [крепление камеры](models.md#клевер-3). Установите крепление в удобное место таким образом, чтобы в камере было минимальное количество лишних объектов (защита, ножки, пропеллеры, лучи) — все это будет негативно сказываться на распознавании маркеров. ## Настройка расположения камеры Чтобы задать расположение камеры под необходимым углом, откройте файл `main_camera.launch`, расположенный в `~/catkin_ws/src/clover/clover/launch/`. ```bash nano ~/catkin_ws/src/clover/clover/launch/main_camera.launch ``` ### Версии 0.20+ В параметрах `direction_x`, `direction_y` установите пустые значения вручную или введите строки: ```bash sed -i "/direction_z/s/default=\".*\"/default=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/main_camera.launch sed -i "/direction_y/s/default=\".*\"/default=\"\"/" /home/pi/catkin_ws/src/clover/clover/launch/main_camera.launch ``` Отредактируйте одну из конфигурационных строк или добавьте строку, представленную ниже: ```xml ``` > **Note** Одновременно может использоваться только одна конфигурация камеры — если вы вставляете представленную выше строку, не забудьте закомментировать активную на данный момент. Для определения этого вам поможет подсветка синтаксиса — активная строка будет подсвечена отличным от комментариев цветом. Для комментирования в начало и конец строки добавьте символы `` соответственно. Если на используемой вами карте, маркеры имеют равное расстояние по осям *X* и *Y*, можете воспользоваться [утилитой для создания карт `gen_map.py`](aruco_map.md#настройка-карты-маркеров). В ином случае, вам потребуется задать их вручную — для этого перейдите в директорию `~/catkin_ws/src/clover/aruco_map/map` и создайте файл карты `map_name.txt`. Заполните вашу карту в соответствии с [синтаксисом карт](aruco_map.md#настройка-карты-маркеров). Пример карты маркеров со случайным расположением маркеров: > **Hint** При введении карты выберите один из маркеров в качестве начала координат и относительно него отмеряйте расстояние до всех остальных маркеров. Если все ваши маркеры ориентированы одинаково, вы можете не указывать все 8 параметров, а указать только первые 5: индекс маркера, размер и его расположение в пространстве по осям x, y, z соответственно. ``` 106 0.33 0 0 0 103 0.33 1.53 0.23 0 153 0.40 -0.56 1.36 0 ``` После того, как вы заполните карту, необходимо применить ее — для этого отредактируйте файл `aruco.launch`, расположенный в `~/catkin_ws/src/clover/clover/launch/`. Измените в нем строку ``, где `map_name.txt` название вашего файла с картой. При использовании маркеров, не привязанных к горизонтальным плоскостям (пол, потолок), необходимо также сделать пустым значение аргумента `placement` в том же файле: ```xml ``` После всех настроек вызовите `sudo systemctl restart clover` для перезагрузки сервиса `clover`.