Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projektewise24:projekt5:doku [2025/03/31 15:35] henrischwarzer [Robotiklabor - WiSe 24/25] |
projektewise24:projekt5:doku [2025/03/31 21:15] (aktuell) henrischwarzer [Robotiklabor - WiSe 24/25] |
||
---|---|---|---|
Zeile 11: | Zeile 11: | ||
**DETAILBESCHREIBUNG: STEUERUNG DER SERVOS**\\ | **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.\\ | 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.\\ | ||
- | //Code Servo//\\ | + | <figure label>{{:projektewise24:projekt5:bildschirmfoto_2025-03-31_um_14.17.02.png?600|}}<caption>Code für die Servobewegung</caption></figure>\\ |
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.\\ | 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**\\ | **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:\\ | 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:\\ | ||
- | //Codebild Beat//\\ | + | <figure label>{{:projektewise24:projekt5:bildschirmfoto_2025-03-31_um_14.17.58.png?600|}}<caption>Code für die Beaterkennung</caption></figure>\\ |
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.\\ | 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.\\ | ||
\\ | \\ | ||
Zeile 23: | Zeile 23: | ||
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. | 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.\\ | 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.\\ | ||
- | //Bild 1//\\ | + | <figure label>{{:projektewise24:projekt5:whatsapp_image_2025-03-31_at_14.08.38.jpeg?100|}}<caption>Skizze Servos für Schulter</caption></figure>\\ |
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. | 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. | ||
Zeile 29: | Zeile 29: | ||
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 | 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.\\ | schrauben.\\ | ||
- | //Bild 2//\\ | + | <figure label>{{:projektewise24:projekt5:whatsapp_image_2025-03-31_at_14.08.48.jpeg?200|}}<caption>Bemessungen Schulter</caption></figure>\\ |
- | 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 | + | 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\\ |
- | //Bild3&4//\\ | + | <figure label>{{:projektewise24:projekt5:whatsapp_image_2025-03-31_at_14.08.52.jpeg?200|}}<caption>Alle Seiten Oberarm</caption></figure>\\<figure label>{{:projektewise24:projekt5:whatsapp_image_2025-03-31_at_14.08.56.jpeg?600|}}<caption>Servo-Maße</caption></figure> \\ |
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.\\ | 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.\\ | ||
\\ | \\ | ||
Zeile 43: | Zeile 43: | ||
* Scharnier\\ | * Scharnier\\ | ||
- | **//Bilder+Skizze//**\\ | + | <figure label>{{:projektewise24:projekt5:whatsapp_bild_2025-02-28_um_15.15.40_77145d6e.jpg?200|}}<caption>Roboter vorne</caption></figure>\\ |
+ | <figure label>{{:projektewise24:projekt5:whatsapp_bild_2025-02-28_um_15.15.48_bc8cabf0.jpg?200|}}<caption>Roboter vorne ohne Frontplatte</caption></figure>\\ | ||
+ | <figure label>{{:projektewise24:projekt5:image.jpg?200|}}<caption>Roboter hinten</caption></figure>\\ | ||
+ | <figure label>{{:projektewise24:projekt5:bot.jpg?200|}}<caption>Roboter Seite</caption></figure>\\ | ||
**Pinbelegungstabelle**\\ | **Pinbelegungstabelle**\\ | ||
Zeile 59: | Zeile 62: | ||
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. | 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. | 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. | + | 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**\\ | ||
+ | {{:projektewise24:projekt5:roboterbesser.zip|}} | ||