project poster - Universität Heidelberg
Transcription
project poster - Universität Heidelberg
Nomad lernt laufen 2 Tabea Krockenberger, Carolin Peternell Inverse Kinematik Idee Dem Programm wird ein Punkt (x, y, z) übergeben, an den der Fuß des Beines n bewegt werden soll. Dafür wird für jeden der drei Servos des Beines der entsprechende Winkel berechnet. Dies ist umgesetzt in der Funktion bewegeBein(n, x, y, z). Dabei musste berücksichtigt werden, dass für einige Positionen zwar berechnet werden kann, wie sich die Servos bewegen müssten, diese Positionen jedoch von den Gelenken aus mechanischen Gründen nie eingenommen werden können. Vorteile 1. Einfaches Programmieren von Bewegungsabläufen (ohne langes Ausprobieren!) da man jedes Bein (relativ genau) auf eine vorgegebene Koordinate setzten kann. 2. Einfaches Vermeiden von nichteinnehmbaren Positionen sowie von Zusammenstößen zweier Beine. Aufgabenstellung Fazit und Ausblick Mittels inverser Kinematik sollen grundlegende Bewegungsabläufe, wie Laufen und Drehen, implementiert werden. Dieses Robotik-Praktikum hat uns viel Spaß gemacht. Die Implementierung der Inversen Kinematik bereitete keine größeren Probleme. Mit Hilfe der Inversen Kinematik ist es mit wenig Aufwand möglich die unterschiedlichsten Bewegungsabläufe zu implementieren. Nomad Nomad ist ein radialsymmetrischer Hexapod, der durch einen AVR Mikrocontroller gesteuert wird. Es gibt zwei Servocontroller, die jeweils drei der sechs Beine steuern; jedes Bein besitzt drei Servos. Zur Ansteuerung der Servos wird dem Servocontroller • die Nummer des anzusteuernden Servos servo Id (aus dem Bereich [0, 31]) • die Geschwindigkeit der Bewegung rate (wobei eine kleinere Zahl einer höheren Geschwindigkeit entspricht) • und der Winkel (umgerechnet in eine Zahl zwischen 250 und 1250 und aufgeteilt in low byte und high byte) Programm 1. Der Funktion bewegeBein werden globale Koordinaten übergeben. Diese globalen Koordinaten werden in ein lokales Koordinatensystem für jedes einzelne Bein umgerechnet. übergeben. Jedoch scheinen die Möglichkeiten mit Nomad, so wie er jetzt ist, recht ausgeschöpft und nur das Implementieren neuer Bewegungen eignet sich eher nicht als Aufgabe für ein neues Praktikum mit Nomad. Zumal die Möglichkeiten auf Grund der geringen Übertragungsrate recht beschränkt sind. Eine Idee für zukünftige Praktika wäre z.B. das Anbringen von (Abstands-)Sensoren, zur Erkennung von Hindernissen oder auch um über unebenes Gelände zu laufen. Ein anderer limitierender Faktor hierbei wäre möglicherweise das Stromkabel, dass nur einen beschränkten Bewegungsradius zulässt. Allerdings ist fraglich, ob z.B Akkus eine bessere Lösung darstellen, da sie das Gewicht erhöhen, welches sowieso schon kritisch ist (Nomad ist z.B. nicht in der Lage selbständig aufzustehen). Bewegungen Bei den Bewegungen Laufen und Drehen werden immer jeweils drei Beine gleichzeitig angehoben und nach vorne“ abgesetzt während die anderen ” drei Beine sich (am Boden) nach hinten“ bewegen. Ein Schritt besteht aus jeweils vier Positionen, die nacheinander ausgeführt werden. ” Leider war es auf Grund der langsamen Übertragung (vom Microkomtroller zu den Servokontrollern) nicht möglich noch weitere Zwischenschritte einzufügen. 2. Ermitteln der Winkel α, β, γ in der Funktion berechneWinkel(x, y, z) mit Hilfe von trigonometrischen Berechnungen: (a) Bestimmen des Punktes (x, y , z ) und des Winkels α mit Hilfe der x- und y-Koordinate. Drehen (b) Gesucht: (Geeigneter) Schnittpunkt der Kreise um den Punkt (x, y, z) mit Radius b und um (x0, y0, z0) mit Radius a. • drehen1(delta) Drehen um den Winkel delta, maximaler Winkel pro Schritt: 15◦ Laufen • laufen2(k, j) Laufe k Schritte der Länge j. • laufen1(l) Laufe l cm, maximale Schrittgröße: 15 cm • orientieren(k) Ändern der Laufrichtung um k · 60◦: • drehen2(delta) Drehen um den Winkel delta: orientieren( k · 60◦) und drehen1(delta − k · 60◦) (c) Mithilfe dieses Schnittpunktes können die Winkel β und γ berechnet Übergang dann werden. 3. Umrechnen der Winkel in (vorher gemessene) Werte im Bereich [250; 1250] für die Servos durch die Funktionen UmrechnungAlpha, UmrechnungBeta, UmrechnungGamma innerhalb der Funktion servosAnsteuern(n, alpha, beta, gamma) (mit Korrekturfaktoren für die einzelnen Beine) 4. Überprüfen, ob die berechnete Position eingenommen werde kann und ggf. bewegen der Servos (in servosAnsteuern(n; alpha; beta; gamma)) Beim Übergang sollte es nicht nötig sein, jedesmal in die Grundposition zurückzukehren. Also werden die drei Beine, die gerade angehoben sind, auf die neue (Grund-)Position gesetzt, mit den anderen drei Beinen kann dann sofort die nächste Bewegung begonnen werden. Da bei dieser Vorgehensweise eine Bewegung jeweils mit den anderen drei Beinen anfängt als die vorher ausgeführte, musste dies bei den entsprechenden Funktionen zusätzlich berücksichtigt werden. Dazu führten wir eine globele Variable ein, in der gespeichert wurde, welche Beine zuletzt angehoben wurden. Außerdem entschieden wir uns dafür, die Übergänge direkt in die oben genannten Funktionen mit einzubauen. Das hat den Vorteil, dass man in der main-Datei die Funktionen direkt hintereinander schreiben kann, ohne noch eventuelle Übergänge beachten zu müssen. Das Team Ruprecht-Karls-Universität Heidelberg Betreuer: Sven Ebser Prof. Dr. Katja Mombaur Sommersemester 2010 Carolin Peternell & Tabea Krockenberger Mathematik (Diplom) mit Nebenfach Informatik (6. FS)