Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise24:projekt5:doku

Projektdokumentation - TanzverBot

Henri Schwarzer, Johnny Le, Malwin Menz, Marielle Görlitz

Robotiklabor - WiSe 24/25


EINFÜHRUNG
Unser Ziel mit dem TanzverBot war es, einen Roboter zu bauen, welcher nach einerEingabe zu einem vorgegebenen Beat dann zu tanzen. Den Fokus haben wir hierbei auf die Bewegung der Arme gelegt, da die Balance mit sich bewegenden Teilen zu halten ein zu anstrengendes Unterfangen wäre. Insgesamt beinhaltet der Roboter nun zwei Servos pro Arm und zwei Knöpfe.

VORGEHENSWEISE
Unsere Projektgruppe hat sich aufgeteilt in eine Bau- und eine Programmiergruppe. Die Baugruppe bestand aus Johnny und Marielle und die Programmiergruppe aus Henri und Malwin. Unsere erste Aufgabe mussten wir jedoch zusammen beschreiten, es ging um unser Roboterkonzept. Was sollte unser Roboter können? Wir entschlossen uns also einen Roboter zu bauen, der zu einem eingegebenen Beat tanzen kann. Folgende zu beschreitende Aufgaben waren: Eine Skizze für den Roboter inklusive Maßen zeichnen, die Teile aus Holz aussägen, diese dann miteinander zu verbinden, dann mit der Technik zu verkabeln, den Code perfektionieren und den Roboter schlussendlich noch ästhetisch aussehend zu lassen.

DETAILBESCHREIBUNG: STEUERUNG DER SERVOS
Um die Servos zu steuern, benutzen wir im Code zum einen globale Variablen, um die gewünschten Zielpunkte zu setzen, zum anderen eine Funktion, welche nichts anderes tut, als alle Servos auf ihre jeweilige Zielposition zu setzen.

Abbildung 1: Code für die Servobewegung


Bei verschiedenen Tänzen konnten wir also einfach die gewünschten Zielwerte setzen und diese Funktion ausführen und so eine Bewegung ausführen. Allerdings hat diese Methode ein relativ großes Problem, und zwar, dass die Servos oft innerhalb eines Beats nicht ihre Zielposition erreichen. Um dies zu lösen, haben wir den gesamten Beat um 285 Millisekunden verlängert, indem wir zu jedem Beat diese Zeit dazu addieren. Diese 285 Millisekunden entspricht der Zeit, die die Servos durchschnittlich brauchen, um sich um 90° zu drehen. Außerdem haben wir eine Intermission nach jedem Tanz eingesetzt, um die Tänze visuell zu trennen und eine Reset-Funktion, die die Servos nach Durchlauf eines Tanzes in die Ausgangslage zurücksetzt.

DETAILBESCHREIBUNG: BEATERKENNUNG
Um den eingegebenen Rhythmus zu erkennen muss das Programm drei Punkte schaffen: Erstens muss das Programm wissen, wann es überhaupt beginnen und enden soll die Zeit zu zählen, Zweitens muss es neue Einträge machen, immer dann wenn der Knopf erneut gedrückt wird, Drittens muss es die einzelnen Momente zu einer gesamten Pause zusammenführen. Unser Code macht dies in einer Funktion:

Abbildung 2: Code für die Beaterkennung


Hierbei hatten wir ein großes Problem und zwar haben wir keine Ahnung wie man Knöpfe tatsächlich debuffert, also mussten wir dies über Variablen lösen: Eine Variable wird auf eins gesetzt, bis der Knopf wieder losgelassen wird, sodass nur ein Timestamp gespeichert wird, pro Knopfdruck. Allerdings hat dieses Problem auch die Folge, dass, da die Funktion über den gleichen Knopf begonnen wie beendet wird, das Programm in einem Tick die Funktion startet und auch wieder beendet. Hierfür haben wir auch eine Variable eingesetzt, die am Beginn der Funktion auf eins gesetzt wird und am Ende der Funktion wieder auf null und das Programm den Reset-Knopf erst wieder wahrnimmt, wenn diese Variable auf null ist, also der Knopf einmal losgelassen wurde.

DETAILBESCHREIBUNG: SCHULTERN & GELENKE
Das größte Hindernis der Baugruppe bei der Planung war das Designen und die Umsetzung der Gelenke. Dafür musste die Verbindung zweier verschieden großer Servos bedacht werden und wie man das am effektivsten macht. Hinzu kommt die Befestigung der Servos an das Gehäuse vom Arm und des Körpers. Dann musste im Nachhinein noch geschaut werden wie man die Beweglichkeit der Arme ohne große Einschränkungen maximieren kann ohne die Ästhetik und Stabilität der Arme einzuschränken. Der Grund warum wir zwei Servos an den Schultern haben wollten war damit wir die horizontale aber auch die vertikale Bewegung in den Armen ermöglichen können. Dafür mussten wir zwei Servos aneinander befestigen und hatten erst die Idee ein Gehäuse aus kleineren Holzplatten zu bauen und dann den anderen Servo durch Schrauben zu dort dann befestigen.

Abbildung 3: Skizze Servos für Schulter


Jedoch war es im Nachhinein einfacher und effektiver einfach die beiden Servos aneinander mit Holzleim zu kleben mit einer kleinen Holzplatte dazwischen als Verbindungsstück.

Dann mussten wir uns überlegen wie wir dieses Gelenk an unser Körper- und Armgehäuse befestigen. Dabei haben wir den Inneren und größeren Servoteil an die Hinterwand des Körpers geklebt. Bei der Befestigung an den Armen mussten wir eine schraube durch die Hinterwand der Arme durchbohren und in die Drehachse schrauben.

Abbildung 4: Bemessungen Schulter


Als letztes mussten wir uns überlegen wie die Bewegung der Arme nicht eingeschränkt wird durch die zwei unterschiedlichen Achsen in die sich die arme drehen können. Dabei hatten wir eine Grundidee in der wir kleine Rechtecke in die Arme reinsägen genau da wo diese Bewegungsfreiheit gebraucht wird. Dazu mussten auch die Servos ausgemessen werden

Abbildung 5: Alle Seiten Oberarm

\\

Abbildung 6: Servo-Maße


Danach haben wir eine effizientere Methode gefunden die die Bewegung noch mehr maximieren kann indem wir die Oberkörperbreite dünner machen als die Breite der Arme und dann die Innenseite der Arme komplett oder auch nur teilweise weglassen. Dadurch ist es auch möglich den Arm auch ein teilweise in den Körper rein zu drehen falls dies gebraucht wäre.

MATERIALIEN

  • Holzplatte mit 4mm Stärke
  • 4 Servomotoren* Schrauben und Muttern
  • Druckknöpfe
  • Steckkabel
  • Steckbrett
  • Arduino-Nano
  • Scharnier
Abbildung 7: Roboter vorne


Abbildung 8: Roboter vorne ohne Frontplatte


Abbildung 9: Roboter hinten


Abbildung 10: Roboter Seite


Pinbelegungstabelle

Pin PinMode angeschlossenes Teil Funktion
DigitalPin 6 OUTPUT Servo groß Rotation Schulter links
DigitalPin 7OUTPUTServo großRotation Schulter rechts
DigitalPin 8OUTPUTServo kleinSkapularbewegung links
DigitalPin 9OUTPUTServo kleinSkapularbewegung rechts
DigitalPin 11INPUTDruckknopfReset-Knopf
DigitalPin 12INPUTDruckknopfBeat-Knopf


Ergebnis und Diskussion
Die entwickelte Lösung ermöglicht eine zuverlässige Beat-Erkennung, auf deren Grundlage ein programmierter Tanz ausgeführt wird. Dabei bewegen sich die Gliedmaßen des Systems rhythmisch zur erkannten Musikstruktur. Allerdings weist die Lösung auch Einschränkungen auf. Da keine Lautsprecher integriert sind, erfolgt die Tanzbewegung ohne hörbare Musik, zudem beschränkt sich die Beweglichkeit auf die Arme, während weitere Körperteile nicht in die Choreografie einbezogen werden können. Diese Faktoren schränken die Funktionen des Roboters ein und bieten Potenzial für zukünftige Erweiterungen. Für zukünftige Verbesserungen und Erweiterungen bieten sich mehrere Ansatzpunkte. Ein zentraler Aspekt ist die Optimierung der Optik. Durch passgenauere Bauteile und ein komplexeres, ästhetisch ansprechenderes Design könnte das Aussehen der entwickelten Lösung gesteigert werden, sodass sie nicht nur funktional, sondern auch gestalterisch überzeugt. Darüber hinaus könnte die Beweglichkeit des Systems erweitert werden, indem zusätzliche Gliedmaßen wie ein beweglicher Hals, Beine oder eine schwenkbare Hüfte integriert werden. Dies würde komplexere Tanzbewegungen ermöglichen und die Ausdruckskraft des Systems erheblich steigern. Ein weiterer wesentlicher Verbesserungspunkt ist die Integration von Lautsprechern. Dadurch könnte die Wiedergabe vorprogrammierte Musikstücke erfolgen, zu denen Tanzchoreografien synchron ablaufen. Dies würde das System nicht nur besser machen, sondern auch die Interaktion mit Nutzern und Zuschauern verbessern.

CODE
roboterbesser.zip

projektewise24/projekt5/doku.txt · Zuletzt geändert: 2025/03/31 21:15 von henrischwarzer