Förderjahr 2019 / Project Call #14 / ProjektID: 4647 / Projekt: netRob
Der Schwerpunkt der letzten Monate lag vorwiegend auf dem Arbeitspaket 3D-Simulation.
Als 3D-Rendering-Engine verwenden wir BabylonJS welches in jedem Browser funktioniert. Die Rendering-Engine ist verantwortlich für die zweidimensionale bildliche Darstellung unserer 3D-Objekte im Browser. Stark vereinfacht formuliert, definieren wir beispielsweise eine 3D-Szene mit einem Würfel mit konkreter Position (x,y,z) und die Rendering-Engine berechnet bis zu 60 mal pro Sekunde die 2D-Bilder welche die 3D-Objekte aus der Perspektive des Betrachters darstellen. Die Rendering-Engine beachtet dabei perspektivische Verdeckungen, Lichteinfall, Oberflächenbeschaffenheit, uvw. für möglichst realitätsnahe Darstellungen.
Rendering-Engines strukturieren die darzustellenden Objekte üblicherweise in einem Szenengraph, quasi einer Ordnerstruktur. Dies bietet den Vorteil, dass alle Objekte von den ihnen übergeordneten Elternobjekten abhängig sind. Vor allem die Position und Rotation der Objekte wird dabei hierarchisch von oben nach unten weitergegeben. Dies bewirkt, dass alle Kinderobjekte wie beispielsweise Kugeln in einer Box mitverschoben und mitgedreht werden, wenn das Elternobjekt, die Box, bewegt wird. Algebraisch betrachtet entspricht dies der hierarchischen Multiplikation der homogenen (4x4)-Transformationsmatrizen.
Dieses Konzept wird bei unserer Robotersimulation stark genutzt, um den Roboter und dessen Segmente zu modellieren. Die aktuelle Rotation jeder Achse beeinflusst die Position aller weiteren Segmente und deren Achsen, genauso wie die Drehung meines Oberarmes die Position des Unterarmes sowie aller Fingerglieder beeinflusst. Diese Abhängigkeit kann man sehr praktisch über die Verschachtelung der Baumstruktur nutzen, um die Positionen einfach und effizient zu modellieren und berechnen. Schließlich muss ich bei einer Roboterbewegung lediglich die neue Rotation der Achse aktualisieren und alle Kinderobjekte werden durch die Rendering-Engine automatisch bewegt.
Ich hoffe, dass ich damit einen guten Einblick in die Welt der Rendering-Engines, Szenengraphen und den Zusammenhang zum aktuellen Stand unserer Robotersimulation geben konnte.