Полет по квадрату
Last updated
Last updated
Мы уже знаем как строить простую программу для полета. Если забыли - вернитесь на предыдущий раздел.
Сейчас мы сделаем программу "Полет по квадрату".
Cоздадим файл с расширением .py:
Чтобы открыть папку мы прописали: cd proga, где cd - это команда, позволяющая открывать папки, а proga - название папки.
Чтобы открыть файл мы прописали: nano proga.py, где nano - это команда, позволяющая открывать файлы, а proga.py - название файла. Если файла не существует, тогда он автоматически будет создан.
3. Перед нами откроется редактор с пустым файлом:
4. Вставим в нашу программу первые строчки, которые будут импортировать необходимые модули и сервисы. Они обеспечат работу всех функций, которые мы будем использовать.
На соревнованиях можно будет пользоваться официальным гитбуком COEX. Поэтому я буду специально вставлять только картинки без фотографий, чтобы вы могли самостоятельно найти нужную ссылку на официальном гитбуке: https://clover.coex.tech/ru/.
В результате должны получить это:
Теперь мы можем, используя модули и сервисы, объявить функцию полета.
Вставим функцию взлета:
Добавим задержку (время выполнения программы). Объявляется как rospy.sleep(4). Где вместо 4 можно написать любое натуральное число. Это натуральное число обозначает сколько секунд будет происходить работа этой функции.
В результате программа взлета будет выглядеть следующим образом:
Отлично, с такой программой у нас квадрокоптер может взлететь.
Теперь добавим полет в точку с некоторой координатой. Для этого используем следующую строчку:
Обратите внимание на параметр frame_id='body'. Этот параметр определяет систему координат, относительно которой позиционируется квадрокоптер.
ВЗЛЕТ ВСЕГДА ОСУЩЕСТВЛЯЕТСЯ С СИСТЕМОЙ КООРДИНАТ frame_id='body'
Давайте рассмотрим основные системы координат:
aruco_map
— координаты относительно нулевой arucо метки (как правило, она располагается в левом нижнем углу);
body
— координаты относительно квадрокоптера;
navigate_target
– координаты точки, в которую сейчас летит дрон (с использованием navigate);
aruco_N
— координаты относительно aruco метки под номером N
Рассмотрим каждый по отдельности:
Создадим полет по прямой, используя различные виды системы координат
'body'
Обратим внимание на эти строчки:
Используя, имеющиеся знания создадим программу полета по прямой, вдоль оси Y на расстояние 5 метров. Здесь прекрасно видно, что квадрокоптер перемещается по оси Y на 5 метров со скоростью 0.5 м/с. Получается, что за 1 метр пролета пройдет 2 секунды. За 5 метров - 10 секунд. Однако, мы указали всего 3 секунды на полет.
Давайте запустим программу.
Как видите, как тол ко проходит 3 секунды - квадрокоптер садится. Получается, он 5 метров не пролетел.
2. 'aruco_map'