Полет по квадрату

Мы уже знаем как строить простую программу для полета. Если забыли - вернитесь на предыдущий раздел.

Сейчас мы сделаем программу "Полет по квадрату".

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

Рассмотрим каждый по отдельности:

Создадим полет по прямой, используя различные виды системы координат

  1. 'body'

Обратим внимание на эти строчки:

navigate(x=0, y=5, z=1, speed=0.5, frame_id='body')
rospy.sleep(3)

Используя, имеющиеся знания создадим программу полета по прямой, вдоль оси Y на расстояние 5 метров. Здесь прекрасно видно, что квадрокоптер перемещается по оси Y на 5 метров со скоростью 0.5 м/с. Получается, что за 1 метр пролета пройдет 2 секунды. За 5 метров - 10 секунд. Однако, мы указали всего 3 секунды на полет.

Давайте запустим программу.

Как видите, как тол ко проходит 3 секунды - квадрокоптер садится. Получается, он 5 метров не пролетел.

2. 'aruco_map'

Last updated