kolizje brył i fizyka ciała stałego
Kolizje elementów mechanicznych i fizyka ciała stałego w programie Simultus.


Program Simultus umożliwia modelowanie zachowania się brył 3D podczas kolizji mechanicznych.
Poniżej opisano jak prawidłowo i optymalnie, ze względu na obciążenie procesora, skonfigurować program.
Wybór elementów urządzenia, dla których będzie działał mechanizm kolizji.
Bryły importowane do przestrzeni 3D domyślnie nie mają właściwości fizycznych. Stanowią jedynie wizualną reprezentację elementów mechanicznych. Mogą się wzajemnie przenikać i nie działa na nie mechanizm kolizji (reakcji na zderzenia).

Zastosowano takie rozwiązanie, ponieważ obliczenia fizyki brył bardzo mocno obciążają procesor komputera. W praktyce, w modelowaniu urządzeń, istotne są oddziaływania tylko nielicznych jego podzespołów. Np. w przypadku przenośnika z chwytakiem z poniższego rysunku, istotne będzie oddziaływanie pomarańczowej części chwytaka na przenoszone zielone pudełko oraz odziaływanie pudełka i podstawek, na które pudełko będzie odkładane.

Dlatego wystarczy zdefiniować mechanizm kolizji tylko dla tych kilku elementów. Stelaż przenośnika oraz moduły pozycjonujące nie muszą mieć właściwości fizycznych. Dzięki temu obliczenia zachowania się modelu będą zoptymalizowane a przez to szybsze.
Tworzenie siatek kolizyjnych.
Aby bryły mogły ze sobą oddziaływać, należy dla każdej nich utworzyć siatkę kolizyjną. Jest to siatka, która będzie reprezentowała jej kształt w algorytmie odpowiedzialnym za zderzenia elementów mechanicznych. Siatka jest tworzona przez algorytm programu Simultus ale trzeba wybrać odpowiedni jej typ.
BARDZO WAŻNE UWAGI DO TWORZENIA SIATEK KOLIZYJNYCH:
1. Siatka dla danej bryły nie jest dokładnym odwzorowaniem jej kształtu!
2. Dokładniejszą siatkę kolizyjną elementu, można zbudować poprzez podzielenie go na kilka części z osobnymi siatkami kolizyjnymi typu uproszczonego.
Drugi punkt, powyższej uwagi, zostanie poniżej dokładniej wyjaśniony.
Zaznaczając bryłę w menu po lewej stronie ekranu, pojawi się okno jej właściwości. Wśród nich, będą przedstawione poniżej właściwości fizyczne.

Oprócz masy, współczynnika oporu powietrza i materiału, w okienku 'Kolizja' można ustawić typ siatki kolizyjnej, która zostanie przypisany do bryły.
Poniżej opisano rodzaje dostępnych w programie siatek kolizyjnych:
[brak]
Siatka kolizyjna nie jest przypisana do bryły
[uproszczony]
NAJLEPSZY WYBÓR!
Prosta siatka kolizyjna. Jest najszybciej działającym typem siatki, najdokładniej odwzorowującym kształt bryły, pod warunkiem, że bryła nie posiada wgłębień. Mimo to, jeżeli jest to możliwe i wgłębienia nie mają wpływu na wyniki symulacji zaleca się stosowanie tego właśnie typu siatki kolizyjnej.
Poniżej przedstawiono utworzone siatki kolizyjne dla przykładowych brył. Zielone linie na rysunkach pokazują krawędzie siatki kolizyjnej okalające szare bryły. Warto dokładnie je przeanalizować w celu uniknięcia błędów i nieprzewidzianego działania symulacji po wybraniu siatki kolizyjnej.

Analizując kształty powyższych, przykładowych siatek kolizyjnych widać, że okalają one bryły pomijając wszelkie wgłębienia i otwory. W niektórych sytuacjach można wyeliminować ten problem dzieląc bryłę na kilka części.
Łączenie siatek kolizyjnych
Jeżeli bryła posiada wgłębienia, to można ją podzielić na mniejsze bryły składowe i utworzyć dla nich osobne siatki kolizyjne uproszczone. W ten sposób, w wielu przypadkach uzyskamy bardzo dobry efekt łączący dokładność odwzorowania kształtu bryły oraz szybkość obliczeń. Weźmy pod uwagę bryłę numer 4 z rysunku powyżej. Składa się ona z podstawy i ścian bocznych. Utworzona siatka uproszczona wypełnia całą przestrzeń między ścianami bocznymi, więc bardzo niedokładnie odzwierciedla kształt tej prostej bryły. W takim przypadku można tą bryłę podzielić na trzy bryły składowe: podstawa i dwie, osobne ściany boczne. Należy dla nich utworzyć trzy osobne siatki kolizyjne uproszczone. W ten sposób uzyskamy najlepsze odwzorowanie kształtu bryły, które przy okazji najmniej obciąży procesor w trakcie symulacji.
[sfera]
Siatka kolizyjna w kształcie sfery (kuli).
Ten rodzaj siatki również w niewielkim stopniu obciąża procesor w trakcie symulacji. Jednak idealnie odwzorowuje tylko jeden kształt - kulę. Niemniej jednak może być stosowany do brył, których kształt jest do niej zbliżony.
[collider A]
Siatka kolizyjna składająca się z dużej liczby prostopadłościanów wypełniających wnętrze bryły. W porównaniu do typu B i C liczba ich jest najmniejsza, dlatego w trakcie symulacji działa od nich szybciej. Może się zdażyć, że prostopadłościany będą wystawały nieznacznie poza bryłę oraz będą 'zabudowywać' niektóre otwory i wnęki.
[collider B]
Trochę dokładniejszy od typu A. Zawiera więcej prostopadłościanów. Wolniej działa niż typ A. Może się zdarzyć, że prostopadłościany będą wystawały poza bryłę, lub zabudują niektóre otwory i wnęki.
[collider C]
Siatka kolizyjna najgęściej wypełniająca bryłę prostopadłościami. Obciąża procesor w trakcie symulacji bardziej niż typ A i B. Prostopadłościany mogą wystawać poza obszar bryły lub nie wypełniać go w całości.
Porównanie siatek kolizyjnych dla wybranych brył:



Powyżej pokazano różne typy siatek kolizyjnych dla wybranych brył. Po prawej stronie jest bryła z naniesioną na jej widok siatką uproszczoną, składająca się z jednego prostopadłościanu. Po lewej stronie są siatki typu A, B i C. Widać, że podczas, gdy siatka uproszczona składa się tylko z jednego prostopadłościanu, to w siatce typu B i C jest ich kilkadziesiąt, a w przypadku bardziej skomplikowanego kształtu bryły będzie ich kilkaset. To właśnie wpływa na szybkość obliczeń symulacji. Z tego również powodu sugerujemy podzielenie bryły na części i utworzenie dla nich siatek uproszczonych. Zastosowanie siatek typu A, B oraz C jest uzasadnione tym, że można je dość szybko (jednym kilknięciem) utworzyć dla bardziej skomplikowanych brył.
Błędy algorytmu tworzenia siatki kolizyjnej.

Powyżej przedstawiono siatki kolizyjne wygenerowane dla nakrętki. Zdarzają się przypadki, w których algorytm tworzenia siatki kilizyjnej typu A, B lub C działa błędnie. Dzieje się tak w przypadku brył o skomplikowanych kształtach i brył o stosunkowo cienkich ściankach w stosunku do gabarytów. W takim przypadku sugerujemy podział bryły na kilka części lub jeżeli jest to możliwe to zmianę kształtu/wymiarów bryły. Siatki typu B i C mogą, w niektórych przypadkach, wychodzić poza objętość bryły. Nie stwierdziliśmy, aby algorytm tworzenia siatki uproszczonej i sferycznej działał błędnie. Jednak w przypadku powyższej nakrętki algorytm uproszczony, zgodnie z wcześniejszym opisem, nie uwzględnił wgłębienia od spodu, co może być kluczowe w niektórych przypadkach.
Dwa sposoby wykorzystania brył posiadających siatki kolizyjne.
Bryły posiadające siatki kolizyjne można wykorzystać na dwa sposoby:
- jako bryłę na sztywno związaną ze sterowanym układem współrzędnych 6DOF_AXIS,
- jako bryłę poruszającą się swobodnie wraz z układem 6DOF_SOLID.
Bryła na sztywno związana ze sterowanym układem współrzędnych 6DOF_AXIS:
Taką bryłę dołączamy do układu współrzędnych 6DOF_AXIS. Posiada ona siatkę kolizyjną, a więc może uczestniczyć z zderzeniach, ale jej ruch nie jest ruchem swobodnym. Jest na sztywno związana z układem 6DOF_AXIS i porusza się tylko razem z nim. Ruch takiej bryły można wymusić tylko poprzez zmianę położenia układu współrzędnych. Można to zrobić stosując na diagramie blok funkcyjny 6DOF_AXIS:

W powyższym przykładzie przenośnika bryły chwytaka właśnie w taki sposób są przemieszczane.
Bryła taka może oddziaływać na inne bryły ale inne bryły nie mogą jej przesunąć. Gdy zderzy się z inną bryłą połączoną w ten sam sposób z innym układem współrzędnych 6DOF_AXIS wtedy wydarzy się jedna z dwóch opisanych poniżej sytuacji. Będzie to uzależnione od typu połączenia między układem AXIS a bryłą (STL) ustawionego w menu 'opcje'.
Jeżeli połączenie będzie stałe:

to bryły przenikną przez siebie, tak jakby nie miały ustawionej siatki kolizyjnej.
Jeżeli połączenie będzie strunowe:

to obie zderzające się bryły będą drgały.
Drgania brył będą również widoczne, gdy przy połączeniu strunowym bryła będzie miała kolizję ze ścianą ograniczającą obszar działania fizyki.
W rzeczywistości takie sytuacje nie mogą się zdarzyć, dlatego w przypadku zaistnienia jakiejkolwiek kolizji między takimi bryłami należy te kolizje zlikwidować i do nich nie dopuszczać.
Bryła poruszająca się swobodnie wraz z układem 6DOF_SOLID.
Taką bryłę dołączany do układu współrzędnych 6DOF_SOLID. Od tego momentu ten układ będzie na sztywno związany z bryłą i będzie się wraz z nią poruszał. Na ruch bryły będą miały wpływ kolizje z innymi bryłami. W powyższym przykładzie zielone pudełko jest przykładem takiego połączenia. Pozycje tej bryły możemy odczytać w diagramie bloków funkcyjnych stosując blok 6DOF_SOLID:

UWAGA: Podczas symulacji pozycja bryły, dostępna na wyjściach bloku 6DOF_SOLID jest uaktualniana nie szybciej niż 30 razy na sekundę. Czyli dużo wolniej niż częstotliwość obliczeń stanu diagramu bloków funkcyjnych i nie ma nic wspólnego z częstotliwością ustawioną dla symulacji.
Po podłączeniu bryły do układu współrzędnych możemy zmianiać jej pozycję zmieniając pozycje całego układu współrzędnych. W trakcie symulacji nie mamy możliwości zmiany pozycji ani układu ani bryły z poziomu diagramu bloków funkcyjnych. Jedynymi możliwościami zmiany pozycji bryły swobodnej są:
- przemieszczenie bryły poprzez kolizje z innymi bryłami lub granicami obszaru działania fizyki.
- zastosowanie przycisku GO HOME

- zastosowanie przycisku

Pozycję bazową układu współrzędnych możemy ustawić poprzez wciśnięcie przycisku SET HOME

UWAGA: Jeżeli środek układu współrzędnych przemieści się poza granice obszaru projektu to bryła zatrzyma się nieruchomo, mimo że nie ma kolizji z inną bryłą. Należy ją wtedy przemieścić przesuwając układ współrzędnych tak, aby środek układu znajdował się w obszarze projektu. Z tego powodu najlepiej jest układ współrzędnych 6DOF_SOLID oraz bryłę umieścić względem siebie tak, aby środek układu znajdował się we wnętrzu bryły.
Obszar graniczny działania fizyki.
Fizyka działa tylko w obszarze projektu. Granice tego obszaru można zmienić w menu 'opcje' dla każdej osi osobno:

WAŻNA UWAGA! Ograniczenia symulacji (czytaj więcej...)