Trzy lokalne zasady, bez centralnego kontrolera
Każdy dron w tym stłowie decyduje o swoim kolejnym ruchu wyłącznie na podstawie tego, co widzi z najbliższych sąsiadów – nie ma lidera transmitującego pozycje i nie istnieje centralny planista obliczający globalną ścieżkę. Jest to model Craiga Reynolda z 1987 roku, oparty na trzech prostych zasadach sterowania, które zostały ze sobą połączone, a ten sam algorytm generuje przekonujące skupiska ptaków i stad ryb na ekranie. Koherentne, skoordynowane wizualnie formowanie się stada, którego obserwujesz w tej symulacji, powstaje całkowicie dzięki lokalnym interakcjom.
Oddzielenie, wyrównywanie, przyciąganie
oddzielenie = Σ (pozycja_samotna - pozycja_j) / odległość(j)² dla każdego sąsiada j w krótkim promieniu wyrównywanie = średnia(prędkość_j) - prędkość_samotna dla każdego sąsiada j w promieniu stada przyciąganie = średnia(pozycja_j) - pozycja_samotna dla każdego sąsiada j w promieniu stada rozpędzenie = w1*oddzielenie + w2*wyrównywanie + w3*przyciąganie (ograniczone do maksymalnej siły rozbiegu) Oddzielenie popycha drona z dala od sąsiadów, którzy zbliżają się zbyt blisko, co jest silniej uwzględnione im bliżej są. Zapobiega to kolizjom w powietrzu w gęstym stadle. Wyrównywanie kieruje drona do średniego kierunku sąsiednich dronów, dzięki czemu cała grupa obraca się razem zamiast się plątać. Przyciąganie delikatnie przyciąga drona do średniej pozycji jego sąsiadów, co zapobiega rozpraszaniu się stada. Żaden z tych trzech zasad nie odnosi się do żadnego drona poza krótkim lokalnym promieniem i żaden z nich nie odnosi się do ustalonego celu – zachowanie stada jest czystym skutkiem ubocznym reakcji każdego drona jedynie na to, co znajduje się w jego pobliżu.
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)
Przekształcanie stada w formację
Swobodne stadkowanie to tylko jeden z czterech trybów dostępnych tutaj. Tryby Kółka, Siatki i Litery V dodają kolejny element: łagodną atrakcję każdego drona w kierunku jego przypisanego miejsca na celu, obliczaną na podstawie środka formacji. Kluczowe jest, że jest ona dodawana na warstwę sił boidów, a nie zamiast nich – oddzielenie nadal zapobiega kolizjom wewnątrz formacji, a rezultat to zgrupowanie, które samoczynnie układa się w docelowy wzór, jednocześnie unikając wewnętrznych kolizji i reagując płynnie, jeśli jeden z dronów wypadnie z pozycji. Kliknij dowolnym miejscem na kanwie, aby przesunąć środek formacji, a każde miejsce docelowe każdego drona zostanie zaktualizowane, co powoduje płynne przemieszczanie się zamiast teleportacji.
Dlaczego prawdziwe stada wykorzystują dokładnie takie rodzaje lokalnych reguł
Centralny kontroler, który śledzi stan każdego drona i oblicza globalnie optymalną trajektorię, nie skaluje się: przepustowość komunikacji, moc obliczeniowa oraz awaria pojedynczego punktu pogarszają się wraz ze wzrostem stada, a system przestaje działać, jeśli ulega awarii dron-koordonator. Reguły lokalne skalują się do arbitralnie dużych stad z w miarę stałą zużyciem zasobów na drona (ograniczoną liczbą dronów w promieniu interakcji, a nie całkowitym rozmiarem stada), degradują się delikatnie, gdy pojedyncze drony zawodzą lub tracą kontakt z siecią, i nie wymagają żadnego punktu awarii – cechy, które czynią sterowanie typu boids praktycznym punktem wyjścia dla rzeczywistych systemów wielidronowych w logistyce magazynowej, widowiskach świetlnych oraz akcjach ratunkowych, na czym buduje się dodatkowe gwarancje unikania kolizji i pola potencjału specyficzne dla formacji.
Dostrajanie trzech wag
Charakter rojów jest w dużej mierze zdeterminowany przez względne wartości wag nałożonych na trzy siły. Duże rozproszenie i mała kohezja tworzą luźny, rozproszony rój, który unika zwartego skupienia; silna kohezja i małe rozproszenie prowadzi do zwartej grupy, która ryzykuje bliskie kolizje; silne ustawienie powoduje, że rój porusza się jak jednolita fala zamiast wewnętrznie mieszania się. Rzeczywiste kontrolery lotu dodatkowo ograniczają przyspieszenie i prędkość obrotową, aby dopasować je do rzeczywistych fizycznych ograniczeń drona, dlatego siła sterowania w powyższym wzorze jest ograniczona – bez ograniczenia pobliskie sąsiednie jednostki mogłyby w innym przypadku domagać się natychmiastowej zmiany prędkości, jaką żaden prawdziwy wirnik nie może dostarczyć.
Frequently asked questions
Czy pojedynczy dron w rójcu wie o kształcie całej formacji?
Nie. Każdy dron potrzebuje tylko przypisanej pozycji docelowej (w trybach formacji) oraz pozycji i prędkości pobliskich dronów w krótkim promieniu interakcji. Całkowity kształt formacji powstaje niezależnie od każdego z dronów, zgodnie z tymi samymi lokalnymi zasadami, a nie dzięki jednemu dronom posiadającemu globalną mapę.
Dlaczego rójec nie koliduje ze sobą, gdy jest gęsto upakowany?
Siła rozdzielająca rośnie gwałtownie, gdy sąsiednie drony zbliżają się do siebie, aktywnie odpychając je przed zbyt bliskim kontaktem. Działa ona nieustannie obok przyciągania i ułożenia w linii, więc drony są przyciągane na duże odległości, a odpychane na krótkich dystansach, ustalając stabilną odległość między nimi.
Co się dzieje, jeśli zwiększymy wagę przyciągania w stosunku do siły rozdzielającej?
Rój pakuje się bardziej gęsto, ponieważ każdy dron jest silniej ciągnięty w kierunku średniej pozycji sąsiednich dronów i mniej silnie odpychany, gdy zbliżają się one do siebie. Przesunięcie tego za daleko zwiększa ryzyko kolizji, co jest dokładnie kompromisem, który realne sterowniki lotu starannie dostosowują.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Drone Swarm i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Drone Swarm