Simulieren Sie Roboter mit mehr Realismus: Neue Physikfunktionen für Unity 2021.2 beta

Die Beta-Version von Unity 2021.2 enthält Verbesserungen in der Benutzerfreundlichkeit der Physikfunktionen, die neue Anwendungsfälle ermöglichen und gleichzeitig das Authoring und Debugging im Bereich der Robotik erleichtern.
Die Komponente ArticulationBody ist das Herzstück unserer Robotersimulation, da sie die Simulation kinematischer Ketten mit hoher Genauigkeit ermöglicht, was für Roboterhände, Manipulatoren, mobile Roboter und vieles mehr unerlässlich ist. Wir haben auf das Feedback der Benutzer gehört und mehrere Änderungen vorgenommen, um die Leistung und die Benutzerfreundlichkeit zu verbessern.
Die Eigenschaften der Komponente ArticulationBody wurden zur besseren Lesbarkeit neu geordnet. Jetzt befinden sich die Parameter für die Masse in einem visuellen Block, gefolgt von den Parametern für die Verankerung und den Antrieben. Diese Änderungen wurden in Unity 2021.1 & 2020.3 zurückportiert.

Der ArticulationBody-Editor verwendet jetzt die gleichen Gelenkwerkzeuge wie die regulären iterativen Gelenke. Dies gewährleistet ein einheitliches Erlebnis im gesamten Editor. Darüber hinaus ist es auch möglich, die Grenzen und Anker aller Verbindungen visuell zu bearbeiten.

Die Gelenkwerkzeuge unterstützen alle ArticulationBody-Gelenktypen, da sie um die Bearbeitung des prismatischen Gelenks erweitert wurden, das vorher nicht verfügbar war. In diesem Forumsthread finden Sie weitere Informationen und können uns Feedback geben.

ArticulationBody hat eine neue Einstellung, die es erlaubt, den Modus der Kollisionserkennung auszuwählen. Alle Modi der kontinuierlichen Kollisionserkennung werden unterstützt, genau wie bei Rigidbody. Diese wurde auf 2021.1 und 2020.3 zurückportiert, da sie für bestimmte Anwendungsfälle als wesentlich angesehen wurde. Um beispielsweise ein maschinelles Lernmodell zu trainieren, das eine humanoide Figur beim Gehen steuert, musste die kontinuierliche Kollisionserkennung an den Füßen aktiviert werden, da unser Modell andernfalls in der Lage war zu lernen, wie es den Eindringimpuls, der von den Füßen ausgeht, die den Boden überlappen, zu seinem Vorteil nutzen kann: Es bewegte sich viel schneller vorwärts, als es das normalerweise getan hätte, und auch einige Flugmuster wurden entdeckt.
Es wurden zusätzliche Varianten von ArticulationBody.AddForce hinzugefügt, die denen von Rigidbody.AddForce entsprechen. Kraft, Beschleunigung oder Impuls direkt anwenden. Dies erleichtert die Migration von bereits vorhandenem Code von Rigidbody zu ArticulationBody.
Wir haben die Klarheit der Dokumentation verbessert, indem wir die Randbedingungen und Sonderfälle explizit angegeben haben. In dieser Version haben wir eine neue Seite für die Komponente ArticulationBody.
Auf der Grundlage von Benutzer-Feedback haben wir auch Maßeinheiten für alle C#-Eigenschaften der ArticulationBody-Komponente in die Dokumentation aufgenommen; siehe z. B. Masse.
Wir investieren weiterhin in die Vereinfachung der allgemeinen physikbezogenen Pipelines und in die Bereitstellung von mehr Flexibilität, um verschiedenen Nutzungsmustern gerecht zu werden. Wir glauben, dass dadurch anspruchsvollere Simulationen möglich werden, da die Ersteller nun die zusätzlichen Funktionen nutzen können, um ihr Feld besser zu verstehen und die Simulation so zu konfigurieren, dass genauere Ergebnisse erzielt werden.
Abgesehen davon unterstützt der Physik-Debugger jetzt Prefabs richtig - sowohl im Isolations- als auch im Kontextmodus. Das Prinzip des Teilens und Eroberns kann nun in größerem Umfang angewandt werden, indem die Eigenschaften von Prefabs isoliert betrachtet werden, während der Rest der Szene nicht angezeigt wird.

Physikalische Schichten sind ein wichtiges Instrument zur Optimierung der Leistung des Kollisionserkennungssystems. Häufig und vor allem bei großen Szenen mit vielen Ebenen ist es am besten, zuerst alle Kollisionen zu deaktivieren und danach nur die benötigten zu aktivieren. Um dieses Nutzungsmuster zu ermöglichen, wurden neue Schaltflächen hinzugefügt, mit denen die Kollisionserkennung zwischen allen Ebenen in den Physikeinstellungen umgeschaltet werden kann. Dies ist bei größeren Projekten nützlich, bei denen viele Ebenen vorhanden sind, bei denen Sie aber die Interaktionen auf eine kleinere Teilmenge von Ebenenkombinationen reduzieren können, um die Leistung zu verbessern.

Dem Physics Profiler wurden zusätzliche Metriken hinzugefügt. Jetzt sind mehr Diagramme verfügbar, und der Textbereich zeigt mehr Daten über die aktuelle Simulation an. Neu hinzugekommen sind unter anderem die Gesamtzahl der Physikabfragen, die Anzahl der Gelenkkörper und die Anzahl der Transformationen, die mit dem letzten Frame synchronisiert wurden.

Es kann auch ein benutzerdefiniertes Profilermodul erstellt werden, das nur die Metriken enthält, die für ein bestimmtes Projekt benötigt werden.

Schließlich ist jetzt auch die Speichernutzung als Metrik verfügbar.
Die Physik-Batch-Abfragen sind eine Möglichkeit, die Leistung von Physik-Abfragen (wie z. B. Raycasts) zu steigern, indem sie auf allen verfügbaren Kernen ausgeführt werden, im Gegensatz zu den normalen Abfragen, die ausschließlich auf dem Hauptthread laufen.
Idealerweise ist der Code, der von den Ergebnissen einer Stapelabfrage abhängt, selbst ein C#-Job, um die Leistungssteigerung zu maximieren. Das Hauptproblem, das dies verhinderte, war jedoch die Tatsache, dass der Collider-Treffer als Unity-Komponente(RaycastHit.collider) gemeldet wurde. Keine der Unity-Komponenten ist außerhalb des Haupt-Threads verfügbar, so dass die Annahme der gebündelten Abfragen ziemlich eingeschränkt ist.
Um dies zu beheben, wird nun die Instanz-ID des getroffenen Colliders angezeigt. Instanz-IDs können außerhalb des Hauptthreads frei verwendet werden, so dass es kein Problem mehr sein sollte, die Abfrageaufträge zu verketten.
Der Patch-Reibungsmodus ist der Standard-Reibungs-Simulationsmodus in Unity. Es ist sicherlich ein Kompromiss, der eher auf eine höhere Leistung als auf eine höhere Simulationsgenauigkeit abzielt, aber es kann immer noch so optimiert werden, dass man mit einem knappen Rechenbudget vernünftige Ergebnisse erzielt.
Ein neuer, verbesserter Patch-Reibungsmodus ist jetzt in den Physikeinstellungen verfügbar. Sie befasst sich mit dem Problem, dass die Reibungskräfte bei mehr als einem Reibungsanker in einem Kontaktpaar bis zu doppelt so stark sein können wie in analytischen Modellen vorhergesagt.
In der folgenden Grafik gleiten beispielsweise Würfel mit unterschiedlicher Gleitreibung über eine Ebene. Die roten Würfel zeigen die erwarteten Endpositionen, wie sie theoretisch vorhergesagt wurden. Die blauen Würfel haben eine normale Reibungsfläche und scheinen sich auf halbem Weg zum Ziel zu bewegen. Die grünen Würfel verwenden die neue, verbesserte Flächenreibung und kommen den erwarteten Werten sehr viel näher.

Die neue API für Kontaktänderungen ist jetzt verfügbar, und wir sammeln in diesem Forumsthread Feedback. Sie ermöglicht die Anpassung der Reaktion der Physik-Engine auf die Kontakte. Für jedes Kontaktpaar ist es möglich, die Kontaktpunkte zu ändern, die vom Solver angewandten Impulse zu begrenzen, die Zielgeschwindigkeiten zu optimieren und vieles mehr. Es ermöglicht unter anderem die Herstellung von Löchern in beliebigen Kollidern, die Erzeugung von klebrigen Kontakten und verschiedenen physikgesteuerten Förderbändern. Im folgenden Beispiel fällt die Kugel durch die Ebene, weil sie die Berührungspunkte mit der Ebene ignoriert (kann flächenabhängig gemacht werden). Rechts prallt ein Würfel an den beiden schiefen Ebenen ab, ohne sich zu drehen - denn die Reaktion auf den Kontakt wurde so angepasst, dass Drehungen ausgeschlossen sind.

Diese Verbesserungen stellen sicher, dass die Benutzer realistischere Ergebnisse aus ihren Simulationen in Unity erzielen. Viele dieser Verbesserungen wurden auf der Grundlage von Vorschlägen oder Rückmeldungen aus unserer Gemeinschaft vorgenommen, und wir laden Sie ein, sich an der Diskussion zu beteiligen. Um mit der Robotik in Unity zu beginnen, sehen Sie sich einige unserer Beispiele und Demos im Unity Robotics Hub an.