PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 6-achsiger Knickarmroboter (Testmodell)



Geistesblitz
03.01.2012, 11:09
Wie ich schonmal angekündigt hatte, habe ich vor, einen 6-achsigen Knickarmroboter zu bauen. Dies wird mein erstes richtiges Roboterprojekt. Die Ansprüche halte ich bewusst niedrig, da ich einfach ein Testmodell für die Überprüfung der Berechnung der inversen Kinematik brauche. Auch könnte ich mich schonmal in unterschiedlichen Interpolationsarten versuchen und vielleicht ein paar einfache Befehle zur einfacheren Programmierung einbinden, die dann aus einem txt-File oder so ausgelesen werden können.

Zum Roboter an sich:
Die Hauptkomponenten sind drei Tower Pro MG945R Servos für die Hauptachsen und drei Corona DS939MG Servos für die Nebenachsen. Ein zusätzlicher Corona-Servo liegt für den Endeffektor (Greifer zB.) vor. Alles sind Digitalservos mit Metallgetriebe und Kugellagerung, ich habe sie bereits geöffnet und nach möglichkeiten zur Modifikation gesucht.
Die großen TP-Servos haben einen Anschlag, der allerdings nicht erreicht wird. Die Elektronik schaltet bereits vorher ab, die Welle lässt sich von Hand um etwa 180° drehen, aber mit dem Servosignal nur um 120° stellen, auch wenn man die Pulse außerhalb der Grenzen vergrößert/verkleinert. Über 2ms/unter 1ms Pulsdauer bleibt die Welle einfach auf der jeweiligen Endposition. 120° sollten für die Hauptachsen dennoch ausreichend sein.
Die kleinen Corona-Servos haben auch einen Anschlag, der sich aber leicht entfernen ließ und wonach sich die Welle um ziemlich genau 180° stellen lässt. Vorher war schon knapp davor Schluss. Wird der Bereich überschritten, fängt der Servo an zu spinnen, da sollte man vielleicht etwas aufpassen.

Gesteuert werden die Servos über ein Mini-Maestro-18-Board von Pololu, welches über USB mit meinem Laptop verbunden ist und dort mittels Labview seine Befehle bekommt.

Die Konstruktion selbst werde ich aus 5mm Plexiglas fertigen, da dieses stabil, leicht zu verarbeiten und gut zu kleben ist. Ober- und Unterarm werden 150mm lang (Achsabstände), womit sich ein Arbeitsradius von etwa 300mm ergeben dürfte. Die Teile habe ich bereits in Sketchup zurechtkonstruiert, wenn ich wieder zuhause bin, werde ich Bilder nachliefern.

Update:
So, jetzt kommen mal die Bilder vom Sketchupmodell. Ich hoffe, man kann alles weitestgehend erkennen, wenn nicht, ist es kein Problem, noch Bilder nachzuliefern.
2105721058

Geistesblitz
03.01.2012, 17:35
So, hab jetzt mal die Bilder eingefügt. Wenn jemandem etwas auffällt, dann soll er das bitte kundtun. Besser jetzt, als wenn ich schon mit den Arbeiten angefangen hab. Grundsetzlich steht noch die Frage im Raum, ob es doch sinnvoller wäre, Gegenlager einzubauen. Einerseits sind die Gelenke dann wesentlich steifer und stabiler, andererseits positionieren die Servos sowieso schon relativ grob und ich müsste die ganze Konstruktion neu machen. Außerdem weiß ich nicht genau, wie ich Gegenlager am besten realisieren könnte, auch weil ich etwas befürchte, dass diese nicht direkt mit der Welle fluchten und sich somit verspannen.

HannoHupmann
04.01.2012, 17:11
Also ohne Gegenlager wird es schwer werden da alle Kräfte über die Servohörner laufen. Nun kann man natürlich entsprechend teure Servos nehmen und nur ein paar Briefmarken stapeln aber besser wirds wenn der Roboter mit entsprechender Mechanik abgestützt wird. Das mit den Gegenlagern ist eine knifflige Sache aber es gibt genug Hexas im Forum die das Problem gelöst haben.

Ich geh davon aus, dass egal wie gut der Serov in der Achse 1 ist (drehen auf der Grundplatte) nicht die Last am ausgestreckten Arm tragen kann. Hier braucht man allerdings kein Gegenlager sondern schlicht ein Kugellager. Alternativ nimmt man drei Kugellager und lässt den "Tisch" darauf rollen. Zumindest sollte die Servoachse entlastet werden. Dür die Achse 2 könntest du den Servo zwischen zwei Streben nehmen, dann hättest du auch gleich noch den Ellenbogen entsprechend gegengelagert. Bei meinem JA1 siehst du wie das gemeint ist.

Geistesblitz
04.01.2012, 17:45
Danke schonmal für die Antwort.

Ja, die Achse 1 macht mir irgendwie auch am meisten Sorgen, wie meinst du das denn mit dem einzelnen Kugellager? Ansonsten kann ich sicher auch ein Gegenlager einbauen, da die Servoachse sich sowieso nicht so sehr weit drehen kann, müsste der Fuß nur ein wenig höher werden.

Für Achse 2 und 3 werd ich wohl um die zweiseitige Bauweise kaum herumkommen. Werd versuchen, die möglichst Kastenprofilfürmig zu konstruieren, da das noch mit am widerstandsfähigsten gegenüber Biegung und Torsion ist. Im Prinzip reicht es mir aber, wenn der Arm sein Eigengewicht halten und bewegen kann, alles darüber ist Bonus.

Geistesblitz
06.01.2012, 22:31
Hab mich jetzt ml im Netz umgesehen, wie andere das Problem der Gegenlagerung gelöst haben. Oft wird einfach das Servohorn mit einer selbstgedrehten Schraube befestigt, auf welche dann das Lager kommt, wie hier (http://www.dynamic-soaring.de/forum/attachment.php?attachmentid=383&stc=1&d=1208979802) beispielsweise zu sehen. Was meint ihr, könnte man sowas auch mit einer einfachen Schraube realisieren oder sollte es schon so ein dickes Teil sein? Dann müsst ich mal fragen, ob die mir sowas in meinem Praktikumsbetrieb drehen könnten. Ich wollte jetzt doch keine zweiseitige Bauweise für den Oberarm mehr machen, da auf der Rückseite des Servos von Achse 2 die Befestigungsmöglichkeiten irgendwie nicht so geil sind. Zumindest mag mir da nichts so richtig einfallen, wie sich das realisieren ließe. Hat da jemand eine gute Idee oder hat dafür schonmal eine gute Lösung gesehen?
Ansonsten, wo kann man sich am besten und günstigsten kleine Kugellager bestellen? Bei GHW sind die recht günstig, allerdings lohnt es sich erst, da was zu bestellen, wenn man mehr braucht.

MisterMou
07.01.2012, 17:54
21105
Quelle:http://www.nskeurope.de/cps/rde/xchg/eu_de/hs.xsl/axial-rillenkugellager.html[07.01.2012]

Verwende von soeinem Lager einfach den Käfig samt Kugeln (ist flacher) und dremel ne kleine Rille in Deck- und Bodenplatte, fertig.
Der Servo wird dann nur noch auf Zug beansprucht, dies lässt sich natürlich auch noch beheben, wird aber komplexer.
So lässt sich leicht die 1. Achse stützen.

Zu der 2. und 3. lege ich dir eine beidseitige Lagerung ans Herz. Also das Servohorn samt Lager auf einer Seite und auf der anderen Seite ein Lagerblock aus Messing und eine Stahlschraube.
Messing schmiert so, braucht also kein Fett. Als Schraube nimmst ne lange bei der oben kein Gewinde drin ist. Dann auf Maß absägen, Gewinde rein, fertig. Der Durchmesser ist nicht sonderlich wichtig, hauptsache eine glatte Oberfläche.

Das wäre eine einfache und günstige Lösung.

HannoHupmann
07.01.2012, 18:06
@MisterMou danke das wars was ich vorgeschlagen hab.

Geistesblitz
07.01.2012, 19:47
Hmm, also Servo + Lager auf der Seite des Servoabtriebs + Gegenlager auf der anderen Seite? Dann wäre das Ganze aber schon arg überbestimmt...

Ich hab nochmal überlegt, und bin doch wieder auf die beidseitige Lagerung des Oberarms übergegangen. Das dürfte auf jeden Fall ausreichend stabil werden. Dann bleibt eben nurnoch das Problem mit der Achse 1. Das mit dem einzelnen Kugelkranz hört sich zwar interessant an, aber irgendwie kann ich mir nicht vorstellen, wie man eine saubere kreisförmoge Rille gedremelt bekommen soll. Da wärs ja fast schon einfacher, das Lager selbst einzubauen. Oder eben die Variante mit den Kugellagern, die Hanno weiter oben vorgeschlagen hat.

Hier dann mal ein Bild, wie ich die Aufhängung von Achse 2 und 3 jetzt umgebastelt hab. Zwischen Lager und Befestigung müsste dann ein Stück Rohr als Abstandhalter und die Schraube müsste man auch etwas zurechtfeilen, damit das Kugellager nicht festgeklemmt wird.

21109

Achja, für die Handachsen sollten Gegenlager eigentlich in diesem Fall nicht unbedingt nötig sein, oder? Schließlich wird da die meiste Zeit keine großartige Last dranhängen.

MisterMou
07.01.2012, 20:16
Da hab ich mich wohl nicht so doll ausgedrückt ;) Ich meinte genau den Aufbau, den du jetzt hast, also Gegenlager + eigenes Lager vom Servo.
Runde Sachen bekommt man ganz leicht mit einem Dremel hin.
Das Zauberwort lautet Kreisschneider (http://www.dremeleurope.com/dremelocs-ch/product/2792/392/vorsatzgeräte-zum-schneiden/parallel--und-kreisschneider).
Ich bin eh nur für den originalen Dremel. Über Proxxon kann ich nicht urteilen, aber der Rest ist Spielzeug.
Die Löcher sind selbst für Kugellager rund genug. Ich fräse so "Passungen" in Alublöcke, natürlich keine H7 ;)

Es kommt auf die Servos an, ob du das Handgelenk noch extra stützen musst.
Man könnte zwischen den Servo und das Horn eine Teflonplatte setzen, auf der das Horn gleitet, das stützt noch besser als ein guter Servo.
Ich würde dir auch überall Aluhörner empfehlen, die sind verwindungssteifer.

Geistesblitz
07.01.2012, 21:09
Ja, Aluhörner wären schon nice, aber ich wollte die Kosten nicht höher treiben als es unbedingt sein muss. Ich glaub, der Nutzen wäre die Kosten nicht unbedingt wert. Zur Not kann ich mich da auch später noch drum kümmern, hauptsache es steht erstmal etwas, mit dem ich etwas anfangen kann. Der Kreisschneider sieht zwar interessant aus, allerdings ist die Zulegung für eine einmalige Anwendung wohl ein wenig viel verlangt.

MisterMou
08.01.2012, 11:44
Du könntest auch zwei Teflonringe anstelle des Axialrillenkugellagers nehmen.
Das ist günstiger, leicht zu bauen und leichtgängig genug.

Geistesblitz
08.01.2012, 14:45
Ok, das macht mich jetzt schon neugierig. Wo findet man denn sowas? Und wie wird sowas eingebaut?

MisterMou
08.01.2012, 19:48
Such mal bei eBay nach "Teflon Platte" ;)

Zwischen die Bodenplatte und Deckplatte kommen zwei Teflonplatten. Eine wird mit der Deckplatte verschraubt, die andere mit der Bodenplatte. Der Servo hängt in der Bodenplatte, das Horn in der Deckplatte. Die Schraube zieht das Horn zum Servo und "presst" die Beiden Platten auf einander, das war´s auch schon.

Geistesblitz
08.01.2012, 22:53
Ok, interessant, hab mal geguckt, 5€ wollen die bei Ebay für eine kleine Platte haben. Axialkugellager hab ich für etwas über 1€ gefunden, da könnte man tatsächlich das versuchen. Wenn ich einen Anbieter finde, der zusätzlich auch noch andere Kugellager verkauft, steht dann die Auswahl schonmal so ziemlich fest. Fragt sich dann nurnoch, wie ich den Lagersitz am besten mach. Mal bei uns auf Arbeit fragen, ob die sowas drehen oder fräsen könnten.

MisterMou
09.01.2012, 10:18
Vllt kannst du dir hier (http://letsmakerobots.com/node/18504) noch die eine oder andere Idee abgucken.

Geistesblitz
09.01.2012, 11:08
Sehr interessant. Vor allem die stark verbesserten Servos mögen mir gefallen. Das kommt auf jeden Fall auf die Liste, was ich dann später mal probieren werde. Schade, dass der Roboter nur 4 Achsen hat, ich finde nur mit 6 Achsen sind die wirklich vollständig, da dann alle Positionen und Orientierungen innerhalb des Arbeitsbereichs möglich sind. Die gezeigte Version hat nur eine Möglichkeit zur Veränderung der Orientierung, die anderen beiden Freiheitsgrade werden leider durch die Position festgelegt.

MisterMou
09.01.2012, 11:15
Das mit den Beschränkungen ist klar, ging ja auch hauptsächlich um die Servos und die Lagerung. Ich finde es interessant wie präzise sich der Arm bewegt.
Mit den den 6 Achsen hast du recht.
Auf meiner Projektliste steht auch ein 6-Achser + eine translatorische Achse für einen größeren Arbeitsraum.

radbruch
09.01.2012, 11:21
Anstelle von Gegenlagern verwende ich hier zwei gegenläufige Servos am ersten Armgelenk:


http://www.youtube.com/watch?v=U8cpVntdCGs

https://www.roboternetz.de/community/threads/44536-Problem-mit-Servos?p=426347&viewfull=1#post426347

Sehr günstige Gegenlager auf Reiszweckenbasis:

http://radbruch.roboterbastler.de/monoleg/pics2/PB010024_klein.jpg (http://radbruch.roboterbastler.de/monoleg/pics2/PB010024.JPG) http://radbruch.roboterbastler.de/rp6/greifer/greifer7_klein.jpg (http://radbruch.roboterbastler.de/rp6/greifer/greifer7.jpg)
https://www.roboternetz.de/community/threads/31035-monoleg-Der-einbeinige-Roboter?p=298095&viewfull=1#post298095
https://www.roboternetz.de/community/threads/31931-Domino-Day-f%C3%BCr-den-RP6?p=301666&viewfull=1#post301666

Lustige Spielereien waren das mal ;)

Gruß

mic

Klasse:
http://www.youtube.com/watch?v=AdYiPQ80Pvc
http://www.youtube.com/watch?v=CdCfEMZD5Ec

Geistesblitz
09.01.2012, 12:06
Zwei gegenläufige Servos: ich denk mal, dass die zusätzliche Kraft nicht wirklich gebraucht wird und außerdem das die Kosten wieder ordentlich anhebt, wenn man das für mehrere Achsen so machen will.

Reißzwecke: wirkt auf mich wie eine Schummellösung. Klar, in dem Fall mag das gehen, aber ich bezweifel irgendwie, dass das mit dem Heißkleber lange hält. Spätestens, wenn doch mal eine etwas höhere Kraft aufkommt, ist das mal ganz schnell ab. Ich hab schlechte Erfahrungen mit Heißkleber gemacht und traue dem Zeug nicht über den Weg.

@MisterMou: ja, leider ist von der Achslagerung auf den Bildern nicht sonderlich viel zu erkennen. Außerdem regt es mich immerwieder ein wenig auf, wenn Leute der Meinung sind, den Endeffektor als Freiheitsgrad dazuzählen zu müssen. Ich hab schon häufiger bei Youtube nach 6 DOF Robot Arm gesucht und oft waren da eigentliche 5-Achser mit Greifer zu sehen...

radbruch
09.01.2012, 12:34
Natürlich ist es eine Schummellösung. Mit Heiskleber habe ich allerdings nur positive Erfahrungen gemacht:
https://www.roboternetz.de/community/threads/44685-quot-verrutschender-quot-Motor?p=427702&viewfull=1#post427702


Als bekennender Heißkleberfan kann ich dazu nur sagen, dass ich noch nie einen Backofen zum Lösen der Verbindungen verwendet habe. Je nach Oberfläche der Werkstücke kann man ihn einfach abziehen bis mit der Schraubenzieherklinge abschaben. Auch die Haltbarkeit der Verbindungen kann man gut steuern. Von kleinen Fixierpunkten zur Funktionsüberprüfung über die schon erwähnten formschlüssigen Verbindungen bis hin zum "Fluten" von Hohlräumen als tragende Verbindung ist so ziemlich alles möglich. Zwar steigt die Abkühlzeit mit der Klebermenge dramatisch, aber schneller und "sauberer" kann man mit keinem anderen Kleber kleben :)


Spätestens, wenn doch mal eine etwas höhere Kraft aufkommt, ist das mal ganz schnell ab.Eine Sollbruchstelle kann nie schaden.

Gruß

mic

Geistesblitz
15.01.2012, 21:58
So, hab dieses Wochenende mit dem Bau angefangen und hab jetzt Achse 1 recht weit gebaut. Nurnoch ein bisschen was vom dicken Plexiglas und zusammenkleben und dann sollte das soweit funktionieren. Das Axiallager sitzt richtig gut, bin ich irgendwie selbst erstaunt, dass das so gut geklappt hat. Es wird durch das Servohorn und die Schraube verspannt, da wackelt dann gar nichts mehr.

212102121121212

Übrigens schmeiß ich gerade das Design nochmal über den Haufen. Werd jetzt die anderen beiden großen Servos an den Oberarm platzieren, hoffe daurch etwas kompakter zu werden.

HannoHupmann
16.01.2012, 07:44
Denk mal darüber nach, ob du die Servos für die Handachse irgendwie nach hinten verschieben kannst. Wenn du dir die KUKA Arme ankuckst, wirst du sehen dass die hinter Achse 3 auch die drei Servosmotoren für die Handachse haben. Dadurch wird der Roboter vorn leichter. Deine Lösung mit der Achse 1 find ich sehr schön, jetzt werden die Kräfte auf das Kugellager übertragen und belasten nicht mehr die Servoachse.

Geistesblitz
16.01.2012, 07:50
Das mit den Handachsen weiß ich, allerdings müsste ich dann ziemlich viele Getriebeteile verbauen und die Potentiometer der Servos irgendwie dann da hin bekommen, damit man das Getriebespiel ausgeglichen bekommt. Ehrlichgesagt ein wenig zu viel Aufwand, schließlich sind das auch nur solche 9g-Servos, da wird man für den Massenausgleich nicht viel herausholen können.

Mir ist auch aufgefallen, dass man durchaus die anderen beiden Achsen auf diese Weise hätte bauen können, nun hatte ich aber nur ein Axiallager und nen 10er Kugellager bestellt.

HannoHupmann
16.01.2012, 12:59
Was du aber machen kannst ist den Arm bei Vollauslegung mittels kleiner Feder zu unterstützen. Die Kukas und Co machen das auch und kompensieren so wenigstens das Eigengewicht des Arms. Zumindest in der Achse 2, für die anderen braucht es sowas nicht. Vielleicht kann man an Achse 3 ein Gegengewicht anbringen dann wird der Servo auch entlastet nur Achse 2 hat dann eben mehr zu tun.

Geistesblitz
16.01.2012, 14:51
Mal sehen, ob das überhaupt nötig wird. Bei Achse 2 muss ich wirklich mal gucken, Achse 3 sollte das bisschen Kunststoff aber noch so gehalten bekommen.

Geistesblitz
20.01.2012, 13:06
Was gibt es eigentlich für Methoden, um die Gelenke genau auszurichten, sodass der Winkel, mit dem im Programm gerechnet wird, möglichst gut mit dem tatsächlichen Gelenkwinkel übereinstimmt? Irgendwie muss man das ja ausrichten. Ich glaub auch, mit herumfummeln mit einem Anschlagwinkel oder Geodreieck wäre zu ungenau, vielleicht auf den Bauteilen, die über das Gelenk verbunden sind, markierungen anbringen und diese ausmessen, um den gewünschten Winkel zu überprüfen und gegebenenfalls nachkorrigieren?

HannoHupmann
20.01.2012, 14:11
Die Kuka Kollegen, machen das mit Resolvern und Inkrementalgebern (Sensoren). Normalerweise bekommen die Roboter einen (bzw. viele) Regelkreis. D.h. es gibt eine Soll-Position und eine gemessene Ist-Position die beiden werden miteinander verglichen und mit einem Regler die Abweichung so weit es geht reduziert.
Um etwas vergleichbares realisieren zu können, musst du irgendwie die Ist-Position erfassen und im Programm verarbeiten. Servomotoren haben so etwas schon in sich integriert und als Sensor dient das Poti. Nur leider kannst du die Werte nicht mit deinem µC erfassen. Also entweder spendierst du jeder Achse eine weiteren Sensor: Inkrementalgeber oder ähnliches oder du vertraust einfach darauf, dass die Position angefahren wird die du vor gibst.

Geistesblitz
20.01.2012, 14:20
Das meinte ich garnicht mal. Wie eine Positions-/Winkelregelung funktioniert, weiß ich ja. Wie erkläre ich mein Problem nur am besten? Mir geht es darum, die Achsen beim Zusammenbau so auszurichten, dass die Ausgangslage aller Gelenke möglichst gut definiert ist (zB. genau rechtwinklig oder 180° oder Vergleichbares), um einen gleichbleibenden Fehler durch ungenaues Zusammenbauen zu vermeiden. Klar kann man sowas auch kompensieren, indem man die Nullstellung der Servos etwas verschiebt, die Frage ist nur, wie weit ich diesen verschieben muss, damit der Winkel auch wirklich stimmt. Ich will also irgendwie herausfinden können, welcher Wert meines Servosignals welchem Winkel entspricht. Und ich vermute mal, dass das nur experimentell herausgefunden werden kann. Diesem Problem müsste man auch begegnen, wenn man keine Servos, sondern Servomotoren oder Schrittmotoren verwendet. Jede Berechnung wäre da für den Hintern, wenn man keine richtige Ausgangslage hat, von der man ausgehen kann.

radbruch
20.01.2012, 14:45
"Und ich vermute mal, dass das nur experimentell herausgefunden werden kann." Vermute ich auch. Blöd ist auch, dass (vor allem die billigen) Servos nicht so sehr linear sind. Eine Impulsdaueränderung wirkt sich abhängig von der Startstellung unterschiedlich aus. Bei Systemen mit zusätzlichem Geber sollte das allerdings nicht auftreten.

MisterMou
20.01.2012, 15:03
Bei Systemen mit zusätzlichem Geber sollte das allerdings nicht auftreten.

Ich finde die Magnetencoder von austriamicrosystems (http://www.austriamicrosystems.com/Products/Magnetic-Encoders/Rotary-Encoders) toll, lassen sich leicht ansteuern und sind schön genau.
Außerdem gibt es dort kostenlose Probepäckchen ;)

Geistesblitz
20.01.2012, 18:00
@mistermou: solche hab ich auch schon liegen, allerdings fehlen mir momentan die Möglichkeiten, diese zu verarbeiten. Wenn alles klappt, hab ich das aber bald, mal sehen. Hab natürlich auch schon das Video, was du hier irgendwo verlinkt hast, gesehen mit den supermodified Servos (hier noch ein Video (http://www.youtube.com/watch?v=8jajnIBX2cU&feature=plcp&context=C322c0cbUDOEgsToPDskLJPs3tdCXGeMTauXEaLgWC ) speziell zu den Servos, echt erstaunlich, wie gut die arbeiten). Erstmal wollte ich das ganze Teil aber so aufbauen und der Hinweis, dass Servos nicht ganz linear sind und andere Teile besser sind, löst immer noch nicht mein Problem ;)

MisterMou
20.01.2012, 19:47
Zum Errechnen der Achsen 2,3 und die Achse vom Handgelenk, die zu den beiden parallel ist, hab ich eine Idee. Diese Achsen müssen wirklich parallel sein.
Voraussetzung ist, dass alle Längen bekannt sind.

Dazu wird ein zylindrisches Koordinatensystem (R/α/Z) unter den Drehpunkt der 1. Achse gelegt.
In den Greifer kommt eine Zeigespitze (Bleistift).
Ein Punkt auf dem Koordinatensystem wird angefahren. (Zeigespitze auf einer Höhe von z=0)
Die Achsen werden genullt. Entfernung zischen Spitze und 0 notieren
Ein neuer Punkt wird angefahren. (Z=0 /α=konst.)
Winkeländerung der Achsen und Entfernung notieren.
Ein neuer Punkt wird angefahren. (Z=0 /α=konst.)
Winkeländerung (in Bezug auf Nullung) der Achsen und Entfernung notieren.
Und schon haben wir ein Gleichungssystem, denke ich :)
Notfalls kann man dieses Problem mit einem CAD Programm lösen, wozu gibt es denn Rechner.

Ich kenn mich noch nicht sonderlich mit DH-Matrizen aus, aber daraus lässt sich doch bestimmt auch ein Gleichungssystem mit 6 Variablen bauen. Man muss es ja nicht im Kopf rechnen. Dafür bräuchte man doch ein kartesisches Koordinatensystem, um sich die Umrechnung zu sparen, oder?

Geistesblitz
20.01.2012, 20:01
Ich weiß nicht, wozu deine Formeln gut sein sollen...
Wie es scheint, ist das alles nur auf den theoretischen Roboter angewandt. Was ich aber will, ist eine Überprüfung, ob der echte Roboter auch richtig zusammengebaut ist und der gemessene Winkel mit dem tatsächlichen Winkel weitestgehend übereinstimmt. Die Rücktrafo überlass mal mir, das hab ich größtenteils schonmal durchgerechnet. Zumindestdie für die Hauptachsen hab ich schonmal erfolgreich aufstellen können, für die Handachsen hab ich zwar schon Formeln errechnet, müsste die aber irgendwie testen können. Wo ich gerade dabei bin fällt mir ein, dass ich ja mal ein Video von meinem Mindstorms-Roboter gemacht hatte. Lego ist für sowas allerdings alles andere als geeignet und die Steuerung der Motoren stark verbesserungswürdig, aber daher bau ich gerade auch an einem besseren Objekt ;)


http://www.youtube.com/watch?v=XTZXx6FAuvg

MisterMou
20.01.2012, 20:13
Meine „Formel“ basiert auf der Ansicht, dass die Winkel der Achsen zueinander unbekannt sind.
Durch bekannte Punkte im Raum (die der Zeigespitze), bekannte Winkeländerungen und der Abstand der Achsen zueinander, lässt sich der tatsächliche Winkel der Achsen berechnen, definitiv.

Geistesblitz
20.01.2012, 20:30
Achso, ich glaub jetzt weiß ich, was du meinst. Indem man einen festen Punkt im Koordinatensystem anfährt, kann man durch die Rücktrafo alle Gelenkstellungen für diesen Punkt ausrechnen und mit den Servowerten vergleichen. Das ist natürlich auch eine Möglichkeit, stimmt.

MisterMou
20.01.2012, 20:38
Toll, du hast mich verstanden :D
Für den kompletten Arm bräuchte man dann 6 Koordinaten und je Gelenk 6 unterschiedliche Winkel.

radbruch
20.01.2012, 21:07
Hallo


...der Hinweis, dass Servos nicht ganz linear sind und andere Teile besser sind, löst immer noch nicht mein ProblemDas ist mir schon klar. Ich wollte nur verdeutlichen, dass eine mathematische Berechnung der Impulslängen nicht möglich ist. Für einen Roboterarm mit Servoantrieb ist das Teachen der einzelnen Positionen die einzige erfolgversprechende Methode. Das behaupte ich allerdings als ein eher unterdurchschnittlich begabter Mathematiker:
Den mathematischen Ansatz verdränge ich weiterhin energisch und bleibe vorerst bei der Teachlösung. Selbst wenn es mir gelingen würde die erforderlichen Servowinkel auszurechen, ich wüsste nicht, wie ich diese dann in Servoimpulslängen umrechnen sollte. Zudem sind meine Billigservo alles andere als liniar.(Zitat aus https://www.roboternetz.de/community/threads/40720-Delta-Roboter?p=389783&viewfull=1#post389783)

Gruß

mic

Geistesblitz
20.01.2012, 21:31
Nagut, ich glaub, ich werd mal meine Servos auf Linearität testen. Auf jeden Fall ist mir schonmal aufgefallen, dass sich der Servo erst bewegt, wenn man ein paar ms weiter ist, und dann gleich ein ganzes kleines Stück. Auch während des Verfahrens ist die Bewegung recht unsauber, das wird den ganzen Roboter wohl ordentlich zum Wackeln bringen. Da wäre so eine selbstgebaute Regelung wie im Video weiter oben wesentlich mehr bringen.

@mistermou:
es würde auch eine einzelne Koordinate reichen. Der Roboter hat 6 Freiheitsgrade (Gelenkwinkel), während der Endeffektor im Raum auch 6 Freiheitsgrade hat (3 Positionen, 3 Orientierungen). Wenn man dann eine Konstellation des Roboters eingrenzt, lassen sich die Gelenkwinkel eindeutig berechnen.

MisterMou
20.01.2012, 21:39
Ok, dazu fehlt mir das Hintergrundwissen:)
Dazu müsstest du doch auch die Winkel der Zeigerspitze messen, oder?

Ich bin ehr für Dreiecke, aber das klappt bei so vielen Achsen nicht so gut, wäre aber mal einen Versuch wert ;)

radbruch
20.01.2012, 21:41
Auf jeden Fall ist mir schonmal aufgefallen, dass sich der Servo erst bewegt, wenn man ein paar ms weiter ist, und dann gleich ein ganzes kleines Stück.http://www.google.de/search?q=servo+totzeit

Viel Spass beim Einlesen.

Gruß

mic

Geistesblitz
20.01.2012, 23:07
Hab gerade mal eine kleine Messung durchgeführt, wenn auch nur unter "mal eben schnell"-Bedingungen. Zumindest hat sie herausgestellt, dass mitunter Abweichungen von etwa 1° auftreten können und dass das Servo unter einer gewissen Hysterese leidet. Das Problem würde ich auch nicht unbedingt als Totzeit bezeichnen, das fällt wohl eher unter Messspiel.

@mistermou: naja, man könnte an den Endeffektor ja ein rechteckiges Stück anbauen dieses sanft in eine Art Anschlag, der flach auf dem Tisch liegt, hineinmaneuvrieren. Dieser müsste dann allerdings genauso genau sein, wie man die Gelenkwinkel genau haben will. Um die Handachsen ordentlich auszurichten, braucht man sowas aber, da diese ja maßgeblich an der Einhaltung der Orientierung beteiligt sind. Zwar könnte es wohl bei diesen ungenauen Servos genauso reichen, die Gelenke "pi mal Daumen" auszurichten, allerdings will ich ja nicht bei diesen bleiben ;)

Geistesblitz
10.02.2012, 20:34
So, gestern war ich bei MisterMou und wir haben in der Werkstatt einiges geschafft. Der Roboter ist jetzt im Grunde fertig, nur ein paar Feinheiten können noch angepasst werden. Hier auch mal ein Video:


http://youtu.be/6Ta9BuhhOOk

Wie man auch sieht, hat der Servo von Achse 2 ganz schöne Probleme, wenn sich das Teil weit nach vorne beugt und fängt ganz eklig zu Zittern an. Entweder ich bastel noch einen Massenausgleich hinzu oder ich hol mir noch einen Servo und setz ihn zusätzlich auf die andere Seite. Die Servos sind aber wirklich nicht unbedingt toll, da bekommt man schon Bock, eine eigene Steuer- und Regelelektronik für zu entwerfen.
Hier noch ein Bild, wo man mehr erkennen kann:
21461

An dieser Stelle sei nochmal MisterMou gedankt, der mir in seiner Werkstatt sehr gut geholfen hat. ;)

Geistesblitz
11.02.2012, 13:40
So, ich hatte jetzt eine Idee zur Gewichtskompensation an Achse 2 und hab dazu mal eine Skizze gemacht:
21466
Ob da jetzt ein Gummiband oder eine Feder reinkommt, muss ich sehen. Erstmal tendiere ich eher zum Gummiband, weil ich davon einige in unterschiedlichen Stärken da hab (im Gegensatz zu Zugfedern). Die Aufhängung an der Basis müsste natürlich genau über der Achse liegen, hab ich beim Skizzieren nicht drauf geachtet. Mit der Schraube im Langloch kann man dann die Vorspannung einstellen. Sollte zumindest den Servo entlasten, den Rest erledigt ja die Regelung.

Geistesblitz
12.02.2012, 13:34
So, hab jetzt die Gummibänder wie skizziert eingebaut und muss sagen, dass sie drchaus ihren Zweck erfüllen. Das Zittern ist weg, die Dynamik ist zwar immernoch nicht allzu toll, aber zumindest bleibt der Arm auch stehen, wenn sich nichts bewegen soll.