Inhaltsverzeichnis
Human motion capturing character animation II
Modul-Icon | … |
---|---|
Veranstaltung | … |
Autor | Jan Philipp Gerlach, Filip Szeliga, Isabel Ehrenberger, Wei Quan |
Bearbeitungsdauer | 10 h pro Person |
Präsentationstermin | … |
Zuletzt geändert | … |
<note warning> Achtung: diese Wiki-Seite befindet sich noch im Aufbau und ist noch nicht finalisiert !! </note>
<note tip>
Hier findet ihr Hilfestellungen beim Formatieren des Wikis: HowTo - Wiki-Format
Hier gibt es Hilfe zum Erstellen eines Tutorials/Podcasts HowTo - Tutorial
</note>
Einleitung
Beim Entwurf von Robotermodellen muss für jeden Roboter eine Kinematik erstellt werden, welche seine einzelnen Segmente, also Körperglieder, und seine jeweiligen Gelenke mit der Anzahl der Freiheitsgrade beschreibt. Da jeder Roboter individuell ist, muss immer eine neue kinematische Struktur erstellt werden.
Die Bewegungen, welche der Roboter in der Simulation ausführen soll, können nun auf verschiedene Weisen übergeben werden. Diese können beispielsweise direkt eingegeben oder über das sogenannte „Motion Capture“ auf den Roboter übertragen werden. Beim „Motion Capture“ werden Aufnahmen von Menschen mit diversen Kamerasystemen gemacht. Eine Aufnahmemöglichkeit ist die Benutzung von Point-Cloud-basierten Kamerasystemen, wie der Kinect Camera. Eine weitere Möglichkeit stellen aktive optische Kamerasysteme, wie das VICON-System, dar. Um aufgenommen Bewegungen, welche von unterschiedlichen Probanden sein können, auf jeden beliebigen Roboter zu mappen, wurde hierfür die Master Motor Map (MMM)[1] entwickelt. Diese ermöglicht es die Aufnahmen mittels eines Converters auf ein Referenzmodell zu mappen. Die Struktur der MMM ist in folgender Abbildung zu sehen[1]:
In nachfolgender Abbildung ist das Referenzmodell zu sehen.
Durch das Mappen auf das MMM-Referenzmodell werden Eigenschaften des Körpers eines jeden Probanden, wie z.B die Körpergröße und die Segmentlänge, wegmarginalisiert. Dadurch findet eine Normalisierung der Bewegung statt. Das Referenzmodell hat für eine einfache Anpassung eine Größe von einem Meter und ein Gewicht von einem Kilogramm. Mit Hilfe eines Converters wird das Referenzmodell auf das ausgewählte Robotermodell gemappt. Dies hat den großen Vorteil, dass die Modellierung der Modelle für die Aufnahmen und die Modellierung der Robotermodelle unabhängig voneinander stattfinden kann. Durch dieses Verfahren hat man eine große Wiederverwendbarkeit der Daten. Das Referenzmodell ist ein dynamisches Modell. Dies bedeutet, dass zusätzlich zu der Länge der einzelnen Segmente noch die Masse, das Trägheitsmoment und viele weitere Faktoren für jedes einzelne Gelenk berücksichtigt werden. Durch das Modell wird die maximale Anzahl an möglichen Bewegungsfreiheitsgraden vorgegeben. Ein besonderer Vorteil des MMM Frameworks ist, dass es frei im Internet verfügbar ist.
Inhalt
In unserem Seminar haben wir uns genauer mit dem Mapping zwischen Referenzmodell und unserem ausgewähltem Modell beschäftigt. Dazu haben wir zuerst ein Modell des menschlichen Körpers aus dem Internet heruntergeladen[2]. Als Figur haben wir uns dazu Deadpool gewählt. Mit Blender und dem Robot-Editor[3] haben wir ein kinematisches Modell für Deadpool erstellt. Das Modell ist in folgender Abbildung zu sehen.
Dieses besteht aus 20 Segmenten, welche mit verschiedenen Gelenken verbunden sind. Die Gelenke haben, den menschlichen Bewegungsfreiheitsgraden entsprechend, 1-3 mögliche Freiheitsgrade. Insgesamt hat das Modell 46 Freiheitsgrade. Bei jedem Freiheitsgrad wurde zusätzlich noch seine minimalen und maximalen Gelenkstellungen angegeben. Für jeden Freiheitsgrad musste in Blender ein „Bone“ reingelegt werden, beispielsweise bei einem dreidimensionalen Freiheitsgrad liegen hier 3 Bones übereinander. Ein Bone stellt in unserem Fall ein Bezugskoordinatensystem für ein Gelenk und sein dazugehöriges Segment dar.
Das Modell hat vereinfachte Hände und Füße, da einzelne Finger- oder Zehenbewegungen bei uns nicht interessant waren und deshalb nicht näher betrachtet wurden. Die Hände bestehen deshalb jeweils nur aus einem Segment und die Füße jeweils aus zwei Segmenten, ein Segment für den Fuß und eins für die Zehen.
Die kinematische Struktur zusammen mit dem Deadpool Modell ist im Folgenden zu sehen:
Die Schwierigkeit bei der Modellierung lag hierbei bei der Wahl der richtigen Rotationsachsen für die Gelenke, damit eine natürliche menschliche Bewegung entsteht. Eine weitere Schwierigkeit war, den genauen Gelenkmittelpunkt anzugeben, so dass es später zu keinen Fehlern bei den Rotationen bzw. unnatürlichen Bewegungen bei der späteren Ausführung der Bewegungen kommt.
Nachdem die kinematische Kette erstellt und überprüft wurde, wurde in Blender das „Weight Painting“ auf das Modell angewandt. Das automatische Weight Paint hat leider nicht funktioniert, weshalb alle Segmente einzeln angepasst werden mussten. Bei Weight Paint wählt man ein Segment aus und markiert anschließend alle zugehörigen Bereiche des Segments. Ist das Segment rot markiert, bedeutet dies, dass der komplette markierte Teil sich mitbewegt, blau dass dieser Teil sich gar nicht mitbewegt. Farbabstufungen, wie gelb und grün, geben eine teilweise Mitbewegung an. Dies muss für alle Segmente im Modell ausgeführt werden.
Bei diesem Abschnitt lag die Schwierigkeit darin, die richtigen Teilsegmente auszuwählen, welche bewegt werden sollen und verdeckte Punkte zu markieren. Diese Verdeckungen können dadurch entstehen, dass Segmente nah beieinander liegen, wie z.B. bei den Fingern, oder wenn das Objekt noch zusätzliche Gegenstande am Körper besitzt. Unser Modell hat zusätzlich noch Waffen, einen Gürtel, Munition und andere diverse Gegenstände, welche teilweise den Körper verdecken. Um Punkte zu entdecken, welche noch nicht zum jeweiligen Segment gehören, haben wir einzelne Gelenke bewegt, um zu sehen, welche Teile sich nicht oder zu viel mitbewegen.
Anschließend wurden Marker auf das Deadpool Modell angebracht. Die Markerpositionen entsprechen den Positionen des Markersets[4]. Die Marker werden entsprechend des Markersets in Blender an die jeweiligen Stelle des Deadpool Modells angebracht. Durch diese Markierung findet das Mapping zwischen dem Deadpool- und dem Referenzmodell statt, da das Referenzmodell an den gleichen Stellen Markeranbringungen hat. Jeder Marker muss dafür benannt werden und einem Segment zugeordnet werden. Auf den zwei folgenden Bildern sind die Marker auf der Vorder- und Rückseite des Deadpool Modells zu sehen.
Hierbei bestand die Schwierigkeit die genaue Position für die Marker zu treffen, da das von uns ausgewählte Modell einen leicht anderen Körperbau hat. Zusätzlich musste man sich genau überlegen, zu welchem Segment der ausgewählte Marker gehört, da dies die spätere Bewegung beeinflusst. Wenn beispielsweise ein Marker einem falschen Körpersegment zugeordnet wird, kann es zu unnatürlichen Bewegungen kommen, da das Programm versucht das Modell auf die vorgegebene Trajektorie zu mappen. Teilweise war es schwierig die Markernamen genau zu wählen, da die Markernamen teilweise inkonsistent waren. Des Weiteren ist die Positionierung der Marker sehr zeitaufwendig.
Als nächsten Schritt haben wir aus der Motion Data Base[5] Bewegungen rausgesucht. Dabei haben wir folgende Bewegungen gewählt: high kick with right leg[6]
Diese Bewegung haben wir anschließend probiert auf unser Deadpool Modell zu mappen. Leider hat dies nach längerem Probieren trotzdem nicht geklappt. Deshalb können wir an dieser Stelle leider kein Video der Bewegung zur Verfügung stellen.
Zusammenfassung und Ausblick
Bei der Bearbeitung der Seminaraufgabe war es sehr interessant einmal die einzelnen Modellierungsschritte zu sehen. Vor allem hat man bei der Bearbeitung gemerkt, wo genau die Schwierigkeiten liegen und welche Dinge beachtet werden müssen. Die MMM ist ein starkes Softwaretool, um ein selbstdefiniertes Modell auf das Referenzmodell zu übertragen und anschließend auf ein beliebiges Robotermodell zu mappen.
Referenzen
[1] https://h2t.anthropomatik.kit.edu/752.php
[2] http://tf3dm.com/3d-model/deadpool-44183.html
[3] https://h2t.anthropomatik.kit.edu/748.php
[4] https://motion-database.humanoids.kit.edu/marker_set/
[5] https://motion-database.humanoids.kit.edu/list/motions/
[6] https://motion-database.humanoids.kit.edu/details/motions/610/