Розуміти локальні координати X/Y/Z, напрямок курсу, швидкість, час і контрольні точки
Самостійний курс з абсолютного нуля, який вчить Python через зрозумілі польотні місії. Учень починає з кількох команд, одразу бачить траєкторію, координати та висоту в симуляторі, а потім без різких стрибків освоює змінні, умови, цикли, функції, колекції, датчики, обробку помилок і тестування. Основний курс проходиться на віртуальному дроні й не потребує обладнання; необов'язковий фінальний модуль «Реальний політ» показує, як виконати той самий маршрут на справжньому DJI Tello через Android-застосунок. Курс пов'язує навчальний API з інженерною логікою PX4, ArduPilot і ROS: системами координат, етапами місії, телеметрією, preflight-перевірками, скінченними автоматами і failsafe. Це підготовка мислення; підключення справжнього дрона винесене в необов'язковий модуль 9. Оновлена траєкторія навчання поступово переводить учня з рівня Beginner на Engineer і Professional. Кожна місія проходить preflight, вибір режиму, arm, політ, land і disarm; покроковий відладчик пов'язує рух із рядком, що виконується, а сервер виставляє оцінку за безпекою, маршрутом, ефективністю і телеметрією.
Перший модуль безкоштовний після реєстрації, решта модулів і Android-застосунок — за підпискою. Прогрес зберігається автоматично.Пишіть Python, запускайте місію і одразу спостерігайте траєкторію, телеметрію та результат перевірки.
Попередня підготовка не потрібна. Перший модуль дає швидкий зрозумілий результат, а змінні, умови, цикли, функції та колекції вводяться поступово всередині польотних завдань.
Програма побудована від простих дій до повноцінної підсумкової роботи.
Розуміти локальні координати X/Y/Z, напрямок курсу, швидкість, час і контрольні точки
Програмувати маршрути через змінні, цикли, функції та колекції Python
Використовувати віртуальні датчики, умови й алгоритми обходу перешкод
Враховувати батарею, вітер, геозону, аварійну посадку і повернення додому
Розділяти планування місії, виконання, телеметрію і перевірку результату
Зібрати автономну інспекційну місію і підготувати її до рев'ю в портфоліо
Співвідносити навчальну місію з архітектурою PX4, ArduPilot і ROS, не змішуючи систему координат, планування, керування і безпеку
Застосовувати сувору модель станів DISARMED → ARMED → FLYING → LANDED → DISARMED
Виконувати preflight, обирати режим MISSION/HOLD/RETURN/LAND і читати окремий шар датчиків
Відлагоджувати місію покроково за підсвіченим рядком і пояснювати графіки висоти, швидкості та батареї
Перенести маршрут із симулятора на справжній DJI Tello (необов'язковий модуль): перевести метри в сантиметри, осі й назви команд
Ми не прибираємо важливу теорію: синтаксис, правила та часті помилки залишаються в уроці. Але основний час відведено самостійній роботі.
Коротке пояснення і міні-приклад.
Змінити дані та перевірити результат.
Зібрати власний варіант за вимогами.
Пройти перевірку та провести експеримент.
Кожен наступний модуль використовує навички з попереднього, а практичні завдання поступово ускладнюються.
Симулятор і перша безпечна місія
20 хв · практикаВітаємо на першому польоті: розуміємо навчальне вікно і за кілька рядків коду піднімаємо віртуальний дрон за тим самим принципом, яким керуються справжні автопілоти.
Завдання: Злетіть на 1.5 метра і виконайте посадку. Оформіть порядок команд як зрозумілу послідовність ЗЛІТ → ПОЛІТ → ПОСАДКА у коментарях.
Як читати червону помилку Python
15 хв · практикаЧервоний текст на екрані лякає майже кожного новачка — і сьогодні ми зробимо так, щоб він перестав лякати саме вас.
Завдання: У коді нижче є одна навмисна помилка порядку команд. Запустіть його, прочитайте повідомлення про помилку, знайдіть проблемний рядок і виправте порядок так, щоб дрон злетів, перемістився вперед на 1 метр і сів. Оформіть порядок команд як зрозумілу послідовність...
Вперед, назад, вгору і вниз
15 хв · практикаДрон уже піднімається і сідає за вашою командою — тепер навчимо його рухатись у просторі.
Завдання: Злетіть на 2 м, пролетіть вперед 4 м, назад 1 м і сядьте. Оформіть порядок команд як зрозумілу послідовність ЗЛІТ → ПОЛІТ → ПОСАДКА у коментарях.
Курс і повороти праворуч і ліворуч
15 хв · практикаПрямі відрізки вже виходять — час навчитись розвертатись, щоб долітати до точок не по прямій із дому.
Завдання: Пролетіть 3 м вперед, поверніть праворуч на 90° і пролетіть ще 2 м. Оформіть порядок команд як зрозумілу послідовність ЗЛІТ → ПОЛІТ → ПОСАДКА у коментарях.
Проєкт 1/8: маршрут до точки огляду
25 хв · практикаПерший етап наскрізного проєкту: складаємо все, що вивчили в модулі, в один закінчений політ.
Завдання: Долетіть до точки (5, 6, 2): 4 м вперед, поворот праворуч, 3 м вперед, одна секунда очікування і посадка. Оформіть порядок команд як зрозумілу послідовність ЗЛІТ → ПОЛІТ → ПОСАДКА у коментарях.
Перевірка теорії модуля
5 питань · результат у відсоткахЛокальна система координат X, Y, Z
25 хв · практикаЧитаємо положення дрона як три незалежні координати.
Завдання: Пролетіть до позиції X=5, Y=4, Z=2 звичайними командами і виведіть координати. Збережіть явне позначення `FRAME_LOCAL_ENU` і виконуйте всі точки в одній локальній системі координат.
Абсолютні точки і move_to
20 хв · практикаПереходимо від відносних відрізків до явних координат.
Завдання: Відвідайте точки (4, 3, 2), (7, 6, 3) і (10, 4, 2) по порядку, потім сядьте. Збережіть явне позначення `FRAME_LOCAL_ENU` і виконуйте всі точки в одній локальній системі координат.
Швидкість, час і витрата батареї
20 хв · практикаРозуміємо ціну маршруту і обираємо швидкість свідомо.
Завдання: Встановіть швидкість 4 м/с, пролетіть до (10, 5, 2), виведіть батарею і сядьте. Збережіть явне позначення `FRAME_LOCAL_ENU` і виконуйте всі точки в одній локальній системі координат.
Проєкт 2/8: координатний маршрут інспекції
35 хв · практикаПереводимо перший маршрут проєкту на явні точки і швидкість.
Завдання: Оновіть mission.py: збережіть висоту 2.5 м і швидкість 3 м/с у змінних cruise_height і cruise_speed (як у стартовому коді), долетіть за точками (4,4), (8,7), (12,5), почекайте 2 секунди і сядьте. Збережіть явне позначення `FRAME_LOCAL_ENU` і виконуйте всі точк...
Перевірка теорії модуля
5 питань · результат у відсоткахЗмінні і обчислення маршруту
25 хв · практикаПрибираємо випадкові числа з команд і розраховуємо точки.
Завдання: Через змінні обчисліть точку (9, 6, 2) зі старту (2,2) і зміщень 7 і 4. У move_to передайте всі три значення змінними — і X, і Y, і висоту (height, вона вже є в стартовому коді) — жодного числа прямо в дужках move_to. Збережіть `MISSION_MODE = "AUTO_MISSION"`...
Цикл for і повторення маневру
25 хв · практикаВикористовуємо повторення без копіювання однакових рядків.
Завдання: Збережіть довжину сторони в змінній side = 3, потім за допомогою одного for пролетіть квадрат: усередині циклу викликайте drone.forward(side) — змінну, а не число напряму — і сядьте у стартовій точці. Збережіть `MISSION_MODE = "AUTO_MISSION"` і побудуйте план...
Функції як маневри місії
30 хв · практикаДаємо повторюваному маршруту ім'я і параметри.
Завдання: Створіть функцію fly_square(side), викликайте її зі стороною 2 між takeoff() і land(), і завершіть місію. Збережіть `MISSION_MODE = "AUTO_MISSION"` і побудуйте план місії через іменовані значення та скінченні кроки, а не захардкоджені числа.
Проєкт 3/8: функції інспекції
40 хв · практикаВиділяємо налаштування, переліт і огляд у невеликі функції.
Завдання: Перепишіть mission.py через fly_to(x,y,z) і inspect(seconds), відвідайте (5,5,2) і (10,7,2), поверніться додому на висоті 2 м і сядьте. Висоту в обох викликах fly_to передавайте змінною height (вона вже є в стартовому коді), а не числом 2 — так само, як у retu...
Перевірка теорії модуля
5 питань · результат у відсоткахСписок контрольних точок
30 хв · практикаЗберігаємо маршрут окремо від алгоритму виконання.
Завдання: Створіть список із точок (3, 5, 2), (7, 8, 3), (11, 5, 2) — саме в такому запису, з пробілом після коми — і виконайте його одним циклом. Додайте `MISSION_ITEM_FRAME` і зберігайте маршрут окремо від функції, яка його виконує.
Кортеж і розпакування координат
25 хв · практикаЧитаємо одну точку як незмінну трійку.
Завдання: Створіть два кортежі: home = (2, 2, 2.5) і target = (9, 7, 2.5). Розпакуйте target у x, y, z = target і долетіть до цілі через drone.move_to(x, y, z). Назад долетіть тією самою технікою розпакування — drone.move_to(*home), а не командою drone.return_home() (її...
Словник налаштувань місії
30 хв · практикаОб'єднуємо іменовані налаштування в одну конфігурацію.
Завдання: Створіть словник із height=3, speed=4, wait=2; застосуйте налаштування через mission[...] і долетіть до точки drone.move_to(8, 6, mission["height"]) — координати 8 і 6 впишіть числами прямо у виклик, а не через окремі змінні x/y (у цьому уроці через словник ід...
Проєкт 4/8: план місії як дані
45 хв · практикаВиносимо точки і налаштування проєкту з алгоритму.
Завдання: Створіть mission зі speed=3, height=2.5 і трьома іменованими точками (4,5), (9,8), (14,5). Для кожної виконайте move_to(point["x"], point["y"], mission["height"]), mark(point["name"]), hover(point["wait"]), потім поверніться додому і сядьте. Додайте `MISSION_I...
Перевірка теорії модуля
5 питань · результат у відсоткахДатчик відстані попереду
20 хв · практикаОтримуємо число з віртуального оточення і інтерпретуємо його.
Завдання: Виміряйте відстань максимум до 12 м у змінну distance (як у прикладі вище), виведіть її і сядьте. Спочатку прочитайте показання датчика в змінну, і лише потім використовуйте його — константа `CLEARANCE_M` вгорі файлу лишається як задокументований орієнтир безп...
Умова if і безпечне рішення
25 хв · практикаПов'язуємо показання датчика з вибором дії.
Завдання: Спочатку збережіть показання в змінну: distance = drone.distance_ahead(...). Якщо distance менше 5 м (if distance < 5:), поверніть праворуч; потім пролетіть 5 м і сядьте. Спочатку прочитайте показання датчика в змінну, і лише потім використовуйте його — конста...
Сканування кількох напрямків
30 хв · практикаПорівнюємо варіанти і обираємо вільний коридор.
Завдання: Виміряйте front, поверніть праворуч, виміряйте right і летіть 4 м лише якщо right більше front; інакше поверніть ліворуч на 180° і летіть 4 м. Спочатку прочитайте показання датчика в змінну, і лише потім використовуйте його — константа `CLEARANCE_M` вгорі файл...
Ваша карта: обхід перешкоди за своїми правилами
40 хв · практикаПроєктуємо власний полігон у Конструкторі місій і пишемо код, який обходить перешкоду саме на ньому.
Завдання: Спроєктуйте свою карту мінімум з однією перешкодою попереду старту і однією контрольною точкою за нею, збережіть її. Вставте `# scenario: ` першим рядком коду. Потім: зліт, виміряйте distance_ahead і обійдіть перешкоду вбік, якщо вона ближче безпечного порогу,...
Проєкт 5/8: реактивний обхід перешкоди
45 хв · практикаДодаємо проєкту рішення на основі датчика.
Завдання: У mission.py створіть avoid_if_needed(5). Після takeoff() виміряйте шлях: якщо перешкода близько, поверніть праворуч, пролетіть 5 м, поверніть ліворуч і продовжіть 6 м до точки (7,8,2). Потім поверніться додому і сядьте. Спочатку прочитайте показання датчика в...
Перевірка теорії модуля
5 питань · результат у відсоткахЦикл while і умова завершення
25 хв · практикаПовторюємо дію, поки мета не досягнута, але обмежуємо кількість спроб.
Завдання: Через while з лічильником steps (як у прикладі вище) виконайте не більше чотирьох кроків по 1.5 м і завершіть місію. Явно визначте умову зупинки алгоритму до вичерпання ресурсу чи виходу за межі — MISSION_STATES вгорі файлу документує повний перелік станів міс...
Пошуковий маршрут «змійка»
35 хв · практикаБудуємо покриття області з паралельних проходів.
Завдання: Побудуйте змійку з трьох проходів довжиною 4 м. Після кожного проходу, крім останнього, розвертайтесь на 180° через drone.turn_right(180) — так наступний drone.forward(4) полетить у зворотний бік по Y, а не продовжить попередній курс. Одразу після розвороту зм...
Батарея і рішення про повернення
30 хв · практикаПеревіряємо ресурс до наступної ділянки і вчасно завершуємо місію.
Завдання: Спочатку долетіть до дальньої точки командою drone.move_to(12, 6, 2), потім прочитайте батарею. Якщо вона нижче 90%, повертайтесь додому через drone.return_home(2); інакше відвідайте додаткову точку через drone.move_to(...) — не forward, точка задана координат...
Ваша карта: адаптивний патруль з урахуванням батареї
40 хв · практикаБудуємо на своїй карті маршрут, який переривається заздалегідь, якщо батарея або шлях стають небезпечними.
Завдання: Спроєктуйте карту мінімум із двома контрольними точками і однією перешкодою, збережіть і вставте її ID першим рядком. Впишіть у points координати зі своєї карти. Почніть зі злету takeoff(). Перед кожним перельотом перевіряйте батарею (не нижче 35) і датчик від...
Проєкт 6/8: адаптивний патруль
50 хв · практикаОб'єднуємо список точок, датчик і обмеження батареї.
Завдання: Створіть patrol із трьох точок і функцію can_continue(min_battery), яка читає battery = drone.battery_level() і повертає battery >= min_battery. Перед кожною точкою перевіряйте can_continue(55) і distance_ahead не менше 3; за небезпеки виконайте бокове зміщенн...
Перевірка теорії модуля
5 питань · результат у відсоткахВинятки і гарантована посадка
25 хв · практикаЗабезпечуємо безпечне завершення навіть при помилці Python.
Завдання: Після takeoff() розмістіть потенційно помилкове налаштування швидкості і політ у try, а land() — у finally. Усередині try задайте drone.set_speed(3) і пролетіть drone.forward(3): саме на цю відстань розрахована контрольна точка. FAILSAFE_ACTION вгорі файлу док...
Журнал телеметрії і рішень
25 хв · практикаЗаписуємо не лише команди, а й причину рішення.
Завдання: Після takeoff() долетіть до двох точок — drone.move_to(5, 4, 2) і drone.move_to(8, 7, 2). Потім відмітьте поточний етап через drone.mark("..."), виведіть координати (x, y, z = drone.position()) і батарею, потім виконайте land(). FAILSAFE_ACTION вгорі файлу док...
Перевірки assert і тестовані функції
30 хв · практикаВідділяємо обчислення маршруту від команд польоту.
Завдання: Створіть inside_geofence(x,y) і assert для допустимої і недопустимої точки, потім після takeoff() летіть лише до допустимої точки — drone.move_to(12, 9, 2) — і завершіть land(). FAILSAFE_ACTION вгорі файлу документує політику аварійного завершення місії — наві...
Проєкт 7/8: відмовостійка місія
45 хв · практикаДодаємо геозону, перевірки і гарантоване завершення.
Завдання: Перевірте всі точки одним рядком — `assert all(inside_geofence(x, y) for x, y, z in points)` — до зльоту, виконайте takeoff(), дві інспекції в try, запишіть телеметрію, а в finally поверніться додому і сядьте. FAILSAFE_ACTION вгорі файлу документує політику ав...
Перевірка теорії модуля
5 питань · результат у відсоткахКонтракт віртуального виконавця
35 хв · практикаВідділяємо алгоритм місії від конкретної візуалізації.
Завдання: Створіть run_inspection(vehicle, points, height), виконайте зліт, дві точки навчальним drone, поверніться і сядьте. MISSION_PROTOCOL вгорі файлу документує версію навчального протоколу місії — лишіть цей рядок недоторканим, навіть якщо власне рішення не зверта...
Геозона і перевірка плану місії
30 хв · практикаПеретворюємо обмеження на виконувані правила.
Завдання: Створіть validate_mission(points), що відхиляє вихід за X 0..20, Y 0..14 і Z 0..8; перевірте план assert, потім виконайте takeoff(), політ і завершіть land(). MISSION_PROTOCOL вгорі файлу документує версію навчального протоколу місії — лишіть цей рядок недотор...
Декомпозиція фінальної місії
40 хв · практикаЗбираємо вимоги, дані, функції і критерії перевірки до написання коду.
Завдання: Створіть робочий каркас чотирьох функцій, виконайте зліт, дві прості точки, виведіть телеметрію, поверніться додому через drone.return_home() і завершіть land(). MISSION_PROTOCOL вгорі файлу документує версію навчального протоколу місії — лишіть цей рядок недо...
Проєкт 8/8: автономна Safe Inspection Mission
60 хв · практикаЗавершуємо портфоліо-проєкт на полігоні з перешкодою і вітром.
Завдання: Завершіть mission.py: виконайте takeoff(), встановіть швидкість 3 м/с, перевірте три точки (5,4,2.5), (11,9,3), (17,5,2.5), обійдіть вежу через безпечну точку (12,4,3), відмітьте і огляньте кожну ціль, перевірте батарею, запишіть телеметрію, поверніться додому...
Захоплення і перенесення вантажу
30 хв · практикаВчимося піднімати і переносити вантаж захопленням дрона — без перешкод, лише сама механіка.
Завдання: Повторіть той самий сценарій самостійно: злетіть, долетіть до вантажу, приземліться і підніміть його, злетіть і долетіть до сусідньої точки, приземліться і відпустіть вантаж, поверніться додому і сядьте. MISSION_PROTOCOL вгорі файлу документує версію навчально...
Ваша карта: маршрут доставки вантажу
40 хв · практикаПроєктуємо в Конструкторі місій точку вантажу і зону здачі та пишемо код, який піднімає вантаж і доставляє його саме на своїй карті.
Завдання: Спроєктуйте свою карту мінімум з одним вантажем (і, за бажанням, зоною здачі), збережіть її. Вставте `# scenario: ` першим рядком коду. Злетіть, долетіть до вантажу і приземліться точно на ньому, підніміть вантаж, знову злетіть, долетіть до зони здачі і відпус...
Перевірка теорії модуля
5 питань · результат у відсоткахРеальний політ: що це і що вам потрібно
15 хв · практикаФінальний необов'язковий модуль: виконуємо маршрут на справжньому DJI Tello з телефона. Дізнаємось, що потрібно, чого чекати і чим реальний політ відрізняється від симулятора.
Завдання: Складіть «карту готовності»: напишіть, який у вас дрон (модель Tello), який телефон (Android і версія), де саме ви літатимете (кімната і розмір), і чого вам ще бракує та як ви це вирішите. Якщо дрона поки немає — напишіть це й опишіть, як і коли його отримаєте...
Безпека: чек-лист перед реальним польотом
25 хв · практикаУ симуляторі помилка коштує перезапуску, на реальному дроні — зламаних гвинтів чи травми. Складаємо чек-лист, який проходимо перед кожним запуском.
Завдання: Складіть власний чек-лист мінімум із шести пунктів. Обов'язково згадайте заряд батареї, людей поруч, перешкоди на маршруті, кнопку STOP і кнопку EMERGENCY — і поясніть різницю між ними.
Встановлення застосунку й підключення до дрона
35 хв · практикаВстановлюємо RealDrone Agent на телефон, підключаємось до Wi-Fi Tello і переконуємось, що застосунок бачить дрон і його батарею.
Завдання: Виконайте підключення на своєму дроні й запишіть звіт: яку Wi-Fi мережу використали (`TELLO-...`), яку кнопку натискали, який стан показав застосунок (CONNECTED) і який заряд (команда `battery`). Додайте, що зробили з автоперемиканням мереж на телефоні.
Перший політ: злетіти, пролетіти пів метра, сісти
35 хв · практикаПерший запуск на справжньому Tello: три команди, повна передпольотна перевірка і тренування кнопки STOP. Без дрона достатньо описати, що ви зробили б і що очікуєте побачити.
Завдання: Складіть і (якщо маєте дрон) виконайте список: злетіти, пролетіти вперед 50 см, сісти. Запишіть у файлі: сам список команд, що показав журнал застосунку (наприклад, відповіді ok), чи сів дрон там, де очікували, і що ви зробили, щоб потренувати кнопку STOP.
Симулятор і Tello: що спільне, а що ні
20 хв · практикаСкладаємо словник перекладу: кожна команда симулятора — відповідна команда застосунку RealDrone Agent. Одиниці виміру й набір команд відрізняються, і саме це ламає перший реальний політ.
Завдання: Заповніть праву частину таблиці: допишіть після стрілки команду для застосунку RealDrone Agent. 1 м = 100 см.
Python: перекладач місії в команди Tello
40 хв · практикаПишемо на Python функцію to_tello(), яка перетворює список кроків симулятора на текстові рядки для RealDrone Agent — те, що ви в попередньому уроці робили вручну.
Завдання: Допишіть функцію to_tello(steps). Вона отримує список кроків симулятора і повертає список рядків для застосунку. Правила: takeoff (з висотою в метрах або без), land, forward/left/right/up/down (метри → см), backward → back, turn_right → rotate_right, turn_left...
Квадрат 2×2 м на справжньому дроні
35 хв · практикаПідсумок модуля: складаємо маршрут «квадрат за годинниковою стрілкою» точками й (якщо є Tello) виконуємо його на дроні.
Завдання: Складіть у файлі square.txt список команд для квадрата 2×2 м за годинниковою стрілкою: `takeoff`, `speed 40`, чотири `goto` у правильному порядку, `land`. Якщо маєте Tello — вставте список у застосунок, виконайте і допишіть у кінці файлу рядок «Результат:» з т...
Перевірка теорії модуля
5 питань · результат у відсоткахНаскрізний проєкт розвивається за вісім обов'язкових етапів: безпечний політ, координатний маршрут, функції, список точок, датчики, автономне рішення, відмовостійкість і фінальна інспекція з поверненням додому.
Реєстрація займає менше хвилини. Уроки та прогрес будуть доступні в особистому кабінеті.