PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motorgröße für einen parallelen Seilroboter



FirefoxMetzger
28.02.2014, 13:12
Hallo,
wie der Titel schon andeutet möchte ich einen kleinen paralellen Seilroboter bauen.
Für diejenigen denen der Name nichts sagt: Er hat große Ähnlichkeit zu einer Steward-Platform (Hexapod) allerdings aus Seilen und zeichnet sich dadurch aus das sich auch große Arbeitsräume kostengünstig und Energieeffizient realisieren lassen.

Momentan befinde ich mich in der, wenn man es so nennen will, "brainstorming" Phase. Denke also darüber nach, was alles benötigt wird, wie viel das Projekt kosten wird und welche Dimension die Bauteile haben müssen.
Das Projekt selbst ist primär als ein Anschauungsobjekt gedacht, da es viele grundlegende Konzepte der Robotik veranschaulicht und dabei (hoffentlich) im preislichen Rahmen eines Hobbyprojekts bleibt.

Geplant ist ein Rahmen aus Holz (2D oder 3D). Von jeder Ecke soll ein Seil zum Endeffektor gehen, welches ihm in der Ebene 2 und im Raum 5-6 Feinheitsgrade gibt. Der Endeffektor selbst ist eine Platte aus Holz, welche ein Gewicht von bis zu 5kg (evtl. weniger) möglichst präzise bewegen soll.
Bedienen und steuern möchte ich das ganze soweit wie möglich per USB über den PC.

Die Frage die ich nun habe ist: Welcher Motor ist am besten geeignet, um die Plattform über die Seile zu halten? Ich tippe ja auf einen Schrittmotor, aber mit welchem Drehmoment / Haltemoment?
Der Motor wickelt im Prinzip nur ein Seil von einer Seilrolle auf und ab und muss darüber die Kraft die von der Plattform auf das Seil wirkt halten. Das Seil wird wohl nicht mehr als 3cm von der Motorachse entfernt sein, was einem Drehmoment von grob 5*9.81*0.03=1.47Nm entspricht. Allerdings sollte ein kleinerer Motor genügen, da die Plattform von 4 Seilen gehalten wird. Vielleicht kann man die Kraft auch über ein Getriebe erhöhen und so einen kleineren Motor verwenden, da ich primär an Genauigkeit und nur sekundär an Geschwindigkeit interessiert bin.

Wer kann mir da einen passenden Motor empfehlen? Oder Tipps geben auf was ich besonders achten sollte?

ranke
01.03.2014, 09:24
... was einem Drehmoment von grob 5*9.81*0.03=1.47Nm entspricht.

Ist soweit richtig gerechnet. Falsch ist allerdings die Annahme, dass sich die Gewichtskraft des Endeffektors schon irgendwie über die einzelnen Antriebe verteilen wird. Tatsächlich wird die Summe der Zugkräfte in den Seilen typischerweise höher sein als die Gewichtskraft, die es zu bewegen gilt. Wie hoch, das kann man erst wissen, wenn man die Geometrie kennt.

Zweite Überlegung:
Auch wenn hier keine hohe Dynamik gefordert ist, sollte man Beschleunigungskräfte wenigstens mit einem Sicherheitszuschlag berücksichtigen. Wenn man dynamischer werden will, sollte man sie auch rechnen. Bei einem Wickeldurchmesser von nur 6cm könnten auch Kräfte zur Überwindung der Biegesteife des Seils eine Rolle spielen (je nach Seil).

Dritte Überlegung:
Gerade wenn man eher quasistatisch arbeiten will, ist das verfügbare Drehmoment des Motors limitierend, während man die maximale Drehzahl nicht annähernd ausnutzen kann. In solchen Fällen lohnt es sich über zusätzliche Getriebe nachzudenken.

Vierte Überlegung:
Was soll (darf) bei Energieausfall passieren? Darf die Last abstürzen? Falls nein, geht das wieder in die Richtung Getriebe, weil dieses das Bremsmoment des Motors entsprechend der Übersetzung verstärkt. Getriebe mit schlechterem mechanischen Wirkungsgrad und / oder hoher Untersetzung sind damit praktisch selbsthemmend. Wenn hingegen z.B. ein Schutz vor Seilriss durch Nachgeben der Winde erwünscht ist, dann wäre Selbsthemmung kontraproduktiv.

Fünfte Überlegung:
Zur Steuerung wird man zu jedem Zeitpunkt für jede Winde die ausgegebene Seillänge wissen wollen. Wie soll das realisiert werden?

FirefoxMetzger
02.03.2014, 17:45
Falsch ist allerdings die Annahme, dass sich die Gewichtskraft des Endeffektors schon irgendwie über die einzelnen Antriebe verteilen wird. Tatsächlich wird die Summe der Zugkräfte in den Seilen typischerweise höher sein als die Gewichtskraft, die es zu bewegen gilt.

Hm, das ist ein sehr guter Punkt. Die Seile werden aufeinander eine Kraft ausüben, da sie ja gespannt werden müssen und sie im Allgemeinen nicht parallel zur Gewichtskraft verlaufen. Gibt es noch einen anderen Grund den ich übersehen habe?



Bei einem Wickeldurchmesser von nur 6cm könnten auch Kräfte zur Überwindung der Biegesteife des Seils eine Rolle spielen (je nach Seil).

Gerade wenn man eher quasistatisch arbeiten will, ist das verfügbare Drehmoment des Motors limitierend, während man die maximale Drehzahl nicht annähernd ausnutzen kann. In solchen Fällen lohnt es sich über zusätzliche Getriebe nachzudenken.


Deshalb war meine Überlegung hier einen Schrittmotor zu verwenden. Ein Getriebe halte ich aber, grade nach deinem Post, für sinnvoll. Die Frage ist nun aber welches und mit welcher Übersetzung.

Über die Biegesteife des Seils mache ich mir weniger Sorgen. Geplant war ein 1 mm Polyamidseil mit 300 N Bruchlast welches ich auf eine knapp 1 cm dicke Trommel wickeln wollte. Aber in diesem Punkt kenne ich mich zu wenig mit Seilen aus, als das ich mich blind auf die Aussage "passt schon" verlassen kann.



Was soll (darf) bei Energieausfall passieren? Darf die Last abstürzen?


Wieder eine wichtige Frage. Ehrlich gesagt habe ich mir dazu noch gar keine Gedanken gemacht. Das was der Endeffektor momentan halten soll sind Stifte, ein paar Flaschen Cola sowie eventuell mal eine Webcam. Es ist also alles eher unzerbrechlich, zumal ich nicht plane das ganze mehrere Meter über dem Boden schweben zu lassen.

Ein Seilriss soll auf alle Fälle vermieden werden, allerdings glaube ich nicht das ich in die Nähe der Belastungsgrenze komme. Ansonsten muss ich ein dickeres Seil verwenden.

Auf der anderen Seite ist ein ungebremstes Abstürzen der Last auch nicht erwünscht, denn sollte ich mich mal dazu durchringen meine Bierflasche durch die Gegend zu fahren, dann sollte ein GAU verhindert werden :cool:.
Alles in allem also entweder ein "gebremstes fallen" oder einfach eine selbsthemmende Konstruktion.



Fünfte Überlegung:
Zur Steuerung wird man zu jedem Zeitpunkt für jede Winde die ausgegebene Seillänge wissen wollen. Wie soll das realisiert werden?

Geplant war den Roboter zu Anfang auf eine fest definierte, bekannte Startposition zu setzen, wenn er eingeschaltet wird. Anschließend soll ein tracking der Motorbewegungen via dead reckoning / Koppelnavigation erfolgen.
Ich bin mir allerdings noch unsicher welche Sensoren ich verwende um daraus einen Kalman-Filter zu bauen. Meine erste Idee war eine (oder zwei) Kamera(s), da ich mich mit Computer Vision einigermaßen auskenne.
Eine andere wären Ultraschallsensoren, welche geschickt platziert den Endeffektor im gesamten Arbeitsraum im Blick behalten können ohne von den Seilen beeinträchtigt zu werden.
Andere Ideen sind aber trotzdem willkommen.


Mein momentanes Konzept für den Roboter sieht aus wie folgt (ist noch eher grob):

Die erste Version soll eine 2D Konstruktion werden. Wenn ich diese dann erfolgreich kontrollieren kann erweitere ich den Roboter auf 3 Dimensionen mit mehr Motoren und Freiheitsgraden.

Endeffektor:
- Platte 15x15 cm auf der man so ziemlich alles installieren kann (vlt einen kleinen Greifer?)
- In jeder Ecke des Quadrates eine Bohrung für jeweils ein Seil mit ca. 1.5 - 3 m Länge

Motor/Seiltrommel:
- Schrittmotor (Haltemoment?)
- ein noch näher zu bestimmendes Getriebe
- 1mm Polyamidseil welches auf einer Seiltrommel mit 1cm Innendurchmesser auf- und abgewickelt wird

Rahmen:
- Rechteckiger Rahmen mindestens 40x60cm
- auf ca. 20-30cm hohen Füßen (damit man den Arbeitsraum ggf. ohne Umbau nach unten erweitern kann)
- das Seil wird über Seilrollen in jeder Ecke des Rahmens zum Endeffektor geführt.
- Motoren und Seiltrommeln werden an den Füßen des Rahmens gelagert.

Steuerung:
- Motortreiber werden zu den Motoren passend gewählt
- Motorsteuerung, Sensorauswertung und Regelung übernimmt ein Raspberry Pi
- Pfadvorgaben, motion profile u.ä. werden via Ethernet vom PC / Handy aus übergeben
- Sensorwerte, Kamerabilder, Position des Endeffektors wird via Ethernet ausgeben

Ziele:
- Bewegen des Endeffektors auf Bahnen durch den Arbeitsraum (Geschwindigkeit allerdings zweitrangig)
- Malen eines Mandalas (vlt ausgewachsene Vektorgrafiken)
- Balancieren eines Stabes auf dem Endeffektor
Hauptziel ist hier allerdings die Planung und Umsetzung des Projekts mit Fokus auf die Softwareseite (lokalisieren, vorwärts / rückwärts Kinematik, …)

Kritik an jedem Punkt und Vorschläge sind gerne gesehen, zumal ich denke das ich bestimmt irgendwo was wichtiges vergessen habe.

Geistesblitz
02.03.2014, 20:41
Für die Auslegung der Motoren und Getriebe braucht man auf jeden Fall die Angaben, wie schnell sich die Plattform bewegen soll, wie schnell sie sich beschleunigen soll und wie schwer sie maximal ist. Der schwierigste Lastfall, wen ich mir vorstellen kann, ist, wenn die Plattform sehr weit oben ist, sodas die Sehnen nahe an die Horizontallage kommen. Die müssten dann ganz schön unter Spannung gestellt werden. Daher würde ich eine Maximalhöhe vorsehen, damit die Antriebe in einem angenehmen Bereich arbeiten können. Wieviele Antriebe soll es denn geben? Wenn die Plattform nachher 6 Freiheitsgrade haben soll, brauchst du auch 6 Antriebe. Ob sich das aber überhaupt realisieren lässt, weiß ich nicht, bin mir da gerade ein wenig unsicher.
Was willst du eigentlich gegen Pendeln machen? An meiner ehemaligen Uni gabs nen Versuchsaufbau mit einem Kranroboter, da wurde über die Rollen die Seilposition gemessen und über bewegliche Führungen der Seilwinkel. Das ganze System befand sich in einer recht komplexen Regelung, um auch gegen Pendeln, Störungen und Parameterabweichungen (Lastmasse) sicher zu sein. Als Antriebe kamen 3 Linearantriebe und 3 Seilantriebe zum Einsatz.

Bei Seilrollen musst du auch beachten, dass sich der effektive Durchmesser ändern kann, wenn das Seil über mehrere Lagen aufgerollt wird. Dadurch würde dann deine Positioniergenauigkeit leiden. Außerdem brauchst du auch noch einen Mechanismus zum Referenzieren, da Schrittmotoren nur Relativbewegungen ausführen können. Das könnten irgendwelche Anschläge an den Seilen sein, die Endschalter betätigen, oder irgendwas mit Gabellichtschranken o.ä., aber sowas wirst du definitiv brauchen.

frist
03.03.2014, 11:57
Hallo,
hier mal zwei Links zu Anregung:

http://www.ipa.fraunhofer.de/Parallele_Seilroboter.597.0.html
http://www.youtube.com/watch?v=RCa8uDFzbsw

Grüße
Flo

FirefoxMetzger
03.03.2014, 12:38
Das Problem ist, das der Roboter keine spezifische Aufgabe erfüllen soll von der man direkt eine maximale Beschleunigung oder Gewichtskräfte ableiten kann. Es ist primär eine Konzeptstudie wie gut oder schlecht man einen solchen Roboter mit einfachen Mitteln kontrollieren kann, wie genau er ist und so weiter.
Auf der anderen Seite gibt es bestimmt dutzende Dinge die ich mit dem Roboter probieren will. Beispiele sind das Balancieren eines Stabes in der Ebene, das Manipulieren / Bauen mit Legosteinen oder das Zeichnen von Grafiken.

Geplant sind 4 Antriebe zur Manipulation in der Ebene. Rotation werde ich zu Beginn weglassen, weil ich denke, dass ich erst einmal in der Ebene zurechtkommen muss bevor ich mich höheren Dimensionen zuwende.
Hierbei soll die Plattform ein Gesamtgewicht von (mittlerweile) 3 kg nicht überschreiten. Wobei ich die Plattform mit Gewichten ausstatten werde, um immer eine Kraft nach unten zu haben.
Die maximale Beschleunigung würde ich jetzt einfach mal mit 15 - 30 cm/s^2 ansetzen. Allerdings nur deshalb, weil ich noch keine Vorstellung darüber habe, welche Beschleunigung ich brauche um so etwas wie Balance-Aufgaben durchzuführen.

Für mich viel wichtiger als die Frage nach der Leistung des Motors ist (zunächst) die Frage nach dem Typ des Motors. Ein Schrittmotor ist in dieser Situation angebracht? Oder sollte man lieber irgendeine andere Art von Motor verwenden?
Auch bei den Getrieben gibt es so viele Arten, das ich immer noch dabei bin, mir einen Überblick zu verschaffen. Ich habe schon Steward-Platformen mit Schneckengetriebe gesehen und bei Portalfräsen scheint ein solches Getriebe auch Usus zu sein. Allerdings bezweifle ich das es auch bei einem Seilroboter das sinnvollste Getriebe ist.
Kennt jemand vielleicht eine Übersicht verschiedener Getriebetypen mit Stärken und schwächen der einzelnen Typen?



Was willst du eigentlich gegen Pendeln machen?


Ein wichtiger Punkt, den ich aber erst zur Gänze klären werden kann, sobald ich die ganzen Rahmendaten festgelegt hab. Da ich die Regelung nach Möglichkeit komplett in Software machen will und es eine eher Modulare Aufgabe ist hinter eine Steuerung eine Regelung zu setzen, wollte ich zuerst den Roboter bauen und dann die Regelung.
Schlimmstenfalls muss ich irgendwo nachrüsten, was aber Aufgrund des doch eher einfachen Aufbaus keine Probleme bereiten sollte.



Bei Seilrollen musst du auch beachten, dass sich der effektive Durchmesser ändern kann, wenn das Seil über mehrere Lagen aufgerollt wird. Dadurch würde dann deine Positioniergenauigkeit leiden.


Bedingt. Wenn man weiß wann eine neue Lage angefangen wird, kann man das zurückrechnen, was jedoch Arbeit ist, die man vermeiden kann. Eine einlagige Seiltrommel wäre hier definitiv einfacher, weshalb ich auch eine solche verwenden will.



Außerdem brauchst du auch noch einen Mechanismus zum Referenzieren, da Schrittmotoren nur Relativbewegungen ausführen können.

Ja, dead reckoning ist "ungenau". Grade über lange Zeiträume hinweg ohne Referenz.
Der Mechanismus zum Referenzieren ist auch noch nicht 100 % festgelegt. Optimal wäre ein Laserscanner an der Plattform, aber dann wäre der Sensor teurer als der ganze Roboter. Deshalb war meine Idee eine oder zwei Kameras mit entsprechender Computer Vision Software auszurüsten. Damit ließe sich die absolute Position der Plattform bestimmen und zusammen mit den Relativbewegungen der einzelnen Motoren, sollte eine genaue Positionsbestimmung möglich sein.

Off Topic: Ich glaube ich nutze dieses Projekt um mich mal in die Grundlagen von CAD einzuarbeiten (ist hoffentlich einfacher und genauer als Zeichnungen von Hand). Gibt es ein Programm welches hier besonders Empfehlenswert ist?

Geistesblitz
03.03.2014, 13:07
Meinst du Schneckengetriebe oder Spindelantriebe? Ist schon ein ziemlicher Unterschied ;)

Schrittmotoren sind für Open-Loop-Anwendungen ganz gut, wenn man aber dynamisch regeln möchte, geht das mit Servomotoren besser. Dafür sind dann allerdings die Steuerungen teurer und man muss mehr Komponenten aufeinander abstimmen.

Eine Regelung auf Softwareseite kann man gerne nachrüsten, aber trotzdem benötigt es dafür auch Sensoren, die dann auch Veränderungen an der Maschine nötig machen.

Als Seilrolle könntest du vielleicht sowas wie ein Außengewinde mit großem Durchmesser nehmen, wo das Seil sich immer brav in die Gewindegänge reinsortieren kann. Allerdings hast du dann je nach Stellung einen Winkel zwischen Seilrolle und Umlenkrolle, der dann in der Software mit abgebildet werden müsste.

Mit einer Kamera ist grobes Positionieren sicher möglich, aber Feinpositionierung (so im mm-Bereich) wird dann schon schwierig. Da wäre ein direktes Messystem schon besser.

Als freies CAD-Programm geht Sketchup ganz gut, ansonsten soll wohl auch DesignSpark Mechanical ganz gut sein (ist auch näher an professionellen CAD-Programmen dran), allerdings hab ich das noch nicht ausprobiert.

FirefoxMetzger
03.03.2014, 14:08
Oh, du hast recht. Ich kenne mich mit Getrieben leider noch kaum aus. Waren für mich bisher Zahnradkonstruktionen die eine Größe in eine Andere umgewandelt haben. Genauer habe ich mich damit bisher nicht beschäftigen müssen. Wird aber grade nachgeholt.

Ein solches Gewinde zu benutzen war auch meine Idee. Die Frage ist aber ob ich ein Gewinde mit entsprechender Ganghöhe finden kann. Den Winkel zwischen der Stange und der Umlenkrolle kann man umgehen, indem man die Gewindestange selbst während des Abrollens bewegt.

Bei der Positionierung per Kamera kommt es denke ich darauf an wie hochauflösend sie ist. Ich weiß aber auch nicht wie genau ich mit einer Seilkinematik werden kann. Schätzen würde ich einige mm Ungenauigkeit.
Aber du hast natürlich Recht. Die letztendliche Genauigkeit richtet sich nach den verwendeten Sensoren. Es ist allerdings nicht leicht die passenden zu finden. Man könnte sich überlegen ob man irgendwie einen Infrarot Sensor an die Umlenkrolle befestigen kann, sodass dieser immer auf die Plattform zeigt. Oder ob man Orte findet, sodass der Arbeitsraum der Plattform mit Ultraschallsensoren abgedeckt werden kann.
Aber das klingt alles sehr gewagt.

Als erstes werde ich mal ein wenig rechnen, damit ich wenigstens mal ein paar Zahlen habe über die man reden kann. So langsam habe ich nämlich eine Vorstellung davon, welche Dimensionen der Roboter haben wird.

P.S.: Die Links sind echt schick. Grade das Video geht in die Richtung des Seilroboters den ich auch bauen will. Danke dir.

hbquax
03.03.2014, 17:06
Was genau meinst du mit 2D? Heißt das, das bewegt Teil und alle vier Seile befinden sich in einer Ebene, und es wird sich auch nur in dieser Ebene bewegt?

Mit drei Seilen kannst du ja bereits einen Punkt in der Ebene bewegen, mit vier Seilen ist dann zusätzlich schon Rotation möglich.

Das Problem des Pendelns tritt ja nur auf, wenn deine Konstruktion unterbestimmt ist.

Gruß

Nils

FirefoxMetzger
03.03.2014, 19:45
Mit 2D meine ich, dass die Plattform / den Endeffektor nur in der Ebene bewegt wird. Konkret in der x-y-Ebene (wenn die z-Achse in die Höhe zeigt, mit Ursprung auf dem Erdboden).
Die ganze Konstruktion wird allerdings frei schwebend gebaut. Die Plattform liegt also in der Luft. Das führt dazu das man den Raum in dem sich die Plattform bewegt auch in (negative) z-Richtung ausdehnen kann, solange eine Kraft existiert, die die Plattform nach unten drückt (in meinem Fall die aus dem Eigengewicht resultierende Gewichtskraft).

Mit 3 Seilen kann man einen Punkt in einer Ebene bewegen. Allerdings nur in einem Dreieck zwischen den einzelnen Aufhängungspunkten am Rahmen. Wenn man sich, wie ich, in einem Rechteck bewegen will, benötigt man 4 Seile. Der Bereich in dem eine Bewegung möglich ist, ist durch das aus einer Teilmenge der Aufhängungspunkte aufgespannte Polygon mit maximaler Fläche definiert. Im Raum ist es ähnlich.
Wenn man es allerdings ganz genau nimmt, kann man die Plattform auch mit drei Seilen in einem Viereck bewegen. Allerdings nur, solange dieses Viereck innerhalb des durch die Aufhängungspunkte aufgespannten Dreiecks liegt. Ein 4. Seil ermöglicht es in diesem Fall den Roboter kleiner zu bauen.

Durch das 4. Seil bekommt man leider keinen Zugang zu weiteren Freiheitsgraden (Rotation). Allerdings Erweitert es meine Möglichkeiten der Rotation um die x- und y- Achse der Plattform. Bei geeigneter Wahl der Aufhängungspunkte an der Plattform selbst kann man um den Mittelpunkt der Plattform rotieren.

Ich bin mir nicht sicher, ob ich dich bezüglich des Pendelns richtig verstehe. Was meinst du genau mit "dem Problem des Pendelns"? Meinst du das die Plattform schwingen kann oder nimmst du Bezug auf die Eigenschwingungen der Kinematik?

Geistesblitz
03.03.2014, 23:16
In erster Linie meine ich damit das Schwingen der Plattform. Wenn die Seile straff gespannt sind, die Plattform weit oben ist, sollte sich das in Grenzen halten, wenn die Plattform allerdings runterfährt, so kann sie sich selbst immernoch verkippen. Bei dem Beispiel im Video wurde das ja durch die zusätzlichen Seile von unten umgangen, die die Plattform im Raum verspannen. Ohne diese ist die Plattform allerdings unterbestimmt und kann eigentlich um alle Rotationsachsen gewissermaßen pendeln.

FirefoxMetzger
06.03.2014, 08:03
Ah, es geht auf Seite 2 weiter. Habe ich gar nicht bemerkt.

Dass die Kinematik unterbestimmt ist, habe ich mittlerweile auch schon feststellen müssen. Eine Bewegung der Plattform um die Rotationsachsen wird allerdings immer eine Änderung der Kräfte in den einzelnen Seilen nach sich ziehen. Die Frage ist allerdings, ob man diese hinreichend genau bestimmen kann, um daraus eine Regelung zu bauen.
Ansonsten fällt mir spontan keine andere Lösung ein, außer mehr Seile hinzuzufügen bis die Kinematik bestimmt ist, oder einen Sensor / Elektronik direkt auf die Plattform zu bringen, was wieder die Frage nach der Energieversorgung dieser Komponenten aufwirft.

FirefoxMetzger
06.03.2014, 20:18
So, ich habe mich ein wenig mit Sketchup befasst und festgestellt, dass CAD wohl nichts ist, was mich für lange Zeit beschäftigen kann. Ich habe es aber dennoch fertiggebracht eine einigermaßen vorzeigbare Skizze zu erstellen, von dem was ich bauen möchte. Diese findet ihr im Anhang (parallelerSeilroboterSkizze.jpg).

Die Maße für den Roboter werden wie folgt:

Der Rahmen wird ein quaderförmiges Stabwerk mit den Maßen 60x40x60 cm. Mit seiner genauen Statik muss ich mich noch befassen, sollte aber auch ohne großes rechnen gehen.
Seile werden aus Polyamid. Ich habe einen Händler gefunden der bei 1 mm Seildurchmesser 300 N Bruchlast verspricht, was weit von dem weg ist, was tatsächlich benötigt wird.
Die Plattform wird ein Quader mit den Maßen 15x15x0.7 cm (eventuell auch bis zu 1 cm dick). Gewicht mit Nutzlast soll 3 kg nicht überschreiten. Weiterhin soll sich die Plattform immer mindestens 10 cm unter ihrer Aufhängung bleiben.

Weiterhin habe ich die Zeit gefunden, ein kleines Modell für den Roboter zu schreiben und anfangen können, die Seilkräfte auszurechnen. Ohne Rotationen der Plattform zu berücksichtigen, liegt die maximale Last die ein Seil tragen muss um die Plattform zu halten bei etwa 83 N. Allerdings sind hier Posen berücksichtigt, die für die Plattform nicht möglich sind, da sich der Schwerpunkt unter einem der Aufhängungspunkte der Plattform befinden müsste.
Wenn ich diese weglasse, so erhalte ich 60 N Belastung die maximal auf ein Seil wirkt.
Im Anhang findet ihr hierzu Plots.

Die Plots sind Schnitte durch den dreidimensionalen Arbeitsraum. Hierbei stellen die (x,y,z) Koordinaten den Mittelpunkt der Plattform dar und die Farbe die Belastung, welche auf die Seile wirkt. Dabei bezeichnet Blau Gebiete mit geringer Belastung und Rot Gebiete mit hoher Belastung.
Der eine Plot stellt das Maximum der Kräfte dar, die auf die 4 Seile wirken. Der andere die Kräfte die auf ein Seil wirken, welches, salopp formuliert, den Koordinatenursprung mit einer Ecke des Endeffektors verbindet. Alle Zahlen sind in cm.

Der nächste Schritt ist das Einbeziehen von Dynamik. Also welche Kräfte auf den Roboter während der Beschleunigung / Bewegung wirken. Und noch viel wichtiger: Welche Kräfte muss der Motor / das Getriebe aufbringen.
Leider habe ich keine Idee wie ich hier ansetzen soll. Könnt ihr mir eine Richtung zeigen?

Ich weiß mittlerweile einigermaßen, welche Getriebetypen es gibt und wie sie aufgebaut sind. Allerdings verstehe ich immer noch nicht richtig welches die Vorzüge des Einen gegenüber dem Anderen sind.
Bei manchen ist es klar, zum Beispiel beim Differenzialgetriebe. Aber warum setzt man manchmal ein Planetengetriebe und manchmal ein Stirnradgetriebe ein? Und vor allem wann setzt man was ein? Könnt ihr mir beim Orientieren in diesem Zahnradjungel helfen?

hbquax
06.03.2014, 23:15
Dir ist aber schon klar, daß deine Plattform in den allermeisten Fällen nicht horizontal liegen und außerdem um die Hochachse verdreht sein wird?

Gruß

Nils

FirefoxMetzger
07.03.2014, 08:54
Ja, das ist mir bewusst. Leider kann ich spontan nicht sagen, in welcher Weise sich die Plattform auf Position (x,y,z) verdrehen wird. Außerdem wäre das sehr dynamisch, je nach Last.
Deshalb bleibt nichts anderes als für jede Position alle Winkel durchzuprobieren. Problem an der Sache ist: Das verlängert die polynomiale Laufzeit um Grad 3. War sie vorher O(X*Y*Z) ist sie jetzt O(X*Y*Z*Alpha*Beta*Gamma), wobei die einzelnen Teile die Feinheit der Diskretisierung darstellen. Wenn man die Winkel in 100 Teile teilt, dann erhöht sich der Rechenaufwand um den Faktor 10^6. Brauchte man vorher eine Minute sind es nun knapp 2 Jahre Rechenzeit. Ich wollte ganz gerne vorher fertig sein =)
Auf der anderen Seite wird es reichen wenn man die Plattform nur kleine Winkel dreht, bei diesen wird auch keine so große Feinheit benötigt um dieselbe Auflösung zu erzielen wie bei einem vollen Kreis.
Allerdings muss ich dennoch einen Mittelweg aus Aufwand und Genauigkeit finden.

Auf der anderen Seite erwarte ich nicht, dass sich die Kräfte gravierend ändern werden, nur weil ich die Plattform ein wenig um sich selbst drehe. Aber naja, Versuch macht kluch.

hbquax
07.03.2014, 09:55
Tja, also doch lieber acht Seile statt vier und Ruhe im Karton? Oder du machst erstmal nur eine punktförmige "Plattform".

Geistesblitz
07.03.2014, 10:19
Das wäre für einen ersten Test wahrscheinlich wirklich eine gute Idee. Kannst ja alle Seile in einen Punkt zusammenlaufen lassen (dann reichen sogar 3 Seile) und dort dann deine Plattform einfach ranhängen.

FirefoxMetzger
07.03.2014, 11:00
Ja, als Test kann man die Seile an einem Punkt zusammenlaufen lassen. Sehr gute Idee. Aber auch dann muss ein Seil bis zu 60 N aushalten + Beschleunigung.

Was wieder die Frage nach Getriebe, Motor sowie dem Extra an Kraft / Drehmoment für Beschleunigung aufwirft.
Ich finde Servomotoren in dem Fall sogar verlockender als Schrittmotoren. Haben alle Servos die Regelung bereits integriert?
Und was für ein Getriebe ist nun empfehlenswert?

Ich werde mal schaun ob ich es schaffe Matlab zu multithreaden. Das sollte die Rechenzeit doch drastisch reduzieren.

Geistesblitz
07.03.2014, 13:06
Die wenigsten Servomotoren haben die Regelung integriert, meist gibts dazu Servoverstärker, an die dann auch verschiedenste Arten von Positionssensoren angeschlossen werden können. Allerdings werden für sowas heute meistens AC-Motoren eingesetzt mit den passenden Frequenzumrichtern, etwas Vergleichbares für DC-Motoren hab ich bisher noch nicht so gesehen. Muss aber auch dazu sagen, dass ich nach sowas bisher noch nicht so gesucht habe.

Beim Getriebe ist denk ich mal auch mehr die Übersetzung in erster Linie interessant, welche Art von Getriebe man dann nimmt ist dann gar nicht mehr so wichtig. Am einfachsten wäre wohl ein Getriebemotor mit bereits angebautem Getriebe (meist Stirnrad, Planeten oder Schneckengetriebe) oder eben den Umfang der Rolle entsprechend wählen. Letztendlich wirds wohl auf eine Mischung aus beidem hinauslaufen, da man für einen normalen Motor dann eine winzig dünne Seilrolle bräuchte.

Beschleunigungskraft ist einfach, nämlich Masse*Beschleunigung. Die Beschleunigung kannst du ja über deine Sollwerte für die Motoren vorgeben, zB. als trapezförmiges Geschwindigkeitsprofil (konstante Beschleunigung und Entschleunigung). Da hättest du dann beim Anfahren einmal die Kraft gegen die Bewegungsrichtung und beim Bremsen eine Kraft in Bewegungsrichtung.

hbquax
07.03.2014, 19:54
Wieso soll eigentlich die Berechnung der Seillängen eine Minute dauern? Du hast die gewollte Lage deiner Plattform, damit hast du die Koordinaten der Seilangriffspunkte. Die Orte der Winden sind auch bekannt, die Seillängen sind dann nur Abstände zwischen den Winden und den Angriffspunkten. Ist für jedes Seil eine Zeile und dauert ungefähr eine Millisekunde Rechenzeit. Das gilt aber natürlich nur für eine definierte Lage der Plattform. Wenn du wie geplant, nur vier Seile verbaust und die Schwerkraft für Vorspannung sorgt, stellt sich halt jeweils eine etwas andere Lage ein. Du könntest das aber auch erstmal vernachlässigen und damit leben, daß die Plattform nur ungefähr da steht, wo du sie haben willst. Oder eben acht Seile verbauen oder einen punktförmigen Endeffektor.
Solange du bei vier Seilen plus Schwerkraft bleibst, sind auch deine möglichen Beschleunigungen recht begrenzt, ich denke wenn du einfach deine statischen Lasten mit Faktor zwei multiplizierst, bist auf der sicheren Seite, 1g Beschleunigung ist schon ganz schön fix.

Edit: Gerade nochmal nachgedacht. Deine Plattform wird nicht nur etwas, sondern SEHR geneigt stehen. Wenn sie z.B. ganz am Rand steht, muss sie nahezu senkrecht runterhängen, weil die Seile von der gegenüberliegenden Seite ja dann nicht ziehen dürfen. Tip: Bau dir mal ein Testgestell aus Dachlatten oder Lego oder nem großen Pappkarton, bastel dir ne Plattform und versuch mal, mit vier Bindfäden, die du einfach in der passenden Länge ans Gestell knotest, ein paar Lagen herzustellen, sowohl mittige wie auch stark außermittige. Und Fotos natürlich hier einstellen!

FirefoxMetzger
08.03.2014, 09:37
Deinem Post, Geistesblitz, entnehme ich, dass ich die gewünschten Beschleunigungen einfach additiv dazurechnen darf.
Das ganze ergibt für mich auch anschaulich Sinn, da ich wenn ich die Apparatur zu einem festen Zeitpunkt t* betrachte, wieder "Kräftegleichgewicht" ansetzen kann. Das Ganze ist zwar kein echtes statisches Gleichgewicht, allerdings ergibt sich der resultierende Vektor (mit dessen Betrag und Richtung die Plattform beschleunigt) ja als Summe der wirkenden Kräfte und deren Richtungen.

Und ja, hbquax, die Berechnung der Seilkräfte für eine bekannte Position ist einfach das Lösen eines einfachen LGS, sobald man die Positionen der Aufhängungspunkte an der Plattform und am Rahmen kennt. Allerdings musst du beides zuerst berechnen. Durch geeignete Wahl der Koordinatensysteme ist das allerdings keine schwere Aufgabe.

Was einen so hohen Zeitaufwand hat, ist die schiere Anzahl der Positionen deiner Plattform, die zum Erstellen des Plots benötigt wird. Wenn N deinen Feinheitsgrad der Diskretisierung in jede Richtung (x, y, z, 3 Rotationsachsen) darstellt, so musst du N^6 Gleichungssysteme lösen.
Wenn man die drei Rotationsachsen konstant hält, so benötigt man "nur" noch N^3 Gleichungssysteme um einen Plot über den Arbeitsraum zu generieren. Die Bilder stellen einen solchen Plot dar. Hierbei wurde jede Achse in N=100 gleiche Teile zerteilt. Zur Berechnung muss man also 100^3 = 10^6 Gleichungssysteme lösen. Das Lösen dieser 1 Millionen LGS dauert bei mir eine Minute.
Möchte man nun das Ganze auf Rotationen erweitern, so explodiert der Aufwand. Wenn man für Rotationen um jede Achse wieder 100 "Schritte" haben möchte sind das weitere 100^3 Elemente. Leider verrechnen sich diese nicht additiv, sondern multiplikativ. Man muss also für JEDE der 1 Millionen Koordinaten (x,y,z) 1 Millionen Rotationen berechnen. Also insgesamt 10^12 LGS lösen.
Wenn man für ein LGS vorher 60/10^6 Sekunden (ungefähr 60 µs) benötigt hat, dann braucht man für die neue Aufgabe 10^8 Sekunden, also 3.169 Jahre.
Diese 60 µs beinhalten auch das Bestimmen der Koordinaten der Aufhängungspunkte, das Erstellen des LGS und natürlich das Lösen desselben.

Da die einzelnen Koordinaten (x,y,z, 3 Rotationen) allerdings voneinander unabhängig berechnet werden können, kann man die Rechenzeit verkleinern, indem man parallel rechnen lässt. Wie viel man gleichzeitig rechnen kann hängt von der CPU ab. Ich habe hier 4 echte und 4 virtuelle Kerne könnte also (theoretisch) 8 Koordinaten gleichzeitig bestimmen. Diese Aufgabe würde meinen PC noch knappe 8 Monate beschäftigen.

Ich habe mir gestern Abend allerdings ein anderes Verfahren überlegt, um die Maximale Seilkraft zu bestimmen, welches nicht so rechenintensiv ist. Allerdings muss ich es noch implementieren und es werden keine solch schönen Plots dabei herauskommen.

Wieso sollen die Seile der gegenüberliegenden Seite nicht ziehen dürfen? Sie dürfen ziehen, soviel nötig ist um die Plattform gerade zu halten. Grade das ist ja die Kunst. Für alle Möglichen Positionen die Seile so einzustellen, dass die Plattform gerade gehalten wird (von auftretenden Schwingungen / Pendelbewegungen um die Ruhelage mal abgesehen).
Weiterhin soll die Plattform ja auch 10 cm unter Ihren Aufhängepunkten bleiben, damit die benötigten Kräfte nicht zu groß werden.

Zu den Motoren: Ich habe bisher noch keine kleinen Servomotoren / Servos gefunden von denen ich die Sensordaten auslesen kann. Für große Motoren ja, allerdings benötige ich keine Motoren mit mehreren Nm Drehmoment.
Die kleineren aus dem RC-Bereich scheinen alle die Regelung integriert zu haben und über die Vorgabe eines PWM Signals einen korrespondierenden Winkel anzusteuern.

Edit: Ich habe meinen Algorithmus für die Rechung mit Rotationen implementiert. Jede im Berech von +- 45° um jede Achse. Die maximale Belastung auf ein Seil ist dann 57.6962 N also bin ich (wie erwartet) mit meinen 60 N gut dabei.

Edit numero 2: 8 Seile :)

ranke
09.03.2014, 14:33
Deinem Post, Geistesblitz, entnehme ich, dass ich die gewünschten Beschleunigungen einfach additiv dazurechnen darf.

Das Kräftegleichgewicht gilt auch für den dynamischen Fall, klassisches Beispiel ist ein frei fallender Körper, der durch die Gravitationskraft = m*g beschleunigt wird. Die Gegenkraft ist eben gerade die der Beschleunigung entgegenwirkende Trägheitskraft = m*a. Sofern keine weiteren Kräfte (Luftreibung) einwirken gilt g=a, ansonsten (Vogelfeder) wird a entsprechend geringer.

Die Komplikation mit dem Rechenaufwand kann ich momentan nicht nachvollziehen, vielleicht übersehe ich da etwas. Mein Ansatz wäre: eine bestimmte Pose soll angefahren werden, damit sind die Abstände der Umlenkrollen zu den Aufhängepunkten der Plattform definiert und können recht leicht im kartesischen Koordinatensystem ausregerechnet werden (Pythagoras oder Winkelfunktionen). Entsprechend ergeben sich die einzustellenden Seillängen.

Modellbauservos gibt es auch als Seilwinde. Ob Standardservo oder Seilwindenservo: die gewünschte Stellung wird als Sollwert vorgegeben und vom internen Regelkreis in eine entsprechende mechanische Stellungsänderung umgesetzt, eine Ausgabe des Istwerts ist normalerweise nicht möglich (eventuell bei hochklassigen Digitalservos schon, das weiß ich nicht). Als Istwertgeber ist üblicherweise ein Potentiometer verbaut. Prinzipiell kann man sich so etwas selbst bauen, mit Getriebemotor, geeigneten Istwertgeber und zusätzlichem Regler inklusive Motortreiber. Solche Projekte werden hier im Forum auch immer mal wieder aufgemacht, ist aber vermutlich - je nach Anforderung an Genauigkeit und Dynamik - nicht ganz trivial.

hbquax
09.03.2014, 22:54
Wegen Rechenzeit: Das war wohl ein Missverständnis, ich dachte du programmierst bereits deine Robotersteuerung und benötigst jedesmal eine Minute für einen Steuerbefehl.

Zu Kräftegleichgewicht: Wenn die Plattform senkrecht unter einem der Randbalken hängt, also die beiden Seile dieser Seite auch senkrecht hängen, hat ihre Seilkraftkomponente in horizontaler Richtung den Wert null. Damit die Plattform im Gleichgewicht ist, muss auch die horizontale Komponente der Seile von der anderen Seite null sein. Da die aber schräg hängen, also ihre vertikale und horizontale Komponente in einem endlichen Verhältnis stehen, muss auch ihre vertikale Kraftkomponente und damit die gesamte Seilkraft null sein. Das hat dann zur Folge, daß die PLattform senkrecht nach unten hängt.

27747

FirefoxMetzger
10.03.2014, 08:21
Mein Ansatz wäre: eine bestimmte Pose soll angefahren werden, damit sind die Abstände der Umlenkrollen zu den Aufhängepunkten der Plattform definiert und können recht leicht im kartesischen Koordinatensystem ausregerechnet werden (Pythagoras oder Winkelfunktionen). Entsprechend ergeben sich die einzustellenden Seillängen.

Richtig. Und da nur Kräfte in Zugrichtung wirken, kann man ein Kräftegleichgewicht aufstellen und nach positiven Lösungen suchen. Da man die Richtungen kennt, kümmern einen nur noch die Beträge.
Was allerdings benötigt wird ist die maximale Kraft, die entlang eines Seils wirkt, um damit die Dimension des Getriebes und des Motors festzulegen. Entweder benötigt man also Optimierungsverfahren (eleganter Ansatz) um das Maximum der Kräfte über alle möglichen Positionen zu finden oder man berechnet durch Brute Forcen alle möglichen Positionen und wählt zum Schluss das Maximum aus.
Vorteil von letzterem ist der, dass man das globale Maximum finden kann. Nachteil ist der immense Rechenaufwand, da man den ganzen Arbeitsraum in ein großes Raster einteilt und für jeden Knoten einmal das von dir beschriebene Verfahren anwendet.

Optimierungsverfahren sind da anders. Ihr Vorteil ist, dass sie sich sehr mit sehr hoher Auflösung durch den Arbeitsraum bis zum Maximum vorarbeiten können. Sie sind zwar ebenfalls numerisch, allerdings deutlich schneller als die Brute Force Methode, da sie nur einen Bruchteil der Positionen berechnen.
Nachteil ist hier: Die Konvergenz ist nicht gesichert und es ist vor allem ungewiss, ob das gefundene Maximum das globale Maximum ist oder nur ein lokales. Des Weiteren ist es nicht möglich danach Plots der Kräfteverteilung anzufertigen.

Ich würde gerne schon anfangen, die Steuerung zu schreiben, allerdings ist der Trafo sowie der Speicher für meinen "Hauptrechner" noch per Post unterwegs, weshalb das mit dem Debuggen schwierig wird.
Tatsächlich ist ein Teil der Steuerung (die inverse Kinematik) gar nicht so verschieden von unserem Diskussionsthema. Es ist allerdings nur der Teil mit den 60 µs also durchaus Echtzeitfähig.

Bei dem Kräftegleichgewicht hast du recht. Ich hatte da irgendeine utopische Vorstellung von der Sache. Danke, dass du es angesprochen hast.
Deshalb werde ich wohl für den Roboter im Raum ein Minimum von 7 Seilen verwenden, da ich so die vollständige Pose inklusive Rotationen bestimmen kann.
Mal schauen, wie ich die Seile an der Plattform befestige. Vielleicht nehme ich auch 8 Seile, zwecks Symmetrie.

Das Wichtigste, grobes Abstecken der Größenordnung des Roboters, ist ja nun geschehen. Und da abzusehen ist, dass die damit verbundenen Kosten tragbar sind, werde ich mal zur Tat schreiten und anfangen eine Steuerung zu schreiben.
Wenn ich die Software gescheit auslege, dann sollte es einfach sein, Aufhängungspunkte sowie Anzahl von Seilen und Motoren zu ändern. (Hoffe ich zumindest.)

Wenn ihr wollt, kann ich auch Bilder davon bereitstellen, sobald etwas vorzeigbares herauskommt. Allerdings bezweifele ich, dass es spannend ist, einem Haufen Code und blinkenden LEDs zuzusehen.
Bis zu den Motoren wird es jedenfalls noch ein Weilchen dauern, viel Freizeit habe ich in den nächsten Wochen kaum.
Außerdem wäre das wohl eher ein Fall für einen anderen Bereich des Forums.

Klebwax
10.03.2014, 09:28
Was allerdings benötigt wird ist die maximale Kraft, die entlang eines Seils wirkt, um damit die Dimension des Getriebes und des Motors festzulegen. Entweder benötigt man also Optimierungsverfahren (eleganter Ansatz) um das Maximum der Kräfte über alle möglichen Positionen zu finden oder man berechnet durch Brute Forcen alle möglichen Positionen und wählt zum Schluss das Maximum aus.

Wenn ich mich dunkel an den Physikunterricht erinnere, wird die Kraft an einem vollständig gespannten Seil unendlich, allein durch das egal wie kleine Eigengewicht des Seils. Da unendlich nicht geht, hängt die Kraft sicher davon ab, wieweit man das Seil durchängen lässt.

MfG Klebwax

FirefoxMetzger
10.03.2014, 09:42
Richtig. In meinem Fall werde ich bis auf maximal 10 cm an die Aufhängung heranfahren. Die Kraft die dort auf das Seil wirkt ist die größte aufregende Kraft im Arbeitsraum und beträgt etwas unter 60 N.

Da ich die Aufhängung aber noch einmal verändern werde (mehr Seile) wird dieser Wert wahrscheinlich noch ein wenig nach oben gehen. Wie viel genau wird sich zeigen, allerdings erwarte ich keine Kraft über 100 N.