Математичне моделювання та обчислювальні методи
Керування роєм дронів зі спільною ціллю, децентралізовані пріоритети через геш-функцію, індивідуальне завдання, частина 2
Пасічник Роман Мирославович
Підсумок
Курс: «Математичне моделювання та обчислювальні методи». Лектор: Пасічник Роман Мирославович.
Про запис. Це частина 2 з двох записів цієї пари, 13:16–14:05 (49 хв). Вона продовжує пару після того, як у лектора під час перерви зникли світло й інтернет. Частина 1 (2026-11-06_1119, 1:55) охоплює завершення розширеного фільтра Калмана й розбір коду практичного заняття 1: три дрони, у кожного своя ціль, обхід перешкод, правило правого гвинта, тимчасові зупинки за пріоритетом. Тут лектор спершу відмітив присутніх (спочатку 8–9 осіб, наприкінці 11 і він сам), потім «у швидкому темпі доганяв»: тема 5 про рій зі спільною ціллю, розбір коду й запуск симуляції. Наприкінці оголосив індивідуальне завдання 1 й номери варіантів. Перекличка в транскрипті сильно перекручена, частина фраз розпізнана як російські.
⚠️ Що потрібно від мене
| Коли | Що зробити |
|---|---|
| Дедлайн не названо | Індивідуальне завдання 1 (до практичного заняття 1, рух кількох дронів із перешкодами). Умова й таблиця варіантів «у вас на сторінці» курсу, варіантів близько 20. Мій варіант, імовірно, 10 (у переліку розпізнано «Безук 10»). У варіанті задано початкові координати дронів, цільові координати, центри й радіуси статичних перешкод і запас безпеки від краю перешкоди. Треба взяти наявний алгоритм, підставити свої старти, цілі й перешкоди та отримати свою візуалізацію. |
| Пт 13.11.2026 («через тиждень») | Наступна пара. Лектор розгляне практичне заняття 2 (рій) і дасть до нього відповідне індивідуальне завдання. |
| Якщо не знаю свого варіанта | Запитати лектора. Номер варіанта збігається з номером у списку групи. |
📬 Що обіцяв лектор
- Наступного разу розглянути практичне заняття 2 й дати до нього індивідуальне завдання.
💡 Головні тези
Тема 5. Рій дронів зі спільною ціллю
- Чим відрізняється від частини 1. Хмарою дронів керують як єдиним цілим зі спільною метою. Алгоритм простіший: треба лише, щоб дрони не зіткнулися й зупинилися поблизу мети. Назва теми в записі розпізнана нечітко («…фільтра Калмана для децентралізованої системи управління»).
- Децентралізація. Кожен агент рахує свій рух автономно, тож додавання чи втрата апарата не вимагає перебудови всієї мережі. Глобальну команду (переміщення, обхід перешкоди) можна давати всьому рою, а біля місця дій перейти до індивідуальних цілей, як у частині 1.
- Ті самі складові сили, інші позначення: притягання до спільної цілі (у коді
v_pref, «преференс»), відштовхування від сусідів, відштовхування від перешкод і правий поворот (ортогональна складова) на зустрічних курсах. - Тимчасові зупинки біля цілі. Коли на ціль може заходити лише один дрон, решта зупиняється й чекає, щоб не витрачати ресурс.
- Пріоритети без ручного призначення. У частині 1 пріоритети задавали вручну. Тут їх рахує геш-функція від ID: вона рівномірно розкидає ID в інтервалі [0, 1] (чи [0, N]), тож номер дрона не дає переваги, усі рівноправні, а збігів пріоритетів немає.
- Пріоритет може залежати від відстані до цілі d. Формулу d лектор свідомо не фіксує: це може бути проста різниця або обернена величина, залежно від того, кого вважати пріоритетнішим. Коефіцієнт β задає баланс: при малому β домінує геш (статична випадковість), при великому — геометрична відстань, а геш лишається тільки арбітром при рівних відстанях. Тоді пріоритет визначає поточне положення дрона в хмарі, а не те, хто що виставив.
Програмна реалізація рою
- Параметри класу: допуски на зближення (зв'язок між агентами, зона негайної зупинки), сила реакції на перешкоди й інші дрони, контейнери для траєкторії та для точок зупинок, лічильник зупинок і прапорець зупинки, скинутий на старті.
- Обчислення наступної швидкості. Якщо дрон у стані зупинки, швидкість нульова. Якщо до цілі менше 0,3 (константа, взята авторами коду), ціль вважається досягнутою: швидкість 0, але
stopped = False, бо це не зупинка, а досягнення мети. Далі напрямок до спільної цілі, а відштовхування й обхід стартують з нульових векторів. - Цикл по інших агентах: себе пропускають. Якщо відстань менша за допустиму, то (крім перших п'яти кроків) визначають пріоритет, і поступається дрон з меншим ID (у записі «контроль з меншим ID поступається»). Сила відштовхування рахується тією ж різницею обернених величин. Додається правий поворот на зустрічних курсах.
- Режим зупинки: запускається стоп-таймер, ставиться статус, точка пишеться в історію зупинок, швидкість обнуляється.
- Підсумковий вектор нормують під максимальну швидкість, як у частині 1. Позицію оновлюють з кроком Δt = 0,05 (набагато меншим, ніж у частині 1).
- Конфігурація експерименту: одна спільна цільова точка й безпечна початкова сітка, тобто дрони стартують з різних паралельних позицій, а не з однієї точки. Одну траєкторію лектор вимкнув, бо дрон чомусь рухався назад.
- Симуляція на 400 кроків. Зовнішній цикл іде по кроках, внутрішній по дронах рахує швидкості, а позиції оновлює окремий цикл. Тут без
zip, але принцип той самий: спершу всі швидкості, потім усі позиції. - Запуск. У цій версії анімації немає, одразу показується кінцевий результат. Дрони зупинилися поблизу спільної мети. Ті, що позначені хрестиками, мабуть, вважаються такими, що мети не досягли; лектор і сам у цьому вагався.
Висновки
- Колективом зі спільною ціллю керувати легше, ніж колективом, де в кожного своя ціль. Не треба керувати кожним дроном окремо: вони самі відштовхуються один від одного, летячи до спільної мети.
- Ускладнення алгоритму — розподіл ролей: одні дрони розвідують, інші пробивають коридор, і решта проходить ним. Для окремих режимів (наприклад, побудова захисних перешкод) теж зручніше керувати групою як цілим.
Транскрипція
Автоматичне розпізнавання мовлення, можливі помилки.
00:00:05 Ну, перепідключаются хлопцы сюда. Перепідключаются. Бустаум им хлестники Так, мицкий. ави Так, даль звук так совчук.
00:01:33 Є. Так, оки що вісім, було дванадцять. Так, там ж мороз підключиться. Ну, хай помаленько. Але Мо може як підключиться, або в кінці, або як підключиться, сказати, що я Відключився, а чи мене поки що є вісім чоловік? Так і. Путин, кто питключит, нагадаешь. Чей Так, давайте тоді уже.
00:02:19 А вот и мороз. Мороз, появился, да. Ага, дев'ять десь.
00:03:07 Демос. Ага, Роман Молос. Добрий день, да, я затримався вибачте. П'яче. Є. До є дев'ять. Там ще появиться може. То тоді довідмечає. Так, ну що тоді? В швидкому темпі давайте доганяти. Так, по-перше, треба відмітити екран.
00:03:54 Так, тепер ми маємо екран і переходимо на тему п'ять. Лекція 5, рушильного фільтра Калмана для децентралізованої системи управління. Так, воно тут мене є. Можна відкрити, але воно у мене десь є відкрите. Так, тому я вивожу на екран. Учасників в школе. Значить, знову так для наочності. Чим воно відрізняється? Тут розглядається управління Ем, хмарою дронів, так, як, в принципі,
00:04:50 яко якимось таким колективом. Дпрощення управління, яким можна управляти єдиний ціле. Тобто, воно має спільну мету, в принципі, Простіше і простіше алгоритм, ніж ми тільки що розглядали, бо тому що мета спільна, і також треба управляти так, щоб вони не зіткнулися. і зупинялися десь поблизу цього досягнен цієї мети. Так, давайте подивимося, як воно тут реалізовано.
00:05:41 А, це просто це тут є, але на початок. Санс Тут така загальна інформація про рій. Принцип такий, що кожен агент розраховує з фіру автономно до давання або втрата апаратів в руїни потребує зміни всієї мережі, і
00:06:40 Можна всяке огинання перешкода або глобальну команду на переміщення давати на весь рій, щоб спростити управління. При підльоті цього рою до місця, де будуть йти якісь локальні акції, то там уже розглядаються так ми в попередньому заняття розглядали, що кожен дрон може мати свою ціль і окремо там планувати зустріч з повідним об'єктам з цільовим об'єктом. Так, і тут буде
00:07:27 подібний підхід. Бачимо, що розрахунок цього потенціалу, потенціалів розрахунок, значить, трошки інші позначення, але суть суть то сама, значить, розраховується тотальна сила або тотальна швидкість. Яка включає сили притягання до цілі, сила відштовхування від сусідів, і сила
00:08:14 В відштовхування від перешкод. Так, обстек. Притягання до цілі. Підштовхування між дронами. Подібно того, як ми тільки що розглядали, так ілимо. А, ну це так званий правий поворот. Той що ми розглядали. Тимчасовий зупинку. Передбачено. При підльоті до цілі, коли вже
00:09:01 тільки один може заходити на ціль, ну, так, передбачений. Але просто щоб економилося, економив цей ресурс, то решта може зупинятися і дивитися, спостерігати, як йде зустріч із цілів попередньо цього. Трогнув. Так, принцип децентралізованості розв'язання допікових ситуацій, тобто там в нас ніби виставлялись пріоритети, а тут
00:09:51 в цій? В цій зграї розраховуються автоматично пріоритети з допомогою геш-функцій. Геш-функція розподіляє по ідентифікаторах цих дронів, розподіляю їх рівномірно О з діапазону чисел, і там неважно, який був номер попередній, вони всі не розташуються в випадковому порядку. Тому жоден з них не ніби є рівномірні рівноправня, жоден з них не буде мати якогось пріоритету.
00:10:42 Так. Пріоритету в по своєму Айді, по своєму номеру. Але коли, де заховується гашфункція, то кожен. По кожному Айді буде індивідуальне Якесь число буде задано, і там не буде такої ситуації, що співпадають ці пріоритети? М так. Ну і відповідно. Тут дистанція так таку і
00:11:30 Е зага впливу цієї дистанції на біліте. Так, зараз тут детальніше подивимося. Так, відповідні перетворення нам по Айді повертаються слово рівномірно розподілення в інтервалі 0-1 або в якомусь іншому інтервалі від 0 до канди числа.
00:12:15 Так. Вот так хунк сюда я псевдопадку склонни в цьому інтервале. Імпція присутня функція Д. Це є відстань між цим об'єктом нашим дроном і його цільовою точкою т.
00:13:06 Так. Отця спеціально не подається формула, бо тут можуть бути можуть бути різні форми для обчисни цієї віддалі. Або проста різниця, або обернена різниця там, який пріоритет буде вищий, чи низький, чи високий. Так, і оцей цікавий коефіцієнт бета.
00:13:56 Так, визначає баланс між статичною випадковістю та динамічною метрікою. При малому бета домінує доданок відповідає геш-функції. При великому бета домінує геометричну відстань, а Геш грає роль лише у станнього арбітра поточної рівності відстань. Ну тобто, кому, кому, скажемо, ближчі до цілі, той може мати там, допустимо, вищий пріоритет або нижчі пріоритет. Основне буде цень, відстань до цілі в пріоритетності. Не то, хто хто там виставив які пріоритети, а
00:14:53 поточне розташування цього об'єкта в хмарі. Так. І далі далі вже йде. Скільки всі ці формули минус. Ми розглядали попередньо. Дуже подібні. Так, то далі йде вже програмна реалізація. Давайте подивимося на програмну реалізацію, і як вона реалізована візуально роботи цих імітація цього руху рою. Так, як вона реалізована в послідовності класи? Значить, починаємо
00:15:46 із централізованной траектории класу Де ініціалізація? Далі? Допуски на зближення э о? Так, по зв'язку між агентами по початковому відхиленню і про так, зону негайні, зупинки. Мається на увазі, коли підходить до цілі, так, цей безпілотник зупиняється і вже на нього не витрачаються присвітні ресурси, він очікує подальших команд.
00:16:51 Ну, також і ті різні пріоритети тут виставляються. На оминання сила або амплітуда реакції на оминання перешкод на уникнення зустрічі з іншими об'єктами цього рою. Так Також створюється контейнер для реалізації траєкторії. Створюється контейнер для
00:17:44 запису точок, де було призупинено рух. Так. Сифлотных об'єктив так Так, ну і відповідно рахується лічильник зупинок і на початку скидається цей пропорець зупинки, що там на початку не зупинку.
00:18:31 Так, обчислити наступну швидкість. Тобто наступного вектора швидкості агентів. Якщо дії так. Так, якщо зупинився відповідний цей об'єкт, то швидкість йому присвоїться на льові
00:19:19 і встановлюється статус що він зупинений Обчислюється відстань до цілі, і тут є конкретні константи. Цієї системи, допустимо, якщо відстань до цілі менше 0,3, воду вони взяли конкретно константу там 0,3, собі виставили, то якщо ця відстань менше, як 0,3, то
00:20:06 вже вважається, що ціль досягне. Так, і тоді, відповідно, швидкості виставляються ну й також ніби е що Він вважається не такий, який зупинився, а який досягнув цілі. Тому селфі стопит ставляється. Фолз. Так, проектор напрямку до спільної цілі. Тут не виступ не враховується напрямок до
00:20:56 конкретної цілі кожного, бо тому що усіх спільна ціль. Тому тут простіше. Усіх розраховують напрямок до единой цілі Поки що відштовхування просто їх пусте вектор із просто два параметри. Ну, просто нульовий вектор задається, і векторного оминання також задається нульовий.
00:22:12 Так цикл по псих агентах рулю. Якщо це не той, це той. Об'єкт, який ми по айді перевіряються, якщо це той, що що належить нашому. Тобто, якщо із із списку всіх дронів ми попадаємо на наш дрон, той, що аналізується, то ніяких
00:23:00 обчисень не робимо. Так, тобто не можна, скажемо, вникати самого себе, так, просто нічого не робиться, і переходимо до наступного об'єкту. Так? І тоді розраховуємо віддаль між позиції між нашим цим об'єктом і той, який вибрався з рою, так шукається відстань? Так, якщо ця відстань менша, ніж допустима, або вимагається якесь втручання
00:24:05 при зближення, так? то. За виключенням, скажімо, перших п'яти кроків, визначається пріоритет Так, контроль з меншим АйД поступається. Так, також розраховується. Сильвіштовховонів зоні близькості сей. Так. По тому ж самому принципу різниці обернених дробів. Так.
00:25:07 Також розраховується відхилення на уникання зустрічі між дронами, якщо рухаються збротним, то в зустрічному курсі, так званий орту або правого повороту так, розраховується ця сила. Так, якщо вибирається режим зупинки, що робиться тут, так? Час зупинки, якийсь задається стоп таймер, задається
00:26:01 стан, що він зупинився. І в стани зупинки в історії зупинок записується відповідна точка. Ну і відповідно швидкості виставляються нульові. Так, тоді розраховується результуючи вектор подібне до попереднього.
00:26:49 Так, треф, так тут на оминання переш на оминання зустрічі з дронами ФРТ і орто на оминання зустрічного руху з іншим дроном Вот что тут рефа.
00:27:38 А от є ВПРФ, вектор напрямку до спільної цілі. І це на ціль, швидкість притягання до цілі та просто названо по-іншому преференс. А ці спільне, так? Так, обробка стан суппенку не пристанули. Так. Ага, нормування під максимальну швидкість. Ми вже це розглядали. І відповідно
00:28:29 після того, як швидкість обчислена, вона записується як рекомендація для нашого цього аналізованого безпілота? Так? Далі в нас є зміна позиції метод. Е під крок набагато менший це п'ять сотих. По швидкості, обчислюється приріст позиції чи приріст зміщення через плюс до рівня.
00:29:24 і записується шлях такповідна точка. Так, тепер що тут ще є? Уже конкретна конфігурація для дослідження, наскільки коректно працює алгоритм. Значить, у нас тут є. Виставляється єдина спільна цільова точка для всіх
00:30:10 цих об'єктів. Так, промою безпечну початкову сітку, тобто, що вони не стартують з єдиної точки, а з різних паралельних скажімо стартових позицій. Десь я виключив один одну траєкторію, бо вона чомусь вийшла, що рухається зворіт.
00:31:21 І далі йде в нас симуляційний цикл, тобто цикл остаточного розрахунку для цього рою його траєкторій? Так. Дельта те задано? Чотириста кроків. Іде на імітацію, і на кожный на кожный крок. Так, тут є цикл по кроках, значить
00:32:15 Списується дані по дронах його ІД позиція. Так, розрахунок швидкостей. Компьютернет велосипед. Розрахунок швидкостей. Ага, цей перший цикл, це цикл по кроках імітації. Далі йде внутрішній цикл, цикл по. Безпілотниках. Для кожного безпілотника розраховується його швидкість, і далі відбувається оновлення позицій, апдейт позиціон. Так. Тут уже не з допомоги методу Зіп, а просто
00:33:16 спочатку обчислюємо, окремо обчислюємо швидкості, а потім також в єдиному циклі обчислюємо зміну позиції. Далее уже до визуализации. Так, відповідні засоби та визуалізації. Так, відповідні кольори, так, лінії, так, початкові точки, точки фінішу, точки зупинок,
00:34:06 Так, і ось такі в результаті ми отримаємо кінцеву ілюстрації, зараз давайте може запустимо ще я першому часу. Запустимо цю імітацію, подивимося, як вона відпрацює. Так, чи можливо тут є? Не пам'ятаю, десь є із.
00:34:54 Із динамікою, тобто, що показано, сам процес руху, а десь є просто. Ось того вже картин. Значить. Так, давай мій. Запустить пайко слідоще нас берегается. Так, айдрупай в нормале.
00:35:50 Так, беру там яка-небудь. Текст програми для того щоб відкрити простіше відкрити той який нам потрібний так файл. У мене вони всі в моделі зведені. В один каталог. Тільки тепер розібратися у фіфках. Да, давай
00:36:46 команду мой Так, не модул спай
00:38:01 Ага. Трошки інший. Централізована неклазик. Імітація. Тобто анимация О, оце воно. Від два, ну тут вже немає анімації. Так, тому зараз.
00:38:53 Реалізуємо. Четыре два. Так четверо, два крыма
00:39:44 Так, комп'ютернекс велес якраз оце той. Той модуль, що ми розглядали. І відповідно запускаємо. П'ять так дивиться. Ну, бачите, тут нема цієї анимации, а просто зразу готовили результат. Тобто ми бачимо тут спільна мета, але якийсь один із безпілотників він не досягає цієї мети.
00:40:46 Точніше, ні. Напевно, що ті, із перехрестями, вони вважаються, що не досягають, решту зупиняються, так, вже безпосередньо близькості до мети. І таким чином, таким чином реанізовно цей рух рух безпілотників. Тобто ми бачимо, що, якщо розглядати рух колективу дронів, в якому кожен має свою ціль, то керувати
00:41:33 такою колективом, коли є спільна ціль, але легше так? Але є свої окремі режими, скажемо, режими будування, якихось захисних об'єктів, так, захисних перешкод, і тоді може краще управляти як колективом, тим більше, що можна цей ускладнити алгоритм цього подолання, коли розподіляються ролі, є такі алгоритми, що одні розвідують з цього колективу, є об'єкти, які розвідують
00:42:30 дрони, а є такі, що здійснюють враження. Враження десь коридору, побивають коридор, і всі, і всі туди проходять. Решта вже по такому спільному говориті. Те, що тут, скажемо, раціональне, те, що не треба управляти кожним дроном, який можуть десь і стикатися, а тут, скажімо, забезпечено, що вони автоматично. Підштовхуються автоматично, вони як летять до спільної мети, так і вникають один оруг. На певній він. Добре на цьому
00:43:22 цифру фрагмент завжди. Так, зараз і повертаємо до нашої тематики. Так, єдине, що я ще хотів сказати, що в нас по попередньому практичному заняттю передбачено індивідуальні завдання. В якому форматі? Воно є у вас на сторінці, і там задається просто варіанти.
00:44:14 Двадцять день варіантів кожен варіант за номером в списку. Так, хто не знає свого номера, може запитати його. Тут задається, що початкові координати дронів, цільові координати, так, і параметри статичних перешкод. Координати центрів перешкод і радіуси перешкод. Тут у нас є. Запас безпеки від краю перешкоди. Тут таке. Можна використати той, що в нас є.
00:45:06 І на основі того алгоритму, що є, по скоректувавши стартові позиції, ціль і перешкоди, отримати свою візуалізацію для відповідного варіанту. Це індивідуальне завдання один, а відповідно. Наступний раз ми розглянемо фактично заняття 2, бо вже зараз достигнемо, що і відповідне і відвідальні задання буде. На цьому ми десь сього на сьогодні закінчуємо. Я ще й маю.
00:45:52 А кукітку - це який номер варіанту? Добре, попитайтеся, кокітку мають 13-й номер. Добре, дякую. Одразу Осачука подивіться, бо ми. Давайте я тоді вам скажу. Для тих, хто є: худецький четвертий варіант, Темчешин, шостий варіант, Рельник 8, Безук 10, 19 12, 8 13 варіант. Мороз пятнадцятий варіант. Новицький 16 варіант. Осадчук, 17 варіант. Сканій 17, 17. Осачук Сергій. 17 варіант. 18 скалій. Кого не назвав? Товідно, я його не записав в список. Юр, ти не назвали.
00:46:52 О, Юрки підійшла, так. Ми на початку файли сказали, що не написали ті, хто є. Я то записав, але я вас не бачу в списку. Мороз 15 варіант, так, щоб я записав себе ще раз. Мороз 15. Дякую. Терків сьомий варіант. Хто не почув себе, кажіть, бо значить я вас не відбінь. Все одно і переклички. Так, значить, в нас тільки христина з'явилася. У нас відповідно зараз 12 чоловік. 12 учасників, 1 я і 11. Раз, два, три, чотири, п'ять, дев'ять, десять, одиннадцять. Добре, всі є.
00:47:53 Одинадцять, відмічено. Викладач 12. Так, чи є ще якісь питання? А, я бачу Кристину вже тут. На фотографії. Так, якщо питань немає, або кажіть, немає, то тоді зараз ми на цьому завершуємо. Через тиждень у нас буде наступність. Дякуємо гарних вихідних. Все дякуємо вам. Взаємно,же