- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 17

Thema: Hexapod

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Zitat Zitat von HannoHupmann Beitrag anzeigen
    durch die modulare Ansteuerung wird es sehr schwierig die Beine später sauber zu synchronisieren. Hier favorisiere ich einfach einen Lösung mit einem µC der alle PWM Signale erzeugt.
    Das würde ich nicht unbedingt so eng sehen. I2C auf einem AVR läuft bei bis zu 400 kHz, das entspricht optimistisch gerechnet 50 kB/s Datenrate (natürlich geht noch einiges für Adressierung flöten, außerdem ist die Flankensteilheit der I2C Signale ein begrenzender Faktor), was 20 µs/Byte entsprechen würde. Wenn man also entsprechend kurze Telegramme zur Positionsübermittlung verwendet, kann man ohne weiteres eine schnellere "motorische Kommunikation" realisieren, als im menschlichen Nervensystem.

    Ich hab's damals bei meinem Hexapoden auch so gemacht, es gibt einen Controller je Bein, alle Beincontroller werden als I2C Slaves von einem Master kontrolliert. Jedes Bein bekommt vom Master einfach die Sollposition für die Fußspitze, rechnet seine eigene IK und stellt die drei Gelenke dementsprechend ein. Das war kein Problem:



    (dass die Bauweise des Hexas ansonsten aber ziemlich wabbelig war stimmt auch... )

    Gruß
    Malte

  2. #2
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Meine Güte, das mit den Reglern und den Spitzenströmen wurde hier im Forum jetzt schon mehrfach diskutiert. Eigentlich wird es in jemdem Hexabot Threat noch mal erklärt. Also auch hier wieder. Natürlich kann kein Regler der Welt die Spitzen glätten die bei einem Hexa auftreten. Manche Systeme aus Servos und Akku sind stabil genug um einfach darüber hinweg zu sehen, andere reagieren etwas empfindlicher. Daher gilt es eine großgenuge Anzahl von Kondensatoren einzubauen, die die ganzen Spitzen glätten. Ich rede hier allerdings nicht von ein paar kleinen 100nF oder 100µF sondern eher von 6800µF für jedes Bein. Leistungselektronik ist eben ganz was anderes als 5V Logikspannung.

    LiPos sind da einfach erste Wahl und ja man muss ein wenig mehr Aufwand betreiben für die Ansteuerung, aber dafür passt am Ende auch das Gewicht.

    @Malty es geht mir nicht um die Datenmenge sondern um die Tatsache, dass man die Daten nicht synchron an alle Beine schicken kann sondern immer leichte latenzen mit einbaut. Das kann am Ende zu Problemen führen, außer es ist einem egal, wann sich die Beine bewegen.
    Es gibt µC mit 80Mhz, das reicht dicke um alle Beine anzusteuern.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Die Datenmenge die pro Zeit verschickbar ist, ist ein Maß dafür, in welchem absoluten Zeitfenster die unterschiedlichen Slaves mit Steuerdaten versorgt werden können. Wenn dieses Fenster hinreichend klein wird - und das ist für diese Anwendung mMn bei I2C der Fall - ist damit kein praktisches Problem mehr verbunden. Die Leute haben früher (mich eingeschlossen) mit analogen Servos gebaut, deren Regelung lief bei ca. 50 Hz! Und die standard Digitalservos kann man maximal auch nur mit etwa 300 Hz updaten. Wenn man ein verlässliches Timing in dieser Größenordnung hinbekommt, ist alles im grünen Bereich. Und das geht mit I2C. Wegen der eher lächerlichen Trigonometrie die man für eine Hexapoden-IK benötigt gleich einen riesigen Controller zu verwenden finde ich auch nicht gerade elegant. Okay, ob's ökonomisch ist, für jedes Bein einen eigenen Controller einzusetzen, darüber kann man natürlich auch streiten .

    Gruß
    Malte
    Geändert von malthy (23.04.2014 um 19:25 Uhr)

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    23.04.2014
    Beiträge
    10
    Das sich das mit dem Timing beim I2C ausgeht denk ich nämlioch auch. Es werden ja keine große Datenmengen verrschickt(wahrscheinlich nur ServoID und Winkel). Das sollte dann kein Problem sein.
    Natürlich muss auf die Latenz geachtet werden. Allerdings kommt dann auch wieder die Reaktionszeit der Servos hinzu, was das Ganze weniger kritisch macht.

    Die LiPos die wir haben sind recht schwer und brauchen einen haufen platz, da sind mir normale Akku batterien lieber...

    Edit: werden hier eigentlich auch irgendwo laufalgorithmen behandelt? hab bis jetzt noch nichts gefunden
    Geändert von wrock (23.04.2014 um 20:13 Uhr)

  5. #5
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Dann hast du die falschen LiPos :-P. Ganz in ernst, es gibt im Moment keine Akkus die annähernd an das Energie/Gewichtsverhältnis der Lipos ran kommen und bezahlbar sind! Abgesehen davon bekommt man heute Lipos schon für 30 bis 50€ mit ausreichender Leistung. Dann kann man schwächere Servos einsetzen und spart sich dort wieder einiges. Die grundsätzliche Herangehensweise ist einfach immer: so leicht wie nur möglich!

    Laufalgos gibt es mehr als genug im Forum. In meinem Vinculum Projekt gibt es sogar einige Seiten dazu, wo ich über verschiedene Versionen diskutiere. Für eine genauere Aussage, solltest du die Frage etwas näher spezifizieren.

    EDIT: Die Fragestellung ist übrigens fast schon so alt wie die Entwicklung von Hexas selbst: Modulares Konzept bei der Steuerung oder doch lieber ein zentraler Controller? Bisher habe ich im Forum immer wieder beide Lösungen gefunden und auch genug User die von modular auf zentral gewechselt haben oder in die andere Richtung von zentral zu modular. Ist also immer eine Frage der persönlichen Vorlieben, denn die Aufgabe bleibt ähnlich komplex.
    Geändert von HannoHupmann (24.04.2014 um 09:21 Uhr)

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    23.04.2014
    Beiträge
    10
    So, erst mal zur Ansteuerung...hab mir folgendes Überlegt:

    Aktuell sieht die Befehlstruktur so aus:

    1. CommandForward wird aufgerufen
    2. neue Position wird per IK aus der aktuellen Position berechnet
    3. Laufalgorithmus startet
    4. bei fertigstellung des kompletten wird auf den nächsten Befehl gewartet.


    Vorteil: einfach implementiertung
    Nachteil: Feedback der Servos kann nicht verarbeitet werden, neue Befehle werden erst nach Abschluss des Algos neu verarbeitet-->sehr langsame Reaktionszeit


    Neuer Ansatz:

    1. CommandForward wird aufgerufen
    2. neue Position wird per IK aus der aktuellen Position berechnet
    3. befehl für Fuß1 wird geschickt
    4. es wird auf fertigstellung per Polling gewartet(in unserem Fall bekommen wir die Winkel zurück)
    5. die IST-Position wird mit der SOLL-Position verglichen,
    6. falls unterschiedlich oder neue wir bekommen einen neuen Befehl(z.b richtungsänderung) wird die Position neu berechnet,
    7. ansonsten wird der Laufalgorithmus abgearbeitet-->befehl für Fuß2 wird geschickt

    Vorteil: Nach jedem Schritt kann reagiert werden, ob nun auf Unebenheiten, Blockierungen oder neue Befehle.
    Nachteil: Es kann immer nur ein Fuß bewegt werden-->Geschwindikeits defizit


    Kompromiss[beste Lösung?]

    1. CommandForward wird aufgerufen
    2. neue Position wird per IK aus der aktuellen Position berechnet
    3. Befehl für Fuß1, Fuß3, und Fuß6 werden geschickt, abhängig vom Laufalgorithmus können sowieso nur eine gewisse Anzahl an Füßen in Bewegung sein(dirty bit)-->kein Zeitverlust
    4. Polling auf Fuß1, Fuß2 und Fuß3 für Rückmeldung
    5. Sobald 1 Fuß rückmeldung gibt, wird die IST-Position wird mit der SOLL-Position verglichen,
    6. falls unterschiedlich oder wir bekommen einen neuen Befehl(z.b richtungsänderung) wird die Position neu berechnet,
    7. ansonsten wird der Laufalgorithmus abgearbeitet


    Vorteil: keine Leerzeit, Feedback/Reaktionsfähigkeit sehr hoch
    Nachteil: kompliziertere Implementierung?

  7. #7
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Klassischerweise wird für Roboter die Steuerung durch mehre Ebenen gegliedert. Im Thread zu meinem Vinculum habe ich ausführlich beschrieben wie sowas bei einem Hexabot aussieht. Die meisten Projekte hier im Forum sind ähnlich aufgebaut, wenn auch vielleicht nicht ganz so klar differenziert. Deine Vorschläge sehen mir ehrlich gesagt etwas zu umständlich aus.
    Mit einer Rückgabe der tatsächlichen Winkelposition baut der Fachmann einen Regelkreis auf und lässt diesen parallel zur Berechnung laufen.

Ähnliche Themen

  1. 3-Servo-Hexapod
    Von erik_wolfram im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 29.03.2010, 18:35
  2. Newbie Hexapod
    Von Hummer im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 27
    Letzter Beitrag: 19.08.2008, 08:35
  3. Hexapod extrem?
    Von Skull im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 6
    Letzter Beitrag: 11.02.2008, 20:06
  4. Hexapod
    Von . . . . . im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 08.07.2007, 17:40
  5. Hexapod
    Von unathome im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 5
    Letzter Beitrag: 30.09.2006, 15:11

Berechtigungen

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

Labornetzteil AliExpress