- LiFePO4 Speicher Test         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 29 von 29

Thema: Quadruped - und er läuft...

  1. #21
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    406
    Anzeige

    Praxistest und DIY Projekte
    Ok, das stimmt so natürlich!

    Das ist das was ich mit "Kompensation" meinte - im Prinzip wollte ich das so lösen:
    Das Bewegungsmuster bleibt gleich, aber: der Schwerpunkt "kreiselt" dann um einen Imaginäre Punkt der sich gradlinig bewegt.

    Das Kreiselt ist dann nichts anderes als, dass der Torso eine Kreisbewegung um den Imaginären Punkt, synchron zur Bewegung durchführt - diese lässt sich einfach auf die vorhandene Bewegung überlagern. Kreisbewegung ist dann um 180° zum anhebenden Bein versetzt.
    Meine Projekte auf Youtube

  2. #22
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    406
    [kleines] Update:

    Ich habe heute fleißig programmiert und experimentiert - nun ist es möglich per Pfeiltasten Vorwärts, Rückwärts, Seitwärst zu laufen oder zu drehen - das klappt alles wunderbar!
    Für die Kompensation habe ich abhängig von der Bewegungsart einen Radius zwischen 10 und 15 mm zum "imaginären Punkt" gewählt um die der Torso kreiselt - damit läuft er erstaunlich stabil und hat keine Kippneigung mehr!

    Auch die Lösung mit dem Akku erwies sich als sehr gut:
    Das 4,8V 4 Zellen Akku-Pack (NiHM 2300 mA) erfüllt alle Erwartungen - nach dem ich mehrere Stunden probiert habe - konnte ich gute 25 Minuten durchweg laufen.
    Das heißt es sind vermutlich 30-45 Laufzeit mit einer Ladung möglich! Nach dieser Zeit resetet dann das WLAN-Modul auf Grund des Spannunsgeinbruchs. Ansonsten reicht der Akku gut für die 12 Mini-Servos! Lediglich ein kleines Zittern bleibt.
    Für die Versorgung vom Microcontroller und dem WLAN Modul habe ich ja die Variante mit einer Diode und einem Elko erprobt - das Ergebnis: in Verbindung mit dem Akku und einem 220 µF Elko funktioniert das super - keinerlei Probleme. Einzig mein 15 V 3 A Labornetzteil funktioneirt damit nicht - vermutlich ist der Einschaltstrom so groß, dass das Netzteil kurzzeit einbricht/abschaltet. Ziehe ich das WLAN Modul ab starte die Servos und setzte es wieder auf läuft es. (Aber sehr umständlich/unschön).

    Mein nächstes Ziel wird es jetzt sein die Bewegungsarten flüssig zu verknüpfen so, dass alle Bewegungen ineinander verlaufen, bzw. kombiniert werden können, dass die Höhe sowie der Nick dynamisch geändert werden können. (Derzeitig existieren alle Gangarten als separater Zyklus)
    Außerdem bekommt der Roboter noch eine schöne ABdeckung spendiert (die ich mir noch ausdenken muss).

    Anbei: alle Daten werden derzeit auf meinem Laptop berechnet und simultan übertragen - je weiter der Roboter von meinem Laptop entfernt ist, desto langsamer wird er. Das liegt daran, dass er auf seine Datensätze wartet.
    Wenn alles fertig ist, werde ich Versuchen die Daten auf dem Microcontroller zu übertragen so, dass er nurnoch seine Befehle per WLAN erhält oder komplexe Daten extern berechnen lässt.

    Außerdem: das Gewicht des Quadrupeds beträgt 380 g!

    Gruß Erik
    Geändert von erik_wolfram (13.03.2013 um 15:11 Uhr)
    Meine Projekte auf Youtube

  3. #23
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    406
    Endlich habe ich es geschafft!

    Mit Android hat es ein bisschen gedauert, aber jetzt läuft es. Deshalb ein kleines Video:




    Gruß Erik
    Meine Projekte auf Youtube

  4. #24
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.02.2013
    Ort
    Graz
    Beiträge
    211
    Hmm, wie funktioniert die WLAN-Kommunikation prinzipiell? Das Modul am Roboter simuliert eine serielle Verbindung und am Tablet mit Sockets?

  5. #25
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    Wow, der macht sich ja richtig gut
    Bin auch beeindruckt, dass die Beine sich trotz des einfachen Aufbaus so flüssig bewegen und auch der Laufalgorithmus ist schön flüssig ohne dass er ins Wanken gerät. Wieviel wiegt eigentlich das Fliegengewicht? Ist ja auch schon sehr kompakt gebaut. Wenn ich den Sensor am Kopf so sehe kann ich davon ausgehen, dass der noch autonom werden soll?

  6. #26
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    406
    Hallo,

    also die WLAN Übertragung ist recht simpel: ja - es wird ein Socket verwendet - dieser wird von dem RN 171 Modul bereit gestellt. Per TCP-Protokoll wird alle 200 ms ein Befehlssatz aus 7 Bytes übergeben, die dann vom WLAN-Modul via USART an den Microcontroller übergeben werden.

    Das mit dem flüssigen Gang hat eine Weile benötig. Ich hatte mir zunächst ein SImulations-Programm für die SImultane Analyse erstellt. Letztendlich hat aber die zeichnerische Lösung zum Erfolg geführt. Im Video, auf dem unebenen Weg, kippt er noch ziehmlich häufig, auf ebenen Boden passiert das nicht.

    Das Gesamtgewicht beträgt knapp 400g.

    Sehr erstaunlich: nach ordentlichem Aufladen des Akkus habe ich jetzt Teilweise Laufzeiten von bis zu 45 min gehabt - das erfreut mich sehr!

    Der Sensor war für den autonomen Betrieb gedacht - durch die Verringerte Betriebsspannung (3,3 V) hat er noch eine brauchbare Reichweite von ca. 20-30 cm. Leider ist der Atmega mit seinen 8 MHz (Begrenzt durch die Betriebsspannung von 3,3 V) sehr ausgelastet - es stehen nichtmal mehr als 25 % der Ressourcen zur Verfügung.

    Wie es jetzt weiter geht weis ich noch nicht genau - eigentlich würde ich das ganze jetzt gerne eine Nummer größer bauen um mehr Möglichkeiten zu haben...

    Gruß Erik
    Meine Projekte auf Youtube

  7. #27
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    Also ich finde den auch wirklich Klasse gebaut. Besonders gefällt mir wie der Sensor angebaut ist - sieht irgendwie aus ...wie "Drohne besser"

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    Schön dein kleiner. Jetzt will ich auch so einen, wieviel hat der denn ca. Gekostet?

    Mit was für einem Akku läuft der? schon LiPo oder immernoch die 4 NiMH Zellen?

    Wo berechnest du die IK? Auf dem Mega oder extern?

    Würde es dir Ausmachen, den IK Algorithmus zu Posten? Bin da sehr interessiert dran, eigentlich mehr an dem Punkt mit dem Bein anheben. Beim Rest ist es auch immer schön zu sehen, wie das andere gelöst haben.

  9. #29
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    406
    Hallo,

    eine genaue Übersich der Kosten habe ich nicht, aber es wird sich so zwischen 150 - 200 € einpendeln.
    Hier ein paar der wichtigsten Komponenten, natürlich kommt viel Kleinkram hinzu.

    1x WLAN-Modul RN 171 35 €
    13x Servo zu 5 €
    1x NiHm-Akku 4,8V 2300mAh 20 €
    1x Distanzsensor 13 €

    Bei dem Akku handelt es sich um einen NiHm-Akku mit 2300 mAH - der war eigentlich mal für einen anderen Roboter gedacht - hat sich hier aber hervoragend bewährt. Die Laufzeit von 30-45 min finde sich sehr zufriedenstellend. Und von den Maßen und dem Gewicht des Akkus passt es auch. Die meisten LiPo's wären zu lang gewesen um sie im Torso gut unter zu bekommen.

    Der Code ist eigentlich sehr einfach geschrieben - das sieht man auch im Video: das Absetzten der Beine ist sehr abrupt. Alle Beine laufen zu 25 % der Laufzyklus versetzt zueinander - das werte ich dann mittels Modulo-Operation aus und die Beine verhalten sich dann entsprechend ihrer Position.

    Code:
    while (schlafen)
    {
        sleep_mode ();
    }
    schlafen = 1;
                
    i = (i + speed)%100;
            
    
    weg = (i + 100) % 100;
    y_offset = 6 * sin(weg / 100.0 * 2.0 * M_PI - 0.75 * M_PI);
    weg = (i + 150) % 100;
    
    if (weg > 74)
    {
        x = 30.0 + (weg - 75.0) / 100.0 * 60 * 3.0;
        z = -50.0;
    }else{
            x = 90.0 - weg / 100.0 * 60 * 4.0 / 3.0;
            z = -60.0;
    }
    
    y = -60.0 + y_offset;
    
    move(0, x, y, z);        // Bein_vr
    
    
    weg = (i + 175) % 100;
    
    if (weg > 74)
    {
        x = -90.0 + (weg - 75.0) / 100.0 * 60 * 3.0;
        z = -50.0;
    }else{
        x = -30.0 - weg / 100.0 * 60 * 4.0 / 3.0;
        z = -60.0;
    }
            
    y = -60.0 + y_offset;
    
    move(1, x, y, z);        // Bein_hr
    
    weg = (i + 125) % 100;
    
    if (weg > 74)
    {
        x = -90.0 + (weg - 75.0) / 100.0 * 60 * 3.0;
        z = -50.0;
    }else{
        x = -30.0 - weg / 100.0 * 60 * 4.0 / 3.0;
        z = -60.0;
    }
        
    y = 60.0 + y_offset;
    
    move(2, x, y, z);        // Bein_hl
    
    
    weg = (i + 100) % 100;
    
    if (weg > 74)
    {
        x = 30.0 + (weg - 75.0) / 100.0 * 60 * 3.0;
        z = -50.0;
    }else{
        x = 90.0 - weg / 100.0 * 60 * 4.0 / 3.0;
        z = -60.0;
    }
    
    y = 60.0 + y_offset;
    
    move(3, x, y, z);        // Bein_vl
    Mit dem Befehl "Sleep-Mode" bezwecke ich nur, dass die Bewegungsberechnung nur alle 20 ms ausgeführt wird.

    Die Variabel "i" zählt nun fortlaufend für den Zyklus und wird mittels %100 für einen Zyklus von 100 % ausgewertet. Die Versätze der Beine erreiche ich durch das Adddieren der jeweiligen 25 %:
    weg = (i + 100)%100
    weg = (i + 125)%100
    weg = (i + 150)%100
    weg = (i + 175)%100

    Wenn der "weg" des jeweiligen Beins unter 75 % der Bewegung liegt wird eine Vorwärtsbewegung ausgeführt, wenn sie über 75 % liegt wird angehoben und zurück gesetzt. (z = - 60 - unten; z = -50 - oben)
    Die Bewegung wird dann abhängig vom jeweiligen Bein (der Koordinatenursprung sitzt im Roboter-Torso, die X-Achse zeigt geradeaus) im Bereich von (+/-)90 bis (+/-)30 mm mit einer Schrittweite von 60 mm ausgeführt. Für eine gleichmäßige Bewegung wird während der 75 % Vorwärtsbewegung mit 4/3-facher Geschwindigkeit bewegt und beim Rücksetzten (der restlichen 25 %) mit 3-facher Geschwindigkeit.

    Die Nummerierung der Beine ist im Uhrzeigersinn (0, 1, 2 und 3). Das Vertauschen der Versätze 150, 175, 125 und 100 für die Beine 0, 1, 2 und 3 hat sich zeichnerisch als die optimale Abfolge erwiesen, da der Schwerpunkt so immer stabil ist. Zusätzlich wird noch eine Sinusbwegung (y_offset) in Laufrichtung aufmodeliert um eine zusätzliche Sicherheit zu erhalten.

    Der Befehl "Move" berechnet dann die Servowinkel für die entsprechenden Koordinaten - die Position des Hüftgelenks der jeweiligen Beine wird dort berücksichtigt und subtrahiert.

    Da sich gezeigt hat, dass es keinen großen zeitlichen Nachteil bei der Berechnung gibt verwende ich fast nur Fließkomma-Variabeln. Am längsten dauert die Berechnung der Servowinkel durch die Winkel-Funktionen Sinus, Cosinus und Tangens.

    Ich hoffe diese Erläuterung hilft dir ein bisschen weiter!

    Gruß Erik
    Meine Projekte auf Youtube

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. Quadruped
    Von RoninShooter im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 17.07.2012, 08:58
  2. Suche Bausatz Quatropode / Quadruped
    Von Typer im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 0
    Letzter Beitrag: 03.12.2010, 17:15
  3. start mit AVR Studio und GCC ==>> LÄUFT!
    Von The Man im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 09.01.2009, 10:38
  4. [läuft+Code] Servotest an ATtiny13 läuft nicht
    Von oberallgeier im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 18.10.2007, 17:49
  5. Antworten: 3
    Letzter Beitrag: 15.08.2005, 17:41

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress