# Создание автономной программы программы

На этом шаге предполагается, что вы ознакомились и прошли все пункты сверху. Преступим к написанию программы.

1. Создадим папку в терминале. Для этого введем команду:

```
mkdir proga
```

{% hint style="info" %}
Здесь mkdir - это команда позволяющая создать папку, а proga - название папки.
{% endhint %}

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-Mdqn8SGm7CVQpQl7mws%2Fl1tjNmP2r6c.jpg?alt=media\&token=7e6534fc-c679-432b-9d80-9b0c290d6139)

2\. Откроем эту папку и создадим в ней файл с расширением **.py:**

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-MdqnHwP_g1ss6NJcJV4%2FjvlT85q12hM.jpg?alt=media\&token=4e15d8b3-ac88-4b65-9943-42e4dc31fa25)

{% hint style="info" %}
Чтобы открыть папку мы прописали: cd proga, где cd - это команда, позволяющая открывать папки, а proga - название папки.
{% endhint %}

{% hint style="info" %}
Чтобы открыть файл мы прописали: nano proga.py, где nano - это команда, позволяющая открывать файлы, а proga.py - название файла. Если файла не существует, тогда он автоматически будет создан.&#x20;
{% endhint %}

3\. Перед нами откроется редактор с пустым файлом:

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-MdqoGBd9j44g4_wd-VK%2Fvu-t_mxloNU.jpg?alt=media\&token=2dc5d549-a4ab-46a2-92f2-9d19aee0549b)

4\.  Вставим в нашу программу первые строчки, которые будут импортировать необходимые модули и сервисы. Они обеспечат работу всех функций, которые мы будем использовать.&#x20;

{% hint style="success" %}
На соревнованиях можно будет пользоваться официальным гитбуком COEX. Поэтому я буду специально вставлять только картинки без фотографий, чтобы вы могли самостоятельно найти нужную ссылку на официальном гитбуке: [https://clover.coex.tech/ru/](https://vk.com/away.php?to=https%3A%2F%2Fclover.coex.tech%2Fru%2F\&cc_key=).
{% endhint %}

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-Mdqoi5KtMZjDR9-fxFI%2FHv0KUtqvLeY.jpg?alt=media\&token=e2707c4c-74ec-4a8e-a938-3f4a3dfec9aa)

В результате должны получить это:

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-MdqolwOJPSvdbfcHYA8%2FlXzDatVYfAs.jpg?alt=media\&token=9f991f8d-311b-40b8-9626-f19581fa970e)

Теперь мы можем, используя модули и сервисы, объявить функцию полета.

Вставим функцию **взлета**:

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-Mdqp6DLg6qK30gm9evs%2FNtzkD1jCUII.jpg?alt=media\&token=8b64c6f0-9903-453c-aaa2-21722c9126e9)

Добавим задержку (время выполнения программы). Объявляется как **rospy.sleep(4)**. Где вместо 4 можно написать любое натуральное число. Это натуральное число обозначает сколько секунд будет происходить работа этой функции.

В результате программа взлета будет выглядеть следующим образом:

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-MdqpDGhPPsylDAtZ8gf%2FDdgT7UKbGEU.jpg?alt=media\&token=b79766c9-1654-4d8d-9243-9616092ab629)

{% hint style="info" %}
Отлично, с такой программой у нас квадрокоптер может взлететь.&#x20;
{% endhint %}

Теперь добавим полет в точку с некоторой координатой. Для этого используем следующую строчку:

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-MdqpYJr-rCKbh5Fz7H4%2Famhbk3hmEpo.jpg?alt=media\&token=3d9ccafc-704f-4717-a44d-0d35ecb023e7)

Далее добавим задержку и в итоге получим программу взлета и полет направо относительно взлета на 3 метра:

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-Mdqpde5JN924w5Bq_rb%2FgDAIkZnKQNY.jpg?alt=media\&token=1a58376d-3214-437d-9c88-0ed6426d48db)

{% hint style="warning" %}
Обратите внимание на параметр frame\_id. Он определяет систему координат в которой будет лететь квадрокоптер. С подробным списком всех frame\_id можно ознакомиться по ссылке: [https://clover.coex.tech/ru/frames.html](https://vk.com/away.php?to=https%3A%2F%2Fclover.coex.tech%2Fru%2Fframes.html\&cc_key=)
{% endhint %}

Не забудьте в конце вашей программы прописать приземление **land()**:

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-MdqpkbK_m3oETuUmrWZ%2FamIwPUJdHKI.jpg?alt=media\&token=8311eb2a-b3ae-4a47-9cf8-dee49acf3358)

Сохраним файл.

{% hint style="warning" %}
Для того, чтобы выйти из редактора с сохранением всех изменений нажмите последовательно следующие клавиши: ctrl+x, затем Y, после чего нажмите клавишу Enter.
{% endhint %}

Запустим файл, используя команду:

```python
python proga.py
```

{% hint style="info" %}
**proga.py** — это название нашей программы.
{% endhint %}

![](https://2176758188-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MdqITQbWJUL8n4CbfRn%2F-MdqmH8WOlvD-tuSbC22%2F-MdqppAK-i8Xgu78BsFy%2FZN9Lg8zZ0OA.jpg?alt=media\&token=2ea87883-7d3d-4aab-832b-0d3c7a684946)

Задание на самостоятельную работу:

{% hint style="success" %}
Попробовать составить программу полета с разными frame\_id и для себя выписать их различия.
{% endhint %}
