Три локальні правила, без центрального контролера
Кожен дрон у цьому зграї вирішує свій наступний рух виключно на основі того, що він бачить від своїх безпосередніх сусідів – немає лідера, який би трансляв позиції, і немає центрального планувальника, який би обчислював глобальний маршрут. Це модель Крейга Рейнольдса 1987 року – «boids», три прості правила керування, поєднані разом, і це той самий алгоритм, що створює переконливі зграї птахів та школи риб на екрані. Послідовне, злагоджене утворення «зграї», яке ви бачите в цій симуляції, повністю виникає завдяки локальним взаємодіям.
Розділення, вирівнювання, згущення
розділення = Σ (pozycja_j - pozyція_i) / dist(j)² для кожного сусіда j в межах короткої відстані вирівнювання = середнє значення (швидкість_j) - швидкість_i для кожного сусіда j в межах радіусу стада zгущення = середнє значення (позиція_j) - позиція_i для кожного сусіда j в межах радіусу стада керування = w1 * розділення + w2 * вирівнювання + w3 * згущення (обмежене максимальною силою повороту) Розділення відштовхує дрон від сусідів, які занадто близько наближаються, що запобігає зіткненням у щільному скупченні. Вирівнювання керує дроном для збігу середнього курсу з сусідніми дронами, що дозволяє всій групі повертатися разом. Згущення плавно тягне дрон до середньої позиції його сусідів, що запобігає розсіюванню скупчення.
separation = Σ (pos_self − pos_j) / dist(j)² for each neighbour j within a short radius alignment = average(vel_j) − vel_self for each neighbour j within the flock radius cohesion = average(pos_j) − pos_self for each neighbour j within the flock radius steer = w1·separation + w2·alignment + w3·cohesion (clamped to max steering force)
Перетворення зграї у формування
Безкоштовне зграйне польотування є лише одним із чотирьох режимів тут. Круг, Сітка та Форма V додають четвертий термін: легку привабливість кожного дрона до його призначеного слота на цільовій формі, обчислену один раз від центру формування. Ключовим є те, що це додається поверх сил боїдів, а не замість них — розділення все ще запобігає зіткненням у межах формування, і результат є зграєю, яка самозбирається у потрібний малюнок, водночас уникаючи внутрішніх зіткновень та реагуючи плавно, якщо дрон вибучає з посадки. Натисніть будь-де на полотно та центр формування переміщується туди, і кожен дрон оновлює свою цільову позицію, створюючи плавну міграцію замість телепорту.
Чому справжні рої використовують саме такий тип локальних правил
Центральний контролер, який відстежує стан кожного дрона та обчислює глобальну оптимальну траєкторію, не масштабується: пропускна здатність зв’язку, обчислювальні потужності та відмова одного вузла погіршуються зі збільшенням розміру рою, і вся система зупиняється, якщо координаційний дрон виходить із ладу. Локальні правила масштабуються до необмежено великих роїв з приблизно постійними обчисленнями на дрон (обмеженими кількістю дронів у радіусі взаємодії, а не загальним розміром рою), плавно деградують при відмові або виході з контакту окремих дронів і не потребують єдиної точки відмови – властивості, які роблять контроль на основі стилю «boids» практичною відправною точкою для багатодронних систем у складі, світлове шоу та пошуково-рятувальні операції, а інженери додають гарантії запобігання зіткненням і потенційних полів, специфічних для формування.
Налаштування трьох ваг
Характер рою визначається майже повністю відносною вагою трьох сил. Велике розмежування та слабка згуртованість створюють розрвану, поширену зграю, яка уникає угрупувань; сильна згуртованість та слабке розмежування створюють щільний кластер, який ризикує наближеними зіткненнями; сильне вирівнювання створює зграю, яка обертається як одна плавна хвиля, а не перегрівається внутрішньо. Реальні контролери польоту додатково обмежують прискорення та кут повороту, щоб відповідати фізичним обмеженням справжнього дрона, тому сила керування у формулі вище обмежена — без обмежень сусідні сусіди можуть інакше вимагати миттєвої зміни швидкості, яку жодний реальний ротор не може забезпечити.
Часті запитання
Чи знає будь-який окремий дрон у зграї форму всієї формації?
Ні. Кожен дрон потребує лише власного призначеного слота цілі (у режимах формування) та положення та швидкості сусідніх дронів в межах короткого радіуса взаємодії. Загальна форма формування виникає незалежно від кожного дрона, який дотримується однакових локальних правил, а не від того, що один дрон має глобальну карту.
Чому зграя не стикається сама з собою, коли вона щільно упакована?
Сила розділення зростає різко, коли сусіди наближаються, активно відштовхуючи дрони один від одного до того, як вони стануть занадто близько. Це працює безперервно разом із згуртованістю та вирівнюванням, тому дрони притягуються одна до одної на великій відстані, але відштовхуються на короткій.
Що відбувається, якщо збільшити вагу згуртованості відносно сили розділення?
Зграя щільніше упаковується, оскільки кожен дрон сильніше притягується до середньої позиції сусідніх дронів і менше відштовхується, коли вони наближаються. Якщо це перебільшено, це збільшує ризик майже зіткнень, що є точно тим компромісом, який обережно налаштовують реальні контролери польоту.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Drone Swarm і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Drone Swarm