PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : .: Vinculum :. - Hexabot



Seiten : [1] 2

HannoHupmann
03.08.2011, 12:54
Mit meinem neuem Projekt "Vinculum" melde ich mich wieder zurück in der Riege der Roboter und Hexabot-Bastler.

Einleitung:
Nach Crawler, Phoenix und Phoenix² wird es also der vierte Hexa in meiner Sammlung werden. Hier muss relativiert werden, denn Phoenix² ist aus den Vorgänger Modellen entstanden. Diesmal ist kein "Umbau" geplant, sondern eine Neuentwicklung. Es wird wieder ein Roboter mit Beinen ob es am Ende 6, 8 oder 4 sind weis ich noch nicht. Ob sie linear oder kreisförmig angeordnet werden, weis ich auch noch nicht.

Bei diesem Hexabot werde ich ordentlich Geld in die Hand nehmen und ich Rechne im Moment mit 100€ bis 150€ pro Bein! D.h. der ganze Roboter wird spielend die 1k€ knacken und ich rechne eher mit 2k. Warum soviel Geld?

Konzept der Beine:
Bei der klassischen Variante verfügt jedes Bein über 3 Servos die direkt mit der Mechanik verbunden sind. Damit wirken alle Stöße, Vibrationen und Kräfte auf die Servohörner bzw. die Gegenlager oder die Zahnräder. Ich möchte nun ein Bein bauen, welches mittels eines Federlements im Oberschenke, Stosskräfte und Überbelastung kompensiert. Außerdem sollen alle Gelenke mit ordentlichen Kugellagern ausgestattet werden. Die ganze Konstruktion wird entsprechend aufwendig und hoffentlich auch stabil.

Realisierung:
Nach vielen Überlegungen wie sowas umgesetzt werden kann, hab ich nun eine Lösung und angefangen bzw. abgeschlossen die Teile dafür in CAD zu entwerfen. Für den ersten Prototypen hab ich auch schon Teile bestellt. Mit diesem Muster-Bein lässt sich prüfen ob kein Denkfehler vor liegt und wo gegebnenfalls noch Modifikationen notwendig sind.

Bilder:
Konzept:

19546

Kosten bisher:
~18€ für Zahnriemen und Zahnscheiben von Mädler

Geistesblitz
03.08.2011, 14:23
Interessante Idee ;)
ich stell mir nur gerade vor, wenn das Bein dann belastet wird, dann wird unten die Feder vom Riemen eingedrückt, das Riemenrad vom Bein gibt nach und oben müsste dann der Riemen durchhängen. Ich weiß jetzt allerdings nicht, ob das ungünstig ist, wenn der durchhängt, wegen Wegrutschen und sowas, vielleicht könnte man da auch noch ne Feder hinsetzen, damit das kompensiert wird?

Arkon
03.08.2011, 15:08
Sehr interessant und vor allem imposant wenn man das erwartete Budget sieht. 2k€ muss man erstmal "über" haben für sein Hobby....

Um die Mechanik zu vereinfachen hätte ich auf die bewährten Servosaver zurückgegriffen. Die gibt es zum einen fertig zu kaufen oder man kann zumindest das Wirkprinzip übernehmen. Dürfte platzsparender und günstiger sein als deine Zahnriemen/-scheibenaufbauten sein.

HannoHupmann
03.08.2011, 16:21
@Geistesblitz Genau so ist das Prinzip der Konstruktion. Die Überlegung hatte ich auch schon aber hier werde ich um den Test nicht herum kommen, auch welche Federstärke ich einbauen muss. Die Dimensionen sind aber immernoch sehr klein und daher geh ich davon aus, dass nichts durchrutscht.

@Arkon wenn man Dinge ordentlich machen will, dann muss man dafür auch Geld investieren. Der Hexa wird definitiv kein "low-Budget" Projekt nur um zu sehen ob es funktioniert. Ich hab schon Phoenix² so günstig wie möglich gebaut, jetzt halt die andere Richtung. Die Servosaver gehen meines wissens in beide Richtungen bei mir dürfte es aber nur in einer Richtung Federn und ich kann die Federkraft nicht so leicht ändern wie bei dieser Version. Hier tausch ich einfach eine Feder aus und bau eine härtere/weichere ein.

Vielleicht funktioniert die Idee auch gar nicht und ich muss nochmal ein neues Konzept erarbeiten, daher bau ich jetzt einen Bein auf und kuck obs klappt.

Arkon
03.08.2011, 16:45
Eine Richtung des Servosavers wird ja nicht wirklich angesprochen. Dazu müsste auf das Bein ja eine Kraft entgegengesetzt deiner Kraft Fs wirken, das Bein müsste als nach unten gezogen werden.

Stichhaltiger ist da das Argument, der einfach verstellbaren Federkraft. Wobei man auch hier sicherlich Abhilfe schaffen kann. Man muss ja keine fertigen Saver nehmen sondern nur das Prinzip übernehmen. Und dabei kann man halt auch die Möglichkeit einer leicht tauschbaren Feder berücksichtigen.

Aber ich denke mal auf Grund deiner Erfahrung wird Vinculum sicherlich zufriedenstellend Funktionieren. Viele Wege führen nach Rom ;)

HannoHupmann
03.08.2011, 18:04
Hier nun eine CAD Zeichnung von dem System:

19550

So, dank CNC-Eltner hab ich heute schon meine ersten Teile bekommen und natürlich gleich einen Funktionstest gemacht.

19551
Fazit
1) Der Abstand zwischen den beiden Riemenscheiben ist zu klein, ein paar Milimeter mehr würde hier schon helfen.
2) Die Sache mit dem Durchrutschen des Riemens könnte tatsächlich ein Problem werden, allerdings hab ich dafür auch schon eine Lösung gefunden.

19552

Wird der Riemen oben über die silberne Scheibe geführt, dann rutscht der Riemen nicht durch.
Als Test wurde die linke Riemenscheibe fixiert (hier kommt später der Servo dran) und die rechte Riemenscheibe bewegt (hier wird die Schulter angeflanscht). Der Riemen wölbt sich nun an der Oberseite wie gewünscht auf und drückt das Federelement (hier nur die silberne Scheibe unten mitte) nach unten. Dabei Rutscht der Riemen aber nicht über die Scheiben.

Ich hab heute beim Conrad Servos und Kugellager bestellt, wenn die da sind gibts einen ausführlichen Funktionstest und dann muss ich ins Redesign gehen, falls ein Update notwendig ist. Es fehlen noch einige Kleinteile aber dann kann ich mal das ganze System so aufbauen wie es später tatsächlich werden soll. Die Schrauben bleiben natürlich nicht als Achse!

HannoHupmann
05.08.2011, 11:00
Gestern hab ich versucht einen Fuss aus CFK zu laminieren. Das Ergebniss ist soweit gut aber da ich 6 Stück davon brauche, werd ich um eine Form nicht herum kommen. Für den ersten Prototypen tut es das Teil aber schon.

HannoHupmann
12.08.2011, 18:46
Gestern sind die Teile gekommen, heute hab ich sie aufgebaut und einen ersten Funktionstest gemacht. Natürlich klappt es nicht auf anhieb an allen Stellen so wie geplant, was aber nicht weiter tragisch ist. Ich hab eine Liste von einigen Punkten die noch verbessert werden müssen aber grundsätzlich funktioniert die Idee. Ich werd jetzt nochmal neue Teile fräsen lassen und ein paar Löcher verschieben und das ganze optimieren und dann dürfte der Prototyp fertig sein.

Natürlich gibt es auch ein paar Bilder von der Version wie sie im Moment ist, die stell ich nachher noch online.

EDIT: Das einzige was mir noch ein wenig Sorgen macht ist das Gewicht. Zur Zeit wiegt es mit allen Anbauteilen 240g. Das würde in Summe dann 1440g nur für die Beine machen. Bliebe noch 1100g für den Rest, denn ich möchte nicht über 2500g kommen.

HannoHupmann
17.08.2011, 19:43
Mit den Bildern hat es jetzt ein wenig gedauert, weil ich erst noch auf die neuen Teile gewartet hab. Dafür funktioniert jetzt alles so wie ich es mir vorgestellt habe.
Hier nun ein Bild von der Servoseite. Rechts befindet sich die Schulter und später der Körper links kommt der Fuss hin:
19691

Ein Bild von oben wo man das Innenleben ein wenig sieht. Die Feder und der Riementrieb funktionieren einwandfrei und es rutscht auch nichts durch wenn man das System belastet.
19692

Die Rückseite, alle Riemenscheiben wurden kugelgelagert und auch die Achse für den Fuss.
19693

Wie man sieht sind alle Teile noch in der Rohfassung. Ich brauch noch passende Schrauben und andere Kleinteile dann ist der Prototyp fertig. Sobald ich dazu komm werd ich auch noch einen elektrischen Test machen. Für den Fuss fehlt mir noch eine passende Laminierform.

LONy-TOOn
19.08.2011, 15:01
Sehr schön... ich freu mich immer wenn man die Entstehung eines Projekts so mitverfolgen kann und da dann noch viele Bilder dabei sind :)
Viel Erfolg weiterhin und halt uns auf dem Laufenden.

HannoHupmann
20.08.2011, 01:05
Vielen Dank, bin gerade dabei zu kucken ob ich das Bein irgendwie noch schick beleuchten kann. Allerdings ist der Bauraum im inneren sehr eng geworden (was ja auch gewollt war), so dass ich keine gleichmässige Ausleuchtung erzeugen kann.

HannoHupmann
21.10.2011, 08:34
So nachdem ich eine Umzugs-Zwangs-Pause hatte geht es jetzt wieder weiter. Ich hab tatsächlich alle Teile wieder gefunden und nichts wärend dem Umzug verloren. Im Moment bau ich den Fuss auf und wenn mein Material da ist kommt noch die Beleuchtung rein. Danach wird alles noch "schön" gemacht und ich hab einen funktionsfähigen Bein-Prototyp. Falls keine Probleme auftauchen kann ich die übrigen 5 Beine in Angriff nehmen.

Wir übrigens ein sehr wuchtigs Teil werden. Im Moment hat ein Bein 300g. Ich geh davon aus, dass der "Körper" über alles 500g wiegen wird. Damit muss ein Bein (300g*3 + 500g)/3 = 466,6g tragen. Ich hab eine Länge für Schulter bis Fussspitze von 18cm. Womit ich auf ein Schulterdrehmoment (0,4666Kg*10*18cm) von 84Ncm komme. Die Servos für die Schulter können laut Datenblatt 75Ncm tragen bei 6V (geplant ist ein Betrieb bei 7,2V). Würde rechnerisch also nicht gehen. Aber: ich werde den Roboter immer auf vier Beinen stehen lassen und die Beine sollen nicht waagrecht gestreckt werden sondern im Winkel von 45°. Gamit sind es dann (0,3kg*2+0,5kg)/4*10*18cm*cos(45°) = 35,00Ncm; gut die Hälfte des maximalen Drehmoments. Sollte es also notwendig sein die Beine im 0° Winkel zu fahren, so müssen eben 4 oder besser 5 Beine auf dem Boden bleiben ansonsten geht es auch mit 3 in der Luft und 3 auf dem Boden.

HannoHupmann
24.10.2011, 09:33
Fuss fertig und der Rest vom Bein auch. Fehlt nur noch die Beleuchtung und verkabelung. Danach kann ich anfangen mit testen und den Prototypen 5 mal kopieren. Leider geht das weder mit strg+c und strg+v noch mit handelsüblichem Kopierer.

Calis007
24.10.2011, 11:42
Eins is klar: so richtig schnell wirst Du's erst koennen, wenn Du fertig bist :p
Wie sieht's eigentlich mit ein paar Lochbohrungen in den Platten aus, zwecks Gewichtseinsparung? Etwa in der Mitte der gruenen Platte vielleicht(01010072.jpg)?

HannoHupmann
25.10.2011, 12:49
@Calis007 das mit dem Loch in der grünen Platte ist gar nicht dumm. Ich werd mal sehen wie sich das auf die Stabilität auswirkt aber ich denke dass sich hier tatsächlich ein paar Gramm sparen lassen.

Vermutlich hast du damit recht. Aber mehr als 5 Beine werde ich nicht aufbauen, für eine Polybot sind mir die Beine zu teuer. Ich bin gerade dabei das Material für die übrigen 5 Beine zusammen zu sammeln und demnächst muss ich wieder für ein paar 100€ bestellen. Ein Bein kostet im Moment etwa 120€ reiner Materialpreis.

Außerdem mach ich mir gerade Gedanken wie der Körper aussehen wird und wie ich 18 Servos + RGB-LED Synchron ansteuern kann. Leider kenn ich mich mit bus-Systemen so schlecht aus, dass ich fürchte keinen vernünftiges Bussystem implementieren zu können.

Geistesblitz
25.10.2011, 13:23
Irgendwie fühl ich mich langsam schon wie ein Werbebot...
Jedenfalls wollte ich nur mal wieder auf das Pololu Mini Maestro Servocontrollerboard (http://www.pololu.com/catalog/product/1354) hinweisen, das dieser Aufgabe gut gewachsen zu sein scheint. Lässt sich auch über UART vom µC aus ansteuern und die Präzision und Einstellmöglichkeiten scheinen auch nicht schlecht zu sein. Das größte Board hat 24 Kanäle, wobei man die auch für PWM verwenden kann, um die LEDs anzusteuern. Hier auch mal das Handbuch (http://www.pololu.com/docs/pdf/0J40/maestro.pdf) dazu.

HannoHupmann
25.10.2011, 15:46
@Geistesblitz, hab deinen Vorschlag schon in dem anderen Thread gelesen und mir das Board mal angeschaut. Gut ich hätte erst mal nur 18 Servos aber mit den 3 Kanälen pro RGB-LED und Bein wären es dann doch 36 PWM Kanäle und da steigt dann auch das Mini Maestro aus. Sprich ich müsste die Aufgaben aufteilen und zwei Boards verwenden. Außerdem ist es notwendig das Bussystem zu implementieren. Ich muss mir das Handbuch mal anschauen ob das für meine Wünsche genügt. Im Moment tendiere ich zu einem oder zwei Propeller Chips von Parallax. Der hat aber auch nur 32 i/o Pins womit es wieder 4 Pins zu wenig sind. Alternativ könnte ich die LEDs auch über einen Treiberbaustein ansteuern über i2c, dann muss ich aber das Busprotokoll hinbekommen.

Geistesblitz
25.10.2011, 16:01
Wozu brauchts eigentlich so viele RGB-Leds? Willst du ein laufendes Display bauen? :D
Bei den Servoboards hatte ich auch etwas von Daisy-Chaining gelesen, allerdings könnte dann der µC ganz schön zu tun haben, die ganzen Befehle zu senden.
Sonst fiele mir zu deinem Problem nichts ein, sorry.

HannoHupmann
27.10.2011, 12:07
Jedes Bein und der Körper bekommen eine RGB LED Spendiert (bzw. einen Streifen). D.h. ich brauch 6*3 + 2*3 mindestens 24 Anschlüsse. Allerdings kann man die LEDs ganz einfach mit nem i2c Baustein ansprechen da die ja nicht Zeitkritisch sind. Mehrfarbig zum einen weil ich mich nicht auf die Farbe festlegen will und zum anderen kann ich dann über die Farbe auch gleich noch Informationen anzeigen. Bein gehoben oder gesenkt, Bodenkontakt all das eben.

Richard
27.10.2011, 15:23
Jedes Bein und der Körper bekommen eine RGB LED Spendiert (bzw. einen Streifen). D.h. ich brauch 6*3 + 2*3 mindestens 24 Anschlüsse. Allerdings kann man die LEDs ganz einfach mit nem i2c Baustein ansprechen da die ja nicht Zeitkritisch sind. Mehrfarbig zum einen weil ich mich nicht auf die Farbe festlegen will und zum anderen kann ich dann über die Farbe auch gleich noch Informationen anzeigen. Bein gehoben oder gesenkt, Bodenkontakt all das eben.

Hier im Forum hat einmal jemand ein IC vorgestellt das bis zu 256 LED's einzeln dimmbar treiben kann. Leider habe ich das nicht gespeichert. :-( Aber etwas ähnliches gefunden ohne jetzt allerdings das Datenblatt gelesen zu haben, ob dabei auch all 256 LED's einzeln dimmbar sind kann ich also nicht sagen. Aber vielleicht ist das ja was für Dein Projekt http://singapore.rs-online.com/web/p/led-driver/0422302/ .Das Teil welches vor ca 1/2 Jahr hier vorgestellt wurde konnte (glaube ich) per I²C gesteuert werden, sollte hier aber mittels I²C Port Expander aber auch bei obigen IC möglich sein?

Gruß Richard

HannoHupmann
30.10.2011, 10:18
256 LED muss ich gar nicht ansteuern, viel weniger. Ich hab in meinem Wall-E Projekt schon mal nach so einem Baustein gesucht und dort einige Vorschläge gesehen. Dort werd ich nochmal nachschauen ob es was passendes gibt.

Heute hab ich einen weiteren Satz Servos (4 Stk) bestellt es fehlen aber immernoch 6 Stück und ich muss kucken wo ich die günstig bekomme. Es gibt einen Anbieter in HongKong der mir 5 Stück für einen günstigen Preis verkaufen will aber ich schau erst nochmal in D.

Material werd ich nächste Woche auch bestellen und den Körper fertig zeichnen. Außerdem ist geplant ein paar mehr Bilder online zu stellen damit ihr euch auch ein Bild davon machen könnt wie die Beine jetzt aussehen.

HannoHupmann
05.11.2011, 09:18
Hat jetzt leider wieder etwas länger gedauert mit den Bildern, dafür jetzt nachgereicht
Erst mal: Ein fertiges Bein. Wobei ich es vermutlich doch lieber schwarz eingefärbt hätte, dazu aber später mehr
20470
Der Fuss ist aus warmverformten PP Platten die einfach mit einem Heißluftföhn in Form gezogen werden und dann erkalten.

Natürlich ist das Bein auch beleuchtet:
20469
Da ich mich nicht für eine Farbe entscheiden konnte hab ich einfach RGB LEDs eingebaut die gibts als 5m Ware für 20€. Allerdings sind die für 12V ausgelegt ich muss die Widerstände noch verändert für 5V.


Herr Eltner von CNC-Technik Landshut war wieder so nett mir die anderen Teile zu fertigen. Ich kann nur sagen, heute bestellt morgen geliefert und der Preis ist einfach Topp:

20468
Das Gelb ist so genial das werde ich nicht überlackieren und damit die Beine dazu passen, werden sie jetzt doch schwarz. Wie ihr seht hab ich jetzt viel Material zuhause liegen, nur die Servos für 4 Beine fehlen noch (und sind im Moment zu teuer). Abgesehen davon wird es jetzt erst mal einige Wochen dauern bis ich das Material soweit verarbeitet habe. Die Teile bestehen übrigens aus Dibond eine Schichtbauweise aus Aluminium, geschäumten PP und nochmal Alumium. Nicht ganz so leicht wie Carbon dafür aber deutlich billiger. Mittlerweile ein Material das ich sehr häufig verarbeite.

Ich freu mich auf eure Kommentare

021aet04
05.11.2011, 10:31
Die Teile sehen echt top aus. Wieviel haben die Teile gekostet (Fräsarbeit)? Der ist relativ groß (ich schätze so ca. 60cm, kommt das hin?).

Weiter so und viel Erfolg mit dem Projekt.

MfG Hannes

HannoHupmann
05.11.2011, 10:50
Hallo 021aet04 die Frästeile haben alles zusammen 80€ gekostet. Sprich für 6 Beine + 1 Protyp also gesamt 7 und den Grundkörper bestehend aus 3 Platten. Die Größe ist 260mm x 500mm also nicht ganz 60cm. Achja versand und Porto für alle Lieferungen war auch mit dabei. Ich finde ein fairer Preis wenn man bedenkt wie schnell und unkompliziert das immer geht.

Bammel
05.11.2011, 11:06
Hallo,

ich bin erstaunt wie professionel du sowas immer angehst ;-) gefällt mir sehr gut!
und das gelb ist in der tat spitze!

gibt es zu dem herren eltner eine website!?

Gruß, bammel

021aet04
05.11.2011, 11:06
80€ ist sehr günstig, das stimmt allerdings. Das ist auch fürs Hobby noch leistbar.

MfG Hannes

HannoHupmann
05.11.2011, 13:00
Nein leider gibts keine Webseite vom Horst Eltner, der hat aber eine Email printmd[a]t-online.de da kann man sich einfach mal melden. Er kann eigentlich alle Teile fräsen die man ihm als dxf schickt (und 2D sind also keine 3D Teile). Am besten telefoniert man nochmal mit ihm wenn es Probleme gibt, das klappt dann auch sehr zügig. Ich muss gestehen meine Teile wurden wirklich immer innerhalb von 48 Stunden geliefert. Kann ihn nur empfehlen.

HannoHupmann
15.11.2011, 11:21
So gestern hab ich zwei Beine aufgebaut und damit erst mal mein ganzes Material verbastelt (jetzt muss erst wieder Geld aufs Konto bevor ich weitere Zahnriemen und Zahnräder kaufen kann, auch fehlen mir noch 6 Servos, wobei ich noch am überlegen bin ob ich nicht doch besser spare und digitale Servos für die Schulter verwende. Das dürfte deutlich genauer und präziser sein. Allerdings kosten solche Servos auch gleich mal pro Stück 50€ womit ich nochmal 300€ nur für Servos ausgeben würde. Für die Schultergelenke hab ich jetzt meine billigsten, alten Conrad-Servos genommen. Die werden nicht lange halten fürchte ich, aber die liegen eh nur rum und werden nie gebraucht. Die Federelemente machen mir auch noch ein bischen zu schaffen, da ich nicht weis wie ich die Federkraft einstellen muss (abgesehen davon, dass sie schwierig einzustellen ist).

HannoHupmann
28.11.2011, 10:59
So am Wochenende hab ich nochmal 4 Füße aufgebaut und jetzt fehlt nur noch das Material (Servos und Zahnriemen) für die Oberschenke um alles fertig zu machen. Außerdem hab ich mir nochmal Gedanken um die Beleuchtung gemacht und frag mich jetzt wie ich 9V zu 12V bekomme um die LEDs anzutreiben. Mein Versuch die Widerstände auzutauschen scheitert an der Reihen-Parallelschaltung der LEDs. Es ist dann einfach nicht mehr hell genug. Wenigstens hab ich jetzt schon die Propeller Chips und kann mit der Programmierung schon mal ein bischen herumspielen. Bilder schick ich euch sobald ich dazu komme, welche her zu stellen.

HannoHupmann
05.12.2011, 07:59
Am Wochenende hab ich ein Bein nochmal modifiziert bezüglich der Federkräfte im Inneren. Außerdem hab ich Federn angebracht die den Schulterservo entlassten. Ich hoffe, dass der Roboter damit sein Gewicht besser halten kann. Leider konnte ich die notwendigen Federkräfte für das System noch nicht experimentell bestimmen. Natürlich könnte ich sie auch berechnen, da die Federn aber aus der Schrottkiste sind hab ich keine Werte dazu und müsste die Spezifikationen auch noch bestimmen.

Das Projekt ist jetzt auch auf meiner Webseite zu finden (siehe Signatur). Als nächstes werden Verteilerkonoten entwickelt um die Kabel aus den Beinen sinnvoll zusammen zu fassen und an die Kontroller weiter zu leiten. Entweder auf Lochraster Platinen oder ich finde jemand der mir günstig 6 einfach einseitige Platinen fertigt.

Außerdem überleg ich noch wie ich aus einer 9V Batterie eine Spannung von 12V erzeugen kann.

rolber
10.12.2011, 19:53
Hallo Hanno !
Tolles Projekt, das Du da realisierst !
Für den 9V auf 12V Step Up hier ein interessanter Link:
http://www.national.com/ds/LM/LM1577.pdf
Nur wenige Bauteile und der Strom sollete für deine LED`s auch ausreichen

Roland

HannoHupmann
11.12.2011, 12:39
Hi Roland,

jupp genau sowas hab ich gesucht. Herzlichen Dank.

Zur Zeit komm ich nur in kleinen Schritten weiter, da mir die Zeit fehlt mehr zu machen. Leider hab ich noch keine idealen Federn für die Oberschenkel gefunden, die Einen sind zu streif, die Anderen zu weich.

HannoHupmann
14.12.2011, 21:12
So heute wollte ich mal die Servos ein wenig wackeln lassen, aber mehr als ein Zucken ist dabei nicht raus gekommen. Irgendwo hab ich noch einen Fehler drin und weis aber nicht wo. Normalerweise sind die Programme und Controller schon öfters im Einsatz gewesen nur heute ist wohl nicht mein Tag.

HannoHupmann
16.12.2011, 16:39
Was nutzen die teuersten Servos wenn man sie nicht ansteuern kann? Nichts! Irgendwas ist anders bei den BlueBird gegenüber den klassischen Wald-Wiesen-Servos und daher bekomm ich die mit meinem Propeller Chip nicht angesteuert. Jemand schon was mit BlueBird Servos gebastelt?

EDIT: Anruf bei der Conrad-Hotline hat heraus gebracht, dass die Pegelspannung wohl zu gering ist. D.h. mein Propeller mit 3,3V liefert nicht genug Spannung um den µC im Servo anzusteuern. Also hab ich mir jetzt aus einem BS170 eine kleine Verstärkerschaltung gebaut und herausgefunden, dass der Servo bei ziemlichig genau 4,95V schaltet. Dummerweise genau bei dieser Spannung und bisher auch nicht besonders verlässlich. Ich muss hier unbedingt noch ein wenig optimieren, damit die Servos im Betrieb dann nicht wegen einer kleinen Spannungsspitze aufhören zu arbeiten.

Bammel
16.12.2011, 18:14
Und wenn du deine servos mit 6V betreibst!? Dann bist du da nicht so an der grenze.

021aet04
16.12.2011, 20:23
Das Problem ist nicht die Spannung für die Servoversorgung sondern der Pegel für die Signalleitung. Wenn ich das richtig heraus gelesen habe.

MfG Hannes

Bammel
16.12.2011, 22:44
Das ist mir klar... ABER bei 6V reagieren die servos schonmal schneller und da er ja die signalleitung mit einem treiber transistor versieht könnte er dort ja auch die 6V schalten.

HannoHupmann
16.12.2011, 23:58
Um das Problem mal ein wenig genauer zu Fassen und da ich noch keine Lösung habe.
Standard Ansteuern funktioniert nicht mit den BMS705 Servos. Die sähe wie folgt aus: 6V auf die Servos. Signalleitung direkt an den µC (3,3V) und gemeinsamer GND. Funktioniert mit den "alten" Carson analog Servos problemlos.
Laut Conrad arbeiten die BMS705 mit einer höheren Singalpegelspannung und ich müsste diese hochsetzen.
Leider verträgt der Propellerchip nur 3,3V also muss eine Treiberschaltung her. Dazu verwende ich einen BS170 Transistor mit einem 82Ohm Vorwiderstand auf der Gate Leitung. An Drain schliesse ich über einen weiteren 82Ohm Widerstand die Servoleitung an und Source kommt auf den gemeinsamen GND. Wenn ich nun an der Spannung fein einstelle kommt irgendwann bei 4,8-5,0V ein Moment wo die Servos reagieren. Allerdings sofort wieder abschalten sobald sich die Spannung minimal ändert. Der Zustand ist also nicht Stabil.

Gerade hab ich noch ausprobiert die Pegelspannung über ein Poti sauber einzustellen und unabhängig von der Servospannung machen. Funktioniert aber leider gar nicht.

FAZIT:
Ich hab keine Ahnung welchen Pegel ich genau erreichen muss und wie ich diesen stabil bekomme. Ich will ja später im laufenden Betrieb nicht, dass andauernd die Beine einknicken weil irgendwo die Spannung nicht passt. Natürlich hab ich die Möglichkeit andere
Noch irgendjemand eine Idee wie ich die Servos ansprechen könnte?

Servos zu verwendent aber ich hab bereits 5x BMS705 ca. 17€ und 4xBMS705MG ca. 28€ gekauft und das Geld wäre dann wohl oder übel weg.

EDIT: Das Thema BMS705 Servo ansteuern hab ich hier hin ausgelagert: https://www.roboternetz.de/community/threads/55914-Servo-Motor-BlueBird-ansteuern-funktioniert-nicht?p=533418#post533418

HannoHupmann
22.12.2011, 09:53
Nach 5 Tagen und gefühlten 100 Stunden an dem Problem hab ich die Blue-Bird Servos soweit, dass sie auf meine Steuersignale reagieren. Damit kann ich mich dem nächsten Schritten im Projekt zuwenden und über die Weihnachtsferien ein bischen weiter bauen. Material ist jetzt fast alles vorrätig, auch wenn ich wieder kleine Modifikationen am Bein machen muss nach dem ersten Tests.

muell-er
22.12.2011, 10:05
Nach 5 Tagen und gefühlten 100 Stunden ... Blue-Bird Servos ... reagieren ...und bei gschätzten 50 hilfen wäres schon ok wenn du uns sagt wieso es jetzt funzt und wieso es nihct gefunzt hatte. Wo der Fehler lag.

rolber
22.12.2011, 11:23
@muell-er

Schau mal 3 Beiträge höher, wenn du auf den Link klickst, kannst Du auch die Lösung lesen!

Roland

HannoHupmann
22.12.2011, 14:45
wie rolber es schon gesagt hat im Thread zum Problem steht auch die Lösung. Der Vollständigkeit halber hier auch nochmal. Die Versorgungsspannung der Servos war nicht stabil genug. Mein verwendetes Netzteil ist nicht in der Lage die Spannung zu halten bzw. auf die Lastspitzen der BMS schnell genug zu reagieren. Werden zwischen Vcc (Servos) und GND einige Kondensatoren 2200µF + 100µF + 100nF + 100nF geschaltet, kann die Lastspitze abgefangen werden und die Servos reagieren wie gewünscht.
Mit meinen LiPo Akkus funktioniert es übrigens ganz problemlos.

Danke nochmal an alle die mir geholfen haben, jetzt gehts weiter mit neuen Aufgaben wärend der Weihnachtsferien.

HannoHupmann
10.01.2012, 08:34
Über die Weihnachtsfeiertage hab ich es geschafft nochmal 3 Beine fertig zu bauen, so dass der Roboter jetzt 4 Füße hat. Für die übrigen zwei fehlt gerade das Material (bzw. das Budget). Ich werd jetzt eh erst mal mit der Elektronik weiter machen, da der Roboter auf 4 Beinen schon stehen kann. Nächste Schritt wird also eine geeignete Hauptplatine für die Servos zu entwickeln.

rolber
13.01.2012, 17:37
Hallo Hanno !

Schau Dir das mal an:
http://www.mikrocontroller.net/topic/6529
Könnte passen.

Gruss

Roland

HannoHupmann
14.01.2012, 23:22
@rolber, danke für den Link. Allerdings hab ich da schon eine Lösung für, muss sie nur noch umsetzen. Sprich Paltine designen und aufbauen. Aber erst mal die Kabel noch alle mit Steckern versehen und dann gibts mal wieder ein Foto damit ihr sehen könnt, wie weit ich jetzt schon bin.

HannoHupmann
15.01.2012, 19:25
Wie angekündigt gibt es heute einige Bilder vom aktuellen Baustand:

4 Beine von 6 sind fertig.
http://img824.imageshack.us/img824/3883/01010046.jpg
http://img812.imageshack.us/img812/9191/01010047.jpg

Datails Schulterelement mit zusätzlichen Federn als Gewichtskompensation:
http://img832.imageshack.us/img832/903/01010040.jpg

Hier ein Bild von der Adapterplatte an der die Servos und die LEDs angeschlossen werden.
http://img546.imageshack.us/img546/5014/01010043.jpg

Und ein ganzes Bein im Detail:
http://img210.imageshack.us/img210/2327/01010033m.jpg

Wie gehts weiter?
Als nächstes werde ich wohl ein wenig Steuerung machen, also Platine für den Propeller-Chip designen und dann mal ein wenig Testprogramme mit den Beinen fahren um zu sehen wie groß die Belastungen sein dürfen.

5Volt-Junkie
15.01.2012, 20:01
Moin Hanno ;)
Dein Hexa wird aber schon etwas größer ausfallen :)

Wie dick sind denn die Dibondplatten? Für mich sieht es nach ca. 3mm aus.
Ist es wirklich so stabil? Hatte das Material mal in der Hand und es hat sich so ziemlich flexibel angefühlt :confused:

HannoHupmann
16.01.2012, 07:48
Ich habs jetzt nicht auswendig im Kopf, aber ich denke es sind eher 5 bis 6mm. Allein die Aluminiumauflage macht schon 0,7-1mm auf jeder Seite aus. Das Zeug ist schon sehr stabil finde ich und dafür auch schön leicht. Da ich es zudem kostengünstig gefräst bekomme (:)) ist es natürlich meine erste Wahl. Wobei ich auch gerne mit Lexan oder CFK arbeite. Viel Stabilität kommt natürlich auch durch die Konstruktion selbst.

Ich bin auch gespannt ob das ganze mit den vielen Federn funktioniert die ich eingebaut hab.

HannoHupmann
10.02.2012, 08:05
Bevor mein eigenes Projekt jetzt ganz verschwindet ein kleines update. Zur Zeit komm ich nur wenig dazu was dran zu machen, daher geht es langsam voran, aber es passiert jeden Tag etwas. Gerade bau ich die Hauptenergieversorgung für die Servos auf und ein. Wenn die Steuerleitungen auch alle fertig sind (dazu komm ich hoffentlich am WE), kann ich den ersten Bewegungstest machen.

jcrypter
10.02.2012, 08:36
Video video!! :)

Sieht echt gut aus!

Viel Erfolg und Spaß weiterhin!
Crypi

HannoHupmann
22.06.2012, 07:41
Holla, ganz schön lange kein Update mehr.

Gut ich hab zwar weiter daran gebastelt aber nur wenig nennenswertes zu berichten gehabt. Langsam fängt der Roboter an zum Leben zu erwachen, was aber erst mal nur bedeutet, dass alle Servos ihren Platz gefunden haben und nun auch angesteuert werden. Im Moment bin ich dabei die Zahnriemen zu optimieren, damit der Hexa hier keine Probleme mehr hat. Hoffentlich funktioniert das mit den Federelementen so wie ich mir das ausgedacht hab.

Ich hoffe diese Woche noch den ersten Test zu machen wo er allein und frei steht, danach werden dann verschiedene Bewegungsmuster im Stand geprobt.

HannoHupmann
24.06.2012, 21:50
Die Federn sind alle zu weich, der Roboter federt viel zu sehr ein. Also alle Federn durch härtere ersetzt (ziemliche schrauberrei). Jetzt funktioniert es besser, der Roboter steht sicher auf 4 Beinen aber die Feinabstimmung der Gelenkwinkel passt noch nicht.

Es geht voran aber langsam

High Light
25.06.2012, 15:12
Sieht bisher super aus! Gefällt mir, weiter so!

Weißt du, wo man sich Teile fräsen lassen kann???
Du wirst sie wahrscheinlich über jemanden im Freundeskreis machen lassen?

Grüße High Light

HannoHupmann
26.06.2012, 09:22
Hi Highlight irgendwo weiter vorn im Thread steht die Adresse vom Horst- Eltner der fräst mir immer meine Teile für den Körper für wenig Geld (nur 2D möglich, daher verzichte ich auf 3D Teile). Die Füße sind allerdings Marke "Eigenbau".

High Light
26.06.2012, 17:49
Alles klar, dankeschön!
Dann werd ich mich dort bei Bedarf Mal erkundigen.

Grüße High Light

HannoHupmann
26.07.2012, 11:35
Gestern zum ersten mal alle Servos der ersten vier Beine gezielt in Betrieb genommen: Fazit, der Roboter steht nicht stabil, Grund: Ein Schulterservo funktioniert nicht.

Damit geht es erst mal wieder nicht weiter, bis es neue Servos gibt.

squelver
27.07.2012, 06:41
Was ist denne mit den Servos los?
Der neue Hexabot schaut richtig böse aus, ich mag auch die Farben :)

HannoHupmann
27.07.2012, 08:38
Ja, als ich die Teile bekommen hab, musste ich mich sofort umentscheiden doch nicht zu lackieren sondern das Gelb zu lassen.

Anders als bei deinem Hexa habe ich keine direkte Verbindung zwischen Motor und Gelenk sondern dieses Federelement dazwischen. Die Mechanik hier ist allerdings nicht so präzise; liegt daran, dass ich die Federkräfte so schlecht bestimmen kann.
Zumindest rutscht der Zahnriemen jetzt nicht mehr.
Im Prinzip wieder mal ein klassischer Fall von zu wenig vorbereitender Planung und zu schnellem drauf los basteln. Und das obwohl ich schon vorher alles durchdacht und nur mit einem Bein angefangen hatte. :(

Im Moment ist alles noch sehr unpräzise, was aber daran liegt, dass die Feinjustierung noch nicht statt gefunden hat. Die wollte ich eigentlich machen und dabei ist eben aufgefallen, dass ein Servo gar nicht arbeitet, den muss ich jetzt erst austauschen.

Das führt nur leider gerade alles dazu, dass meine Motivation sehr stark gedämpft wird. Nur verkaufen kann ich das Ding ja auch nicht, da bekommen ich niemals das Geld raus, welches da schon reingesteckt wurde.

squelver
27.07.2012, 08:55
Ich habe mir deinen Thread nur überflogen, find das ganz toll, was du dir einfallen lassen hast. Das mit dem Servo ist ärgerlich.
Bekommst du vieleicht einen Dämpfer mit zur Feder eingebaut, der die Bewegungen etwas abbremst?
Ersetze die Feder vorerst bzw. mach ne Strebe oder nen Gummistück rein, damit du weiter machen kannst und kümmere dich zu einem anderen Zeitpunkt um das Problem.

HannoHupmann
29.07.2012, 12:05
1 Servo defekt mit Getriebeschaden
1 Servo defekt mit Elektronikschaden

macht einen defekten Servo und einen funktionierenden. Zum Glück sind die Modelle so kompatibel, dass man das Getriebe vom elektrisch kaputten in den mit dem Mechanikschaden einbauen kann. Das Beste daran ist, ich muss nicht warten bis ein neuer Servo geliefert wird sondern kann gleich weiter machen.

HannoHupmann
31.07.2012, 19:30
Oh man diese BlueBird Servos taugen gar nichts! Da zahlt man 29€ pro Stück und trotzdem gehen die noch kaputt, hab heute schon wieder einen Ausgefallenen zu beklagen. Nein keine Überlastung oder Getriebeschaden einfach nur normal belastet und schon tut er nichts mehr.

Leider weis man sowas immer erst hinterher aber die Marke kann ich definitiv nicht empfehlen, das nächste mal gibts wieder HiTec.

5Volt-Junkie
31.07.2012, 20:02
Ohje, das ist ja echt ärgerlich wenn die Dinger so viel Geld kosten und dann je nach Lust und Laune ausfallen.
Übrigens, ich habe da so eine Vermutung, dass BlueBird nicht immer BlueBird ist. Oder z.B. Premium Line (ist das überhaupt eine Marke) - gleich Premium Line.

Du kennst ja noch die MC 620 MG Servos von Premium Line (ich nenn das jetzt einfach mal als Marke), die ich bei meinem Sechsbeiner verbauen wollte. Wo die Dinger vom Markt verschwunden sind, sind plötzlich BlueBird BMS 620 MG Servos mit derselben Bauform, Leistung und überhaupt 1:1 Datenblatte zu Pr.Line erschienen. Oder war das doch umgekehrt, dass Pr. Line was von BlueBird abgekupfert hat? Man kann hier eigentlich viele Verschwörungstheorien aufstellen und spekulieren wie man lustig ist.

Aber die Tendenz zu HiTec habe ich jetzt auch aufgegriffen. Zu einem von Deinen Empfehlungen die auf Erfahrung aus anderen Projekten aufbaut, zum Anderen weil die Hexapod-Händler wie Micromagic Systems, Lynxmotion und Co. auch fast bei allen Projekten auf HiTec Servos setzen.

Ich wünsche Dir trotz der Ausfälle viel Erfolg und keine weiteren Ausfälle :)

HannoHupmann
01.08.2012, 07:44
Leider kann ich nicht so leicht auf eine andere Marke umschwenken ohne die Beine komplett neu zu machen. Die Abmessungen sind eben nicht einheitlich (gut es gibt von Futaba einen der genau gleich ist in der Abmessung, der kostet aber 100€). Schon möglich, dass BlueBird nur ein andere Label aufklebt oder die Produktlinie umbenannt hat. Da hätte ich mal besser keine Low-Profile Servos nehmen sollen.

Leider bin ich jetzt noch nicht sicher wie es weiter gehen soll, diese vielen Rückschläge sind doch sehr demotivierend und ich möchte auch nicht unendlich viel Geld in ein instabiles Design stecken. Auf der anderen Seite jetzt auf zu hören würde bedeuten, dass alles Geld was bisher reingesteckt wurde verloren ist.

ikarus_177
16.08.2012, 11:38
@HannoHupmann: hast du eine Vermutung, aus welchem Grund die Elektronik des einen Servos versagte? Überspannung / Überbelastung?

Schöne Grüße

HannoHupmann
16.08.2012, 13:17
Leider nicht wirklich. Ich weis dass die Servos bzw. deren Elektronik dann ausfällt, wenn sie alle angesteuert wurden, sprich 12 Servos gleichzeitig im Betrieb. Gut möglich, dass dabei eine Überspannung entstanden ist. Es könnte auch sein, dass die Elektronik zu heiß wird, wenn die Servos "stehen" sprich den Roboter halten sollen. Sollte aber eigentlich kein Problem sein.

Ich hab jetzt nen neuen beim C bestellt und wenn ich wieder von der Dienstreise bin werde ich wohl einen weiteren Test machen. Hoffentlich ist es kein generelles Problem sonst hab ich lauter unbrauchbare Servos und einen Hexabot der nicht funktioniert.

HannoHupmann
26.08.2012, 17:47
So defekten Servo ausgewechselt und getest, funktioniert soweit alles ganz gut. Natürlich ist das noch weit weg vom finalen Status aber zumindest der Teil geht jetzt einigermaßen gut. Ich muss jetzt noch ein bischen die Mechanik verbessern und dann kann ich wirklich los legen.

HannoHupmann
27.08.2012, 16:57
Hier der erste Versuch den Roboter selbstständig stehen zu lassen. Mit vier Beinen zwar erst aber der Roboter steht schon.

23118

Bisher aber nur auf Teppich denn auf normalem Parkett rutschen die Beine weg.

HannoHupmann
11.09.2012, 16:00
Das Layout der Servoplatine ist fertig aber irgendwie bin ich noch nicht zufrieden damit wie es aussieht. Noch zu viel Freifläche die ungenutzt ist, allerdings hab ich den Platz im Roboter also kein Grund das ganze im Bauraum zu reduzieren.

HannoHupmann
12.09.2012, 08:03
UPDATE: Jetzt ist die Platine fertig und sieht auch so aus wie ich das gerne hätte. Nächster Schritt sie ätzen lassen und die Bauteile bestellen. Vielleicht kann ich dann den Kabelsalat auf dem "Unterdeck" endlich in eine geordnete Struktur bringen.

HannoHupmann
14.09.2012, 21:23
Jetzt brauch ich eure Hilfe:

Für die LED Beleuchtung verwende ich RGB LED-Streifen je 6 RGB LEDs Pro Bein und nochmal 12 oder mehr für den Körper. Allerdings werden die LEDs mit 12V betrieben und ich hab nur die 9V der Batterie zur Verfügung. Jetzt hab ich ja schon den Hinweis bekommen, dass es der LM1577 die Spannung von 9V zu 12V transformiert. Ich frag mich jetzt jedoch ob die Leistung von 800mA überhautp für soviele LEDs reicht und ob es da nicht Alternativen gibt und oder ich eben zwei einbauen muss.

Bei Traco Power hab ich jetzt auch einen Wandler gefunden der mir 5 bis 7V Eingangsspannung in 12V Ausgangsspannung umsetzt, jedoch nur mit einer Leistung von 500mA.

Alternativ könnte ich natürlich auch irgendwie 12V Akkus verwenden oder zwei 9V Blöcke in Serie, dann wäre es kein Aufwand 12V zu generieren.

Lässt sich der Stromverbrauch irgendwie berechnen?

5Volt-Junkie
14.09.2012, 21:52
Hallo Hanno,

Kannst du ein Datenblatt zu den LEDs posten?
Noch wichtiger wäre es zu erfahren mit welchem Strom Du die LEDs betreiben möchtest! Ich hatte vor ein paar Tagen was mit roten und grünen LEDs was zu tun. Festgestellt wurde dass zur optimalen Ausleuchtung für rote LED 10-13 mA und für die grüne 4-5 mA erforderlich waren.

Worst Case wäre wohl die weiße Farbe, für die die Versorgung ausgelegt werden muss. Da müssen die LEDs aber nicht mit ihren einzelnen Strömen betrieben werden da sonst wäre weiß am hellsten und z.B. Rot am dunkelsten was optisch nicht so schön ist. Verstehst Du wie ich das meine?

HannoHupmann
14.09.2012, 23:23
Die Ströme ergeben sich aus den Widerständen die vorgeschaltet wurden. Ein Datenblatt hab ich nicht, das es sich um diese LED-Bänder handelt die man für ein paar Euro im Internet bekommt. Ich hatte da 5m günstig gekauft und jetzt möchte ich einen Teil davon für den Roboter verwenden. Vermutlich ist es einfach den Stromverbrauch bei weiß zu messen als es über eine Rechnung zu versuchen die dann doch wieder nicht passt. Morgen werde ich mal einen Testaufbau ausmessen, dann lässt sich auch der Spannungswandler auslegen. Ich hab jetzt auch schon Wander von Traco oder Recom gesehen die ohne zusätzliche Schaltungselemente auskommen.

HannoHupmann
16.09.2012, 01:04
Jetzt habe ich die Ströme gemessen:
Rot = 40,2mA
Blau = 36,8mA
Grün = 29,4mA

Alle zusammen brauchen Weiß = 92,5mA

Wenn ich also alle Beine zusammen nehme und noch die Beleuchtung im Körper komm ich auf irgendwas um die 800mA. Damit sollte der Step-Up Wandler ausreichen.

HannoHupmann
26.09.2012, 13:21
Da ich diesen Monat überraschend viel Geld auf dem Konto übrig habe, konnte ich mal wieder in Material investieren:
- 4 weitere BMS 705MG Servos um die letzten beiden Beine aufbauen zu können (120€ nur als Orientierung)
- 1 SBEC BEC UBEC 6V / 5A LiPo 2-7 Zellen Spannungsregler (der sollte für die Servos hoffentlich ausreichen und die Spannung auf 6V stabilisieren und für 11€ bei Ebay auch nicht besonders teuer. Der ist für die Leistung entsprechend ausgelegt ein kleiner Festspannungsregler würde keine 5A bereit stellen können)
- 1x Servo-Controller Platine 3€
- 1x Versorgungsplatine 3€
- Kleinteile und Co bei Polin für 30€
- Kleinteile und Co bei Reichelt für 20€

Jetzt warte ich natürlich noch auf die ganzen Bestellungen und habe hoffentlich nächste Woche mit dem Feiertag und den beiden Brückentagen genug Zeit damit auch etwas feines zu basteln.

Achja die vorerst letzte Platine für die Licht-Steuerung wird gerade layoutet und vermutlich am Wochenende fertig.

5Volt-Junkie
27.09.2012, 20:06
Na dann geht's wohl bald ordentlich weiter :) Hast Du dann eigentlich genug Servos oder müssen noch welche nachbestellt werden?
Wieso sind die Platinen für Servo-Controller und Versorgung so günstig?

HannoHupmann
30.09.2012, 14:40
Siehe "Fehlschlag der Woche" meine Servos liegen gerade unerreichbar in der Packstation ich muss also erst mal am Montag und nächste Woche einen Weg finden an die übrigen 4 Servos ran zu kommen. Dann hab ich aber auch genug für das Projekt (gut die Hüftservos könnten noch durch bessere ersetzt werden, da sind gerade die Restbestände verbaut und das sind so 5€ Servos).

Die Platinen wollte ich als nächstes aufbauen, allerdings muss ich da auch noch ein paar Teile beim Reichelt bestellen. Die Platinen sind deswegen so günstig, weil ich die privat gemacht bekomme und daher eigentlich nur Versand und Material zahlen muss.

Ja hoffentlich geht es nun mal :-D

HannoHupmann
06.10.2012, 11:23
Ich hätte schwören können, dass ich 6 Stück vorbereitet habe, naja muss ich eben nochmal zwei machen.

HannoHupmann
10.10.2012, 11:43
Hat eigentlich jemand eine Idee wie ich die Traktorie im µC abspeichern kann? Vielleicht als Bahnkurve mit vielen eigenen Punkten? Irgendwie muss dem Bein ja die Bahn vorgegen werden die die IK nachfährt.

Falls sich überhaupt noch jemand für das Projekt interessiert, ich hab langsam das Gefühl nur noch selber in dem Thread zu posten.

ikarus_177
10.10.2012, 12:05
Ich verstehe die Frage nicht so ganz :-k
Willst du die Bahnkurve des Fußpunktes während einer Vorwärtsbewegung speichern und dann nachfahren, oder die während eines Schrittes?

Wieso willst du überhaupt die Kurve speichern, und nicht Punkt für Punkt berechnen und jeweils anfahren?

rolber
10.10.2012, 15:46
Hallo Hanno !

Mich würde die Servocontroller Platine interessieren. Ist es der hier vielfach besprochene Atmega8 für 20 Servos oder hast Du was neues entwickelt?
Lese dein Projekt eigentlich durchgehend mit, aber solange für mich alles klar ist, beschränke ich mich ausschliesslich aufs mitlesen.
Weiterhin viel Erfolg !

Roland

HannoHupmann
10.10.2012, 16:02
Nun dann will ich es mal weiter erklären:

Wie wir alle wissen ist die inverse Kinematik in der Lage aus jeder beliebigen Position der Fussspitze (solange sie sich im Arbeitsraum des Beins befindet) die Gelenk-Winkel für Fuss, Knie und Hüfte auszurechnen.

Nur wie gebe ich diese "beliebigen Positionen" vor?
Ich hab zum einen einen festen Bewegungsablauf (A) wenn das Bein von seiner Endstellung zurück in die Anfangsstellung bewegt wird. Dabei befindet es sich in der Luft und die Bahnkurve die dabei abgefahren werden soll kann vorgegeben werden. So wie das bei ikarus_177 auf der Homepage unter Schritte zu sehen ist.

Für den Teil der Bewegung (B) bei dem der Fuss auf den Boden steht gibt es zwei Möglichkeiten:
1) Die Bahnkurve wird auch hier vorgegen. Dann sind aber keine Anpassungen an den Boden oder die Bewegungsrichtung möglich
2) Die Bahnkurve wird berechnet, entsprechend der Bewegungsrichtung (vorwärts, rückwärts, seitwärts mit Drehung oder alles zusammen) und Lage des Körpers.

Ich würde gerne den 2) Ansatz verfolgen, d.h. eine Bahnkurve quasi dynamisch generieren. Mittels eines Lagesensors soll der Roboter später erkennen ob er schräg steht und diese soweit möglich ausgleichen. Daraus folgt natürlich, dass sich auch die Beinstellung verändert. Ich möchte dem Roboter auch gerne Bewegungen vorgeben können wie z.B: "laufe gerade aus und dreh dich dabei einmal um 360°" für einen Hexa theoretisch ohne Probleme machbar, nur überlagern sich hier das Bewegungsmuster "nach vorn" und das "drehen". Ich brauch also eine mathematische Beschreibung die aus meiner Vorgabe errechnet wie die Fussspitzen sich bewegen müssten um die Aufgabe zu erfüllen (die Gelenkswinkel errechnen sich ja dann aus der IK).

Ich hoffe jetzt ist es etwas klarer.

HeXPloreR
10.10.2012, 18:38
Leider weiß ich nun nicht wie diese Beschreibung aussehen könnte, aber kann man nicht einen beweglichen zusätzlichen Bezugspunkt setzen auf den sich dann die Fußpunkte beziehen?

Wenn man den Buzugspunkt etwa 20cm links ins Koordinatensystem legt, dann läuft er quasi einen 40cm Kreis (mit Köpermittelpunkt) drum rum. Der Kreis wird umso größer je weiter der Punkt links oder rechts weg bewegt wird ( Am sinnvollsten wird es sein da etwas zu begrenzen z.B alles drüber = gradeaus laufen, weil sonst wird es ja nur ein recht großer Kreis)). Wenn man den Punkt wieder näher zum (normalen) Körpermittelpunkt bewegt, wird der Kreis kleiner und kleiner bis es eine Drehung um die eigene Achse wird.
Sobald sich der Bezugspunkt auf einer Seite innerhalb der Beine bewegt, wird die Drehung eingeleitet, da sich die Beine auf der Seite nun entgegengesetzt bewegen müssten
Dazu kann man dann noch die Bewegungsrichtung mit Schrittweite einrechen - per Kompass möglicherweise...

ikarus_177
10.10.2012, 20:39
@Hanno: als ich mich noch aktiv mit meinem Hexa beschäftigt hatte, erschien mir folgender Weg am zweckmäßigsten / einfachsten:
Meinen Beincontrollern (die die IK für die Beine berechneten und die Servos ansteuerten) bekommen vom Master (der für die übergeordnete Bewegungssteuerung zuständig ist) nicht die absolute Wunschposition des Beines übermittelt, sondern stets ein gewisses dX / dY / dZ. Um die Datenübertragung weiter zu vereinfachen, war diese Schrittweite immer fix eingestellt (man sollte natürlich einen relativ kleinen Wert nehmen, um die Bewegung "flüssig" aussehen zu lassen); alles was der Beincontroller vom Master empfing, waren Kommandos a là "Bewege Fußspitze um 1 dX / um -1dY usw...".

Trotz dieses einfachen Systems ließen sich damit alle Bewegungen realisieren, auch Überlagerungen von Bewegungen waren ohne weiteres möglich (z.B. um schräg zu gehen werden die Kommandos "+1dY" und "+1dX" abwechselnd gesendet, die Häufigkeit der beiden Befehle zueinander bestimmt, wie "schräg" gegangen wird; Drehungen während Bewegungen funktionieren ähnlich). Die Stärke des Konzepts ist aber auch gleichzeitig seine Schwäche: alle Bewegungen der Beine werden in einem roboterfesten Koordinatensystem gemessen, dessen Ursprung im Montagepunkt der Beine am Roboterkörper liegt. Das macht es extrem einfach, den Roboter etwa fernzusteuern, da alle Kommandos stets "aus Sicht des Roboters" ausgeführt werden, und er sich nicht in einem absoluten - ortsfesten - Koordinatensystem bewegt.

Das Problem ist, dass der Master (bzw. deine Instanz, die den Pfad bestimmt) bei überlagerten Bewegungen, die Drehungen beinhalten, seehr viel zu rechnen hat, wenn du Manöver wie deine 360°-Drehung während des Geradeauslaufens ausführen willst - schließlich läuft der Roboter (aus seiner Sicht) am Ende "rückwärts".

Der "Königsweg" für einen IK-Bewegungsapparat - aus meiner heutigen Sicht - würde ein globales, ortsfestes Koordinatensystem haben, in dem sich der Roboter bewegt. Aus dem Robotermittelpunkt und seinen Drehungswinkeln in den drei Achsen (quasi den Parametern, mit deren Hilfe der Roboter gesteuert werden kann) werden die globalen Positionen der Befestigungspunkte berechnet, diese fließen zusammen mit den Bodenpunkten der Beine (die - während das Bein am Boden ist - im globalen System konstant bleiben!) in die Berechnung der eigentlichen IK ein.

Zum Thema Neigungsausgleich: willst du die Neigung eines konstant schiefen Bodens ausgleichen, oder auf unregelmäßig unebenem Gelände laufen? Ersteres würde wahrscheinlich einfach über eine Winkelmessung (im Optimalfall mit Gyroskopen + Beschleunigungssensoren und einem Kalmanfilter zur Datenfusion) und entsprechende Korrektur möglich sein (ein geschlossener Regelkreis wäre denkbar). Zweiteres benötigt Sensoren, die feststellen können, ob ein Bein nun tatsächlich am Boden ist (Ich habe festgestellt, dass es bei Tastern das Problem gibt, dass diese eventuell nicht sicher schließen, wenn das Bein schief am Boden aufkommt). Die Anpassung an das Gelände erfolgt dann bei den Schritten, indem sich die Beine solange absenken - aber auf keine feste Höhe - bis ein fester Bodenkontakt hergestellt ist. Neigungsmessungen wären wohl auch hier notwendig, um eine absolute Referenz zu haben.

Schöne Grüße

HannoHupmann
11.10.2012, 07:49
Das Konzept hab ich bisher auch verfolgt bei meinem Phoenix². Da habe ich dem Roboter vorgegeben "laufe x schritte gerade aus oder Schräg" oder "drehe dich um 270°" allerdings war gerade aus laufen ein unterschiedlicher Algorithmus als drehen. Ich habe damals keine Überlagerung hin bekommen. Für den Vinculum wollte ich nun die Überlagerung von "gerade, schräg usw" und "drehen" schaffen und noch den Höhenausgleich. Auch diesmal wird es wieder ein ortsfestes Roboterkoordinatensystem geben und ausgehend von diesem werde ich die Fussbewegung berechnen lassen. Vermutlich wird es auf ein Koordinatensystem hinaus laufen, welches immer nach Norden ausgerichtet ist, aber sich mit dem Roboter bewegt. D.h. Drehungen verändern das Koordinatensystem nicht und bei translatorischen Bewegungen wandert das Koordinatensystem mit.

Mein erster Ansatz ist nicht so weit weg von euren Ideen - was mich sehr beruhigt.

Zum Neigungsausgleich: Erst mal geht es mir nur um "schiefen Boden" die Option mit dem "unregelmäßig unebenen Gelände" kommt irgendwann später, denn hier muss die Höhe jede einzelnen Beins individuell angepasst werden. Hier wäre aber eine Rückmeldung von den Beinen sehr hilfreich und die hab ich nicht implementiert. Der Lageausgleich lässt sich aber recht gut über ein Gryo+Beschleunigungssensor+Kalmanfilter erschlagen.

Erst mal muss der Roboter auf "eigenen Füßen" stehen und da mir immernoch die letzten 4 Servos - dank der deutschen Post - fehlen geht es nicht weiter.

HeXPloreR
11.10.2012, 13:00
Ohne eine Rückmeldung der Fußspitze wird es schwierig, denke ich. Allein dadurch das der Roboter seine Lage verändert, die vom Sensor gemessen wird, würde ich nicht machen. Denn dann drückt dieses eine Bein kurzfristig ein mehrfaches des Gewichts, für das möglicherweise nicht ausgelegt ist. Das kann nicht gut sein, und hat mir schon einen AX-12 Getriebe zerlegt.

Ich plane etwas ähnliches wie diesen Fühler vom catapilar...nur etwas verstärkt und in der Bewegung begrenzt.
Etwas ähnliches würde der Analogstick von einem Play_statio_pad wohl auch leisten. Allerdings wird dafür das Gewicht dann bei Dir schon kritisch sein?

HannoHupmann
11.10.2012, 15:07
Oh beim Phoenix² ging es ganz prima ohne Rückmeldung der Servos. Im Prinzip vertrau ich einfach darauf, dass die Beine da ankommen wo sie nach Vorgabe sein sollten. Die Rückmeldung würde mir ja nur ermöglichen zu prüfen ob sie da angekommen sind und falls nicht einzugreifen. Für die ersten Schritte wird es so gehen müssen, später implementiere ich vielleicht eine geeignete Art der Rückkopplung, wobei ich hier wohl eher auf DMS Streifen als auf Potis zurück greifen würde.

HeXPloreR
11.10.2012, 16:19
Ja, ich meine ja auch für später.

HannoHupmann
12.10.2012, 07:24
Gestern hat die Post es endlich geschafft mir meine PIN für die Packstation zukommen zu lassen. Auf einmal ging es dann doch per SMS und egal.... ich habe meine letzten vier Servos bekommen. Jetzt muss ich die natürlich erst mal testen (ich hatte ja schon genug ausfälle und die dann Mühsam wieder ausgebaut) und kalibrieren. Danach kann ich sie Einbauen und der Roboter steht endlich auf 6 Beinen. :cool:

HannoHupmann
14.10.2012, 21:55
So Bein Nummer 5 ist fertig. Die nächsten Tage wird Nummer 6 fertig und dann hoffe ich, dass die Beine alle "laufen" allerdings hatte ich in Gelenk F3 ein unschönes Knattern und die Analyse hat ergeben, dass hier wieder ein Zahnrad zerstört wurde. Diese Plastikgetriebe halten einfach nichts aus. Sobald die Servos mechanisch blockiert werden geht das Getriebe kaputt.

Aus meinem defekten Servo konnte ich ein Zahnrad "verpflanzen" aber ich denke es ist nur ein Notbehelf. Über kurz oder lang werden alle Servos mit Metallgetriebe ausgerüstet!

Jemand ne Idee wie ich ein SO-24 Bauteil auf einer Lochrasterplatine anschliessen kann? Ich würde meine Schaltung zur LED Steuerung gerne erst testen bevor ich sie auf eine Platine brenne.

Geistesblitz
15.10.2012, 19:01
Was meinst du eigentlich mit "mechanisch blockiert"? Versucht, über den Anschlag hinaus zu fahren? Sowas sollte man schon konstruktiv vermeiden, sonst ist es kein Wunder, dass das Getriebe hops geht. Ansonsten sind irgendwelche gewichtskompensierenden Komponenten wirklich sehr hilfreich, falls das mit den Beinmassen zu tun haben sollte.

Mit dem SMD-Bauteil wird wirklich ein bisschen fummelig. Ich hab mir mal ein Adapterboard aus normalen Platinenmaterial geschnitzt und da den IC mitsamt ein paar Stiftleisten raufgelötet, Funktion noch nicht getestet. Ansonsten hab ich auch schon gesehen, den IC auf einen Brocken Heißkleber zu kleben und dann die Beinchen mit dünnem Draht mit dem Rest zu verlöten, aber dazu braucht man wirklich eine ruhige Hand. MisterMou müsste wissen, von welchem Konstrukt ich schreibe ;)

HannoHupmann
16.10.2012, 11:50
@Geistesblitz lässt sich leider nicht mechanisch vermeiden, dass die Servos mit ihren 180° Drehbereich über die mögliche Beinbewegung von etwa 160° hinaus fahren, liegt in der Natur der Sache, ich muss also durch die Software die Beinbewegung begrenzen. Die HiTec Servos des Phoenix² hatten in so einem Fall nicht genug Kraft für eine Selbstzerstörung. Auch meine gewichtskompensierenden Federn die ich im Oberschenkel eingebaut haben sind von Nachteil wenn der Roboter nicht auf dem Boden steht sonder "aufgebockt ist" dann müssen die Servos gegen die Federkraft arbeiten.

@ich hab gesehen, dass es kommerzielle Adapterplatinen gibt, aber die führen die Beine auf zweireihige Stiftleisten heraus, womit ich wieder kein Steckbrett verwenden kann, außerdem sind sie mit 8€ viel zu teuer. Ich dachte auch schon daran die Beinchen mit Draht auf eine Stiftleiste zu "bonden" doch bei 20 Beinchen wird das sehr fummelig. Daher bin ich noch auf der Suche nach einer einfachen Lösung.

Geistesblitz
16.10.2012, 22:07
Welchen Pinabstand hat denn dein IC? Ich hab schon eine Adapterplatine für einen IC mit 16 Pins und 0,65mm Pinabstand von Hand geritzt. Funktion hab ich bisher noch nicht getestet, aber die Verbindungen mit den Pins sind auf jeden Fall richtig verlötet. Wirklich empfehlen kann ich diese Variante allerdings nicht, da das wirklich aufwändig ist und trotzdem gerne mal ungenau wird. Da würd ich doch lieber mal gucken, ob du irgendwo was Kleines ätzen kannst oder ob das wer für dich machen würde.

HannoHupmann
17.10.2012, 07:16
SO-24 ich weis nicht welcher Abstand das ist aber es sieht um 1mm aus, vielleicht auch eher 0,8. Müsste irgendwo im Netz stehen. Für meinen Draht zuhause aber zu knapp, das würde nur einen einzigen Lötklumpen geben.

Eine Adapterplatine will ich bisher nicht ätzen lassen, da die um 5-8€ kosten wird und nun ja ich eigentlich nur kurz die Schaltung aufbauen und testen möchte. Ich könnte das ganze auch gleich auf meiner späteren Controllerplatine probieren nur da kann ich keine Leitungen mehr verlegen. Im Prinzip bau ich es auf dem Steckbrett und auf der Platine genauso wie im Datenblatt auf, nur wer weis dann schon ob das so passt und ob der Kontroller alles anspricht wie ich es mir wünsche.

HannoHupmann
21.10.2012, 19:45
Freitag und Samstag hab ich wieder viele schöne Pakete bekommen:

1) neue Tastatur für den Laptop --> siehe Fehlschlag der Woche (Donnerstag bestellt, Samstag geliefert, so mag ich das)
2) ELV: ein USB-i2c Interface für den PC getestet und Berichtet: http://www.rn-wissen.de/index.php/I2C_USB_PC_Adapter
3) ELV: eine SO24 Adapterplatine, noch nicht verbaut aber damit kann ich die i2c LED Treiberbausteine auf der Lochrasterplatine aufbauen
4) Conrad: 2 neue BMS-705MG Servos --> siehe auch Fehlschlag der Woche + einer in "Reserve"

Noch türmt sich alles auf dem Schreibtisch und ich freu mich schon darauf alles zu verbauen.

5Volt-Junkie
22.10.2012, 21:04
Da ist ja richtig "Äktschn" auf Deinem Schreibtisch :)
Meinst Du, Dein Hexa kann bald unter dem Weihnachtsbaum rumspazieren?





P.S. "Äktschn" ist natürlich mit Absicht so geschrieben :P

HannoHupmann
23.10.2012, 20:35
Mhm bis Weihnachten laufen hin zu bekommen? Gut möglich kommt darauf an wie viele "Fehlschläge der Woche" ich zu Papier bringe. Als nächstes will ich allerdings die LEDs ansteuern können und die zweite Hauptplatine designen. Aber auch die Servo-Ansteuerung soll fertig werden, damit es hier alles stabil läuft. Ich habe mir ja jetzt extra einen Ersatzservo besorgt, denn die Erfahrung zeigt: von etwas, von dem man Ersatz hat, geht NIE kaputt.

HannoHupmann
26.10.2012, 22:04
So wenigstens halbwegs hab ich die LEDs zum leuchten gebracht. Ich weis wie man den PCA9552 nun ansteuert, naja noch nicht ganz. Ich kann LEDs leuchten lassen und auch schön blinken, aber ich weis noch nicht genau wie ich die Befehle aufbauen muss, damit sie das tun was ich will. Vor allen werd ich später eigentlich drei PWM Register brauchen, der Baustein hat aber nur 2. Mal sehen vielleicht wechsel ich doch nochmal den Chip. Für RGB ist er nicht so gut geeignet wie mir schein. Die LEDs lassen sich offensichtlich auch nur Blockweise ansprechen. Aber so ganz bin ich noch nicht dahinter gestiegen wie ich das machen muss.

HannoHupmann
09.12.2012, 09:03
Heute gibt es mal wieder Bilder zum aktuellen stand. Mittlerweile kann das Vinculum auf eigenen Füßen stehen, wenn auch noch etwas wackelig
23976

Von oben sieht es dann so aus:
23977


Die Controller im Detail:
23979
von links nach rechts: Propeller Chip für die Servosteuerung. 7,2V LipPo, 9V Block für die Logik. Blaue LED gehört zum Spannungswandler für die Servos 8,4V...7V --> 6V, die beiden roten LED gehören zum Spannungswandler: 9V --> 12V & 5V & 3,3V

Hier noch meine Servo-Adapterplatine
23978
Stromverteilung unabhängig von der Logik, nur die Steuersignale werden zum µC geleitet.

Leider ist der Aufbau noch nicht so stabil wie ich das gerne hätte, insbesondere die Federung der Beine macht mir sorgen. Auch der "Gripp" auf dem Boden ist seht schlecht, hier wollte ich noch extra "Schuhe" machen, aber bisher knicken die immer weg. Außerdem sind die LED leisten auf der oberseite noch nicht befestigt sondern hängen in der Luft. Hier fehlt mir noch ein geeignetes Konzept, denn Kleben will ich sie nicht (irgendwann muss ich sicher wieder alles auseinander bauen) und für schrauben ist nicht richtig Platz. Außerdem sind die LED so hell, dass eigentlich eine Abdeckung darüber gehört.

HannoHupmann
04.01.2013, 21:15
Irgendwie grübel ich immernoch darüber wie ich eine Bahnkurve erstelle und diese in die Servobewegung umwandeln soll. Gar nicht so leicht, wenn man alles berücksichtigen will.

5Volt-Junkie
04.01.2013, 21:27
Nach meinem Geschmack, sieht es am besten aus, wenn die Fußspitze eine gestreckte Parabel in die Luft "zeichnen" ;) Also wenn man den Bot von der Seite anguckt.

HannoHupmann
04.01.2013, 21:44
@5Volt Junki, das wäre ja noch der einfache Teil, denn das ist nur die Bewegung Fusspitze von der Endposition zurück in die Ausgangsposition. Hier kann man ohne Probleme eine feste "Bahn" vorgeben die der Roboter immer abfährt. Wobei allerdings schon wieder die Frage ist, ob es immer die gleiche Anfangsposition sein sollte oder ob die sich auch ändert.

Im Moment Kämpfe ich mehr damit dass ich eine Bewegung haben: z.B. Gerade aus laufen und dazu noch eine Lage des Körpers z.B. 10° um die x-Achse udn 14° um die y-Achse. Daraus ergeben sich nun eine beliebige Anzahl von zwischenpunkten die alle irgendwie berechnet und der Bein IK (die rechnet daraus dann die Servowinkel s0, s1 und s2) übergeben werden müssen. Mein Problem ist also weniger wie die Winkel für die Servos ermittelt werden sondern mehr wie die sogenannte Trajektorie erstellt wird und an die IK übergeben. Dummerweise will ich keinen Industrieroboter programmieren mit fester Bahnbewegung von Punkt A zu Punkt B, das wäre ja wieder einfach sondern ein System entwickeln das auf die Lageänderungen zu jedem Moment reagieren kann und sich entsprechen anpasst.

Abgesehen davon arbeiten im Vinculum 8 Microcontrollern a 10MHz parallel, die natürlich alle gleichzeitig arbeiten möchten und trotzdem zusammen spielen sollen.

5Volt-Junkie
04.01.2013, 21:55
Irgendwie grübel ich immernoch darüber wie ich eine Bahnkurve erstelle und diese in die Servobewegung umwandeln soll. Gar nicht so leicht, wenn man alles berücksichtigen will.

Die Frage habe ich wohl "etwas" unterschätzt :oops:


...z.B. Gerade aus laufen und dazu noch eine Lage des Körpers z.B. 10° um die x-Achse udn 14° um die y-Achse...

HannoHupmann
04.01.2013, 22:02
:p Als ausgerufener Hexabot Experte wäre nur IK ja auch ein bischen zu trivial oder?

Aber ich hab gerade ein Kapitel in meinem Buch gefunden zum Thema Bahnkurven mal sehen was da drin steht wenn ich morgen dazu komm es zu lesen.

robin
04.01.2013, 22:52
Bei deinem Gerade auslaufen und Drehen fehlen ein Paar angaben. z.B. Wie schnell soll er sich drehen, oder soll die Drehung bis zum ende des Geradeaus Laufens fertig sein? Wenn ja, fehlt eine Angabe zur Strecke ;)

Ohne dieser Angabe wird es schwer eine Bewegung zu berechnen.

Am einfachsten dürfte es sein, wenn du eine Maximal Geschwindigkeit vorgibst für die Achsen und das Drehen und dann den gemeinsamen Teiler Aus alles Bewegungen zu ermitteln.

Also X_max 1cm/s und Drehung_max 1°/s bei einer Bewegung um X 50cm und 14°:
Daraus würden sich dann eine Bewegung mit X=1cm/s und Drehung von 14/50°/s ergeben. Hoffe du verstehst, was ich meine.

Oder aber du musst all deinen Bewegungen eine Geschwindigkeit vorgeben, ähnlich wie bei G-Code einer CNC-Maschine.

HannoHupmann
05.01.2013, 10:55
@robin schon richtig, das hab ich versucht mit der Analogie zu einem Industrieroboter zu zeigen. Bei dem wäre es in der Tat einfach: ein Tool-Center-Point (TCP) wird in relation zum Basis Koordinaten System bewegt. Dabei wird die Bewegung als Verschiebung und Rotation des TCP dargestellt. Die Bahn auf der sich der TCP von A (Ausgangspunkt) zu B (Endpunkt) bewegt wird als Bahnkurve bezeichnet. Diese kann im einfachsten Fall eine Gerade sein oder eine komplexe Kurve. Die eigentliche Bewegung wird nun beliebig viele kleine Teilschritte zerlegt (interpoliert) und an die Inverse Kinematik des Roboters übergeben und mit hilfe der DH-Matrix die Gelenkwinkel berechnet. Dazu kommt noch deine erwähnte Vorgabe der Geschwindigkeit. Soweit ist das für Industrieroboter auch recht verständlich. Für eine Geradeausbewegung eines Hexapods könnte ich das gleiche Prinzip anwenden. Ich hatte eben keinen TCP sondern eine Fussspitze die auf einer Geraden entlang geführt wird und über die IK kann ich jeden einzelnen Servowinkel berechnen. Das ganze für 6 Beine mit unterschiedlichen Geraden wenn es keine Bewegung "gerade aus" ist. So hab ich es bisher bei meinem Phoenix² gemacht und es funktioniert auch gut. Vorgabe der Richtung + Anzahl der Schritte + konstante Geschwindigkeit oder Vorgabe der der x,y Koordinaten des Drehpunkts + Wieviel Grad um den Drehpunkt gedreht werden soll + Konstante Geschwindigkeit. Allerdings konnte ich immer nur eine Vorgabe verarbeiten und ein Schritt bestand aus einer definierten Länge die nicht unterschritten werden konnte.

Jetzt möchte ich das ganze etwas komplexer machen:
1) Die Länge eines Schritts soll sehr viel kleiner werden
2) Die Lage des Körpers soll wärend der Schritte ausgeglichen werden
3) Die Füsse sollen selbst entscheiden wann der Fuss gehoben wird und wieder an den Anfang gefahren wird.
4) Alle Beinbewegungen sollen unabhängig voneinander parallel laufen

Im Prinzip kann der Roboter eine Bewegung vollführen die ihn sagen wir 1m gerade aus laufen lässt und dabei eine vollständige Drehung des Körpers um 360° durchführt. D.h. die translatorische und rotatorische Bewegung überlagern sich. Dabei stosse ich auf zwei Probleme:
A) Wie erzeuge ich eine Bahnkurve die genau diese Bewegung dar stellt
B) Wie müssen die daraus resultierenden Bahnkurven für die Beine 1 bis 6 aussehen
C) Wie übergebe ich die resultierenden Bahnkurven an die Inverse Kinematik der Beine
D) Wie kann ich berücksichtigen, dass die resultierende Bahnkurve bei jedem Schritt durch die Lageregelung des Roboters verändert wird

Bisher habe ich auf Videos zu Hexas immer nur gesehen wie die Bewegungen nacheinander gemacht werden und nicht gleichzeitig. Es müsste aber auch möglich sein, dass alles gleichzeitig passiert und mein Anspruch für das Vinculum ist kein geringerer.


Anderes Thema:
Gewicht: Gerade habe ich mein Hexabot gewogen und er bringt jetzt mit Akkus und allem 2,8kg auf die Waage. D.h. bei 4 Beinen 0,7kg pro Bein bzw. 0,7kg*g =7N . Die Oberschenkellänge beträgt 14,5cm und damit ergib sich ein Drehmoment von 101,5Ncm was für meine Servos zuviel ist da die nur 73Ncm schaffen. Also heißt es nun entweder auf 5 Beine am Boden gehen und dann würden es immernoch 81,2Ncm sein oder stärkere Servos verwenden. Alternativ: Diät und >0,8kg abnehmen! Zumindest wenn ich weiter den vollen Arbeitsraum ausnutzen möchte.

Wird der volle Arbeitsraum nicht ausgenutzt und wie geplant die Beine nur im 45° Winkel eingesetzt verändert sich der Abstand von Schulter zu Fusspunkt auf 10,25cm womit der Schulterservo gerade so 71,75Ncm benötigt was ganz knapp unter den 73Ncm bleibt. Da ich aber noch etwas Gewicht zuladen muss (Sensoren, Platinen weitere Komponenten) bleibt mir wohl nur die Lösung mit besseren Servos und Gewicht abnehmen.

ikarus_177
05.01.2013, 20:28
Hallo,


3) Die Füsse sollen selbst entscheiden wann der Fuss gehoben wird und wieder an den Anfang gefahren wird.
Ich nehme an, die Schritte werden trotzdem zentral koordiniert werden? Ansonsten könnte es ja zu Problemen kommen, wenn etwa die beiden hintersten Beine gleichzeitig der Meinung sind, einen Schritt machen zu müssen?


A) Wie erzeuge ich eine Bahnkurve die genau diese Bewegung dar stellt
Alles was du brauchst, sind Transformationen, die dir aus der Position des Robotermittelpunkts und den drei Winkeln, die die Drehungen des Körpers beschreiben, die Positionen der einzelnen Befestigungspunkte der Beine berechnet. Dann kannst du ja mit mehr oder weniger Standard-IK die Servowinkel bei bekanntem Fußpunkt berechnen.


D) Wie kann ich berücksichtigen, dass die resultierende Bahnkurve bei jedem Schritt durch die Lageregelung des Roboters verändert wird
"Bahnkurve" klingt für mich viel zu sehr nach "Berechnung vor Ausführung". Wenn du hingegen für jeden Punkt die Servowinkel nacheinander berechnest (z.B. du veränderst für eine Vorwärtsbewegung die X-Koordinate schrittweise um ein gewisses delta) und für die Lageregelung statt der Soll- die Istwinkel verwendest, sollte alles möglich sein.

Schöne Grüße

robin
06.01.2013, 11:50
Die Bewegung sollte doch theoretisch kein Problem sein, Du hast ja 2 Koordinatensysteme:

1. Das des Raumes in dem du dich Bewegst
2. Das des Roboters
(3-9). Die der einzelnen Beine, sind aber Ausschnitte von 2.

Das erste System gibt die Bewegung deines Torsos in X,Y,Z Richtung und die Ausrichtung des Roboters angegeben. Es wird ein Vektor zwischen der Aktuellen Position des Roboters und dem Zielpunkt gespannt (theoretisch sind hier auch Kurven möglich). Also wie wenn sich der Roboter auf einer Karte von Punkt A nach Punkt B bewegen würde und in Richtung Süden schaut.

Jetzt wird ein kleines Teilstück der Bewegung ins zweite System umgewandelt. Dieses liegt um alle Achsen gedreht im ersten System und dem entsprechend wird das Teilstück von System 1 in 2 umgewandelt. Jetzt können auf dieses Teilstück in System 2 die Korrekturmaßnahmen (vom vorherigen Teilstück) aufaddiert werden. Und diese Ergebnisse werden dann als delta X, delta Y,..... an die IK übergeben.

Die IK von jedem Bein wird zum Mittelpunkt des Torsos berechnet.

Die Randbedingungen von den Teilstücken werden durch die Maximalgeschwindigkeit des Roboters (evtl auch Minimalgeschwindigkeit wegen Rundungsfehlern als Drehung um 0,00001° pro step) bzw einer Vorgegebenen Geschwindigkeit festgelegt.


Damit sollten alle deine Bedingungen erfüllt sein und auch das laufen einer Kurve müsste machbar sein, solange die Teilstücke nicht zu groß sind, sonst wirds ein Dreieck ;) .
Vorteil von dem Ganzen, du hast eine einfach Schnittstelle mit dem ersten Koordinatensystem auf dem Sogar noch Mapping integriert werden kann etc.

Frage bleibt die Aufteilung zwischen den Controllern. Die Beste Möglichkeit wird wohl sein, IK und Servoansteuerung auf einen Controller und alles was zur Berechnung der Lage und das addieren des Korrekturfaktors auf das "Gehirn" zu verteilen.
Dadurch bleibt dein IK+Servocontroller System fertig und muss "nie mehr" verändert werden (wers glaubt :D ). Die ganzen Änderungen im Code werden dann nur im "Gehirn" notwendig, bedeutet, hast du z.B. einen anderen Beschleunigungssensor zur Korrektur Berechnung verwendest muss an der IK nichts mehr geändert werden ;)

HannoHupmann
06.01.2013, 13:34
@Ikarus_177 den Ansatz haten wir ein paar Beiträge weiter vorn auch schon diskutiert und an dem werde ich auch festhalten. Bahnkurve bedeutet in der Tat vorberechnet, da es ja eine Zentrale Vorgabe geben muss wohin der Roboter laufen soll. Das würde ich als die "Bahnkurve" definieren (sprich einen Meter gerade aus und dabei eine 360° Drehung). Allerdings ändert sich die Lage des Roboters wärend der Bewegung immer wieder so, dass diese "Vorberechnung" nur teilweise gültig ist und der Weg der zurück gelegt wird in entsprechende viele Teilstücke zerlegt ist. So wie du das mit dem dx, dy gemacht hast nur dass es bei mir noch ein dh (Höhe) geben wird für jeden "Schritt"
Dein Einwand mit beide Beine hinten oder beide Beine vorne ist richtig und muss entsprechend im Programm verhindert werden, ich weis nur noch nicht ob das Zentral oder Lokal passiert.

@robin
Genau so denke ich dass es in der theorie funktionieren könnte. Das ist im Endeffekt ziemlich ähnlich zu dem was Ikarus_177 beschrieben hat. Die Bewegung im Raum wird zerlegt in Teilschritte und dann in Servobewegungen umgerechnet.

Langsam ergibt sich auch für mich ein Bild wie es aussehen könnte und schwierig wird es nun nur das ganze theoretische Gebilde in einen funktionierenden Code umzusetzen (insbesondere der Mathematik) und dann auf meine µC Struktur zu verteilen.

Ich verwende wieder (wie bei meinem Phoenix²) einen Propeller Chip von Parallax der hat 8 µC integriert die alle unabhängig voneinander arbeiten können und sich einen gemeinsamen Memory Pool teilen.
Im Moment denke ich, dass jeder Cog (so nennen die die einzelnen µC) ein Bein bekommt und damit zwei Cogs übrig bleiben für die zentrale Berechnung der Bewegung.
Da die Cogs auf einen gemeinsamen Memory Pool zugreifen können sie hier ohne Probleme ihr dx, dy und dh Werte abholen und selbstständig in die Servowinkel s0, s1 und s2 Umrechnen und ausführen. Nach jedem dx, dy, dh Schritt warten sie auf neue Werte oder halten die Position. Außerdem könnte jeder Cog selbst prüfen ob die Übergabewerte in Ordnung sind oder zu illegalen Servowinkeln führen (Berechnungsfehler) würden. Auch die Regelung, dass sich die Beine vorn oder hinten nicht gleichzeitig vom Boden abheben, sollte hier erfolgen.

Der Charm dieses µC sind wirklich die 8 unabhängig und echt parall arbeitenden Kerne. Bei meinem Phoenix² arbeite ich teilweise parallel, dort berechnet Cog1 die Bewegungen und Cog6 bewegt alle rechten Beine und Cog7 alle Linken. Abgesehen davon unterstützt die Programmiersprache inline Assembler Code, so dass man alles was "schnell gehen soll" in Assembler programmieren kann und alles übrige in SPIN. Achja eine sehr umfangreiche Tabelle mit Cosinus Werten ist auch schon fest implementiert, das heißt er berechnet den Wert nicht sondern schaut einfach nach, was gerade für diese Anwendung im Hexa sehr praktisch ist.


PS: Neue Servos für die Schultern hab ich trotzdem noch gekauft, um nicht in Probleme mit dem Drehmoment zu laufen, denn 73Ncm bei einer Belastung von 72Ncm im 45° Winkel fand ich dann doch zu kritisch. Daher gibt es jetzt einen Satz 142Ncm Servos (Zudem noch Digitale und keine Analogen) für die Schultern, womit selbst bei 90° ausrechend Leistung zur Verfügung steht und der Roboter auf ein Maximalgewicht von 3,9kg kommen dürfte (vier Beine immer am Boden).

Chaosmann
09.01.2013, 03:22
... Bisher habe ich auf Videos zu Hexas immer nur gesehen wie die Bewegungen nacheinander gemacht werden und nicht gleichzeitig. Es müsste aber auch möglich sein, dass alles gleichzeitig passiert und mein Anspruch für das Vinculum ist kein geringerer....
Hi Hanno,

die Hexabots, die auf den Lynxmotion-Sets aufbauen, können rein von der Programmierung alles gleichzeitig ausführen. Das Problem bei denen ist nur das das Gamepad nicht genug Achsen hat.
Ich selbst verwende in meinem Mendel eine abwandlung von dem Code in Kombination mit Computerjoysticks. Laufen, den Körper um die Achsen drehn und kurven laufen gleichzeitig ist hier problemlos möglich.

Zum Beispiel kann man um ein Hinternis in einem Bogen herumlaufen und den Kopf des Bots immer auf das Hindernis gerichtet lassen.

Gruß
Daniel

HannoHupmann
09.01.2013, 12:31
Gestern sind endlich meine Platinen gekommen um die LED Treiber zu testen. D.h. ich kann auch an der Front endlich weiter machen. Auch wenn ich immernoch keine Methode gefunden habe die LED Streifen so zu befestigen, dass sie ordentlich aussehen.

Die neuen Servos sind aus HongKong auf dem Weg zu mir, leider meldet sich der Horst nicht, der die neuen Teile fräsen sollte. Hoffe mal der ist nur im Urlaub, nicht dass ich mir eine neue Quelle suchen muss.

HannoHupmann
10.01.2013, 07:48
Die Platinen sind leider mit einem falschen Pad Abstand für meine Chips. Noch dazu bekomm ich es einfach nicht hin den Y59116F dazu zu animieren irgendwas zu tun. Falls sich jemand mit i2c gut auskennt und mir helfen kann, hier ist der dazu passende Thread in dem ich mein Leid schilder:
https://www.roboternetz.de/community/threads/60512-Ben%C3%B6tige-Hilfe-bei-i2c-Ansteuerung-TLC59116F?p=568554#post568554

HannoHupmann
11.01.2013, 16:37
Es hat nur drei Tage gedauert um heraus zu finden wie ich den Chip ansteuern muss. Das waren zwar ordentlich Nerven aber es zeigt sich wieder, dran bleiben lohnt sich!

HannoHupmann
17.01.2013, 07:35
Jetzt muss ich nur noch jemand finden der mit die Hauptplatine fertigen kann, Problem dabei, SMD und Doppelseitig. Außerdem kann ich sie nicht selber bohren wegen fehlender Mittel.

Die Umbauteile für die neuen Servos sind unterwegs und die Servos kommen hoffentlich auch bald, dann kann ich endlich voll in die Programmierung einsteigen.

HannoHupmann
23.01.2013, 18:00
Hier für alle Fans (falls es überhaupt noch welche gibt) meines Projekts ein kleines Goodie

https://sketchfab.com/show/v7D765sOOqhO73cLdnfkpDpEEC7

Viel Spass beim ansehen. Der Stand ist leider nicht mehr ganz aktuell da ich schon wieder ein wenig daran herumgebaut habe.

HannoHupmann
11.02.2013, 16:48
Sie sind da:

24491

6 neue Knieservos BMS-660DMG+HS mit 14,2kgcm

Jetzt muss ich alle testen und einbauen, hoffentlich funktionieren alle.

HeXPloreR
11.02.2013, 16:57
Hey,

ja, also ich lese mit ;)

Soso, nun also doch Servos mit etwas mehr Kraft?!
Wieviel wiegt Vinculum denn jetzt etwa?

Viele Grüße

HannoHupmann
12.02.2013, 09:09
Wenigstens einer :)

Erst mal muss ich alles wieder zusammen frickeln und die Servos kalibrieren, dann kann ich eine Messung machen, wobei ich fürchte, dass meine Personenwaage dafür nicht fein genug auflöst. Mal sehen ob es die µg Waage in der Arbeit genauer sagen kann :-P

Bei der letzten Messung mit der sehr ungenauen Waage (die nur auf 0,1 auflöst) bin ich auf 2,8kg gekommen. Allerdings dürfte sich daran nicht viel geändert haben, da die neuen Servos schwerer sind als die alten. Höchstens durch die Verkleinerung der übrigen Teile könnte sich das Gewicht geändert haben.

Geistesblitz
12.02.2013, 10:17
Hast du keine Küchenwaage im Haus? Meine kann bis 3kg anzeigen, gibt aber bestimmt auch welche mit einem größeren Messbereich.

schorsch_76
12.02.2013, 11:33
Ich les hier auch immer mit ;)

movido
12.02.2013, 16:16
Ich befürchte, Du brauchst noch stärkere Servos. Bin sehr gespannt auf die ersten Ergebnisse.

HannoHupmann
12.02.2013, 18:27
Alles auf die Waage gepackt und gewogen. Jetzt komm ich auf 2,5kg also rund 0,3kg leichter als bei der ersten Messung. Gut es ist noch nicht alles zusammen gebaut aber ich hab auch alle Schrauben und Muttern mit gewogen.

Berechnung:
2,5kg aufgeteilt auf 4 Beine die immer am Boden sind ergibt 0,6kg (=6N) pro Bein an Gewicht. Der längste Hebelarm beträgt 16cm (Bein voll ausgestreckt) ergibt 16cm * 6N = 96Ncm. Die Servos können 14,2kgcm also rund 142Ncm. Also eine Sicherheit von 1,47. Natürlich wird noch das eine oder andere angebaut werden an den Hexa und damit wird das ganze schwerer werden. Bei einer Sicherheit von 1,2 würde ich also ein Gewicht von 2,95kg nicht überschreiten dürfen.
Alternativ gibt es aber noch die Möglichkeit Teile leichter zu machen oder gar durch CFK zu ersetzen.


@movido warum glaubst du ich brauch noch mehr Kraft in den Servos? Ich fürchte eher, dass die Massenträgheit der Beine zu groß ist.

movido
12.02.2013, 19:33
@HannoHupmann Naja, probier's erst einmal so. Die Trägheit der Beine ist fast egal. Aber bei einem Hexa wirst Du ganz schnell nur noch drei Beine am Boden haben wollen. Und Du hast ja nicht nur statische Belastung, sondern auch dynamische Kräfte. Wenn Du z.B. einen Schritt machst, dann bewegt sich ja der Körper auch auf und ab, wird also vertikal beschleunigt und abgebremst. Das geht natürlich alles auf die Hebel.

Aber wie gesagt. Schau erst mal, wie's klappt. Mit der aktuellen Konfiguration wirst Du schon sehr weit kommen. Für die Schrittfolge wäre eine gute Inverse Kinematik prima, damit die vertikale Bewegung gering bleibt.

Ich drücke die Daumen und danke ganz herzliche für die tolle Beschreibung!

- Matthias

HannoHupmann
18.02.2013, 11:54
So kleines Update, nachdem ich am Wochenende fleißig war und alle Beine wieder zusammengeschraubt habe, sieht der Hexa jetzt wieder gut aus:
24565

Neu hinzugekommen sind die Abdeckungen für die LED-Streifen (diese milchigen Streifen auf den Oberschenkeln). Die Kabel im Inneren des Roboters müssen noch sauber verlegt werden, was ich aber erst machen werde, wenn die zweite Platine fertig ist.

Hier noch eine kleine Detailaufnahme von den beiden Beinen:
24566

Gewogen habe ich den Aufbau noch nicht, das werde ich vermutlich heute oder morgen machen um zu sehen ob es bei den 2,3kg bleibt. Die neuen Servos hören sich sehr viel "leiser" an und sind auch kräftiger, allerdings auch das habe ich noch nicht getestet.

Gestern ist mir noch ein klassischer "Initalisierungs-Bug" aufgefallen, den einige von euch vielleicht auch schon erlebt haben. Die Beine bekommen im Moment alle 90° als Vorgabe - also Mittenstellung. Wird dann die Spannungsversorgung angeschaltet gibt es ein wildes, nicht endenden Zucken und Zappeln. Der Strom geht dabei seh stark hoch. Initialisiert man hingegen nur 4 Beine und hängt die beiden übrigen erst dann an, ist alles ruhig und schön brav und der Ruhestrom beträgt etwa 0,5A

Erst dachte ich, dass mein Netzteil nicht in der Lage ist den hohen Einschaltstrom bereit zu stellen, aber auch mit dem Akku war es nicht möglich alle Servos gleichzeitig zu initialisieren. Entweder muss ich mir in der Schaltung oder in der Programmierung noch etwas überlegen um dieses Anfangsgezappel weg zu bekommen.

PS: Im Fehlschlag der Woche hatte ich geschrieben, dass mir mein Spannungsregler für die 12V Step-Up verschmort ist, aber es war dann doch nur eine kleine 100µH Spule die sich verabschiedet hat.

HannoHupmann
19.02.2013, 22:07
Der Roboter wiegt nun 2,9kg, gerade nochmal nachgewogen. Ist also ein bischen schwerer geworden, das wundert mich bei den Servos aber nicht. Allerdings trau ich meiner Personenwaage auch nicht ganz über den Weg, die ist nicht kalibriert und mag schon mal messen was sie mag. Ich muss das Ding mal in der Arbeit auf die Digitalwaage stellen.


Heute habe ich den ersten Programmschnipsel für die Beine geschrieben:
Servo - Speed - Control

Da ich mit einem Propellerchip arbeite kann man wunderbar parallele Prozesse laufen lassen. Im nachfolgenden Code ist zu sehen, dass ich einen "Prozessorkern" (Cog) dafür abstelle die Position an den Servo zu übergeben. Dazu greift er kontinuierlich auf die Variable pos zu. D.h. immer wenn sich im Hauptprogramm der Wert von pos ändert, wird dieser Wert automatisch auch an den Servo übertragen. Ganz ohne lästiges übergeben.



CON
_CLKMODE = XTAL1 + PLL16X 'Set to ext crystal, 16x PLL, 80MHz Clock
_XINFREQ = 5_000_000 'Frequency on XIN pin is 5 MHz

VAR
LONG high_pulse, low_pulse, periode, speed, pos, vorzeichen, posinit, lastpos, zielpos
long stack_c2[55] ' Speicher für den Cog

PUB main
dira[26]~~ ' Ausgang für LED - Grün
zielpos := 1990 ' Zielposition Servo
posinit := 950 ' Startposition Servo
speed := 1000 ' Geschwindigkeit 0 = schnell, 500 = mittel, 5000 = langsam

'-------------------------------------------------------------------------------------------------------------------------
'### INITIALPOSITION ANFAHREN ###
pos := posinit
cognew(moveit, @stack_c2) ' Ab hier arbeitet ein Cog kontinuierlich das moveit programm ab
waitcnt(80_000_000 + cnt) ' Anfahren der Initalposition

repeat 10
busy_led ' Bestätigen, dass bereit

'-------------------------------------------------------------------------------------------------------------------------
'### SERVO BEWERGN ###
lastpos := posinit
pos := lastpos
pos #>= 900 ' Untere Servogrenze
pos <#= 2000 ' Obere Servogrenze, wenn die Mathe mal versagt
if zielpos > lastpos ' Servo-bewegung vorwärts
vorzeichen := +1
if zielpos < lastpos ' Servo-bewegung rückwärts
vorzeichen := -1

repeat ' Bewegung
pos += vorzeichen ' Positionsänderung
repeat speed ' Warten
until pos == zielpos ' Bis zum Ziel und Schluss

'-------------------------------------------------------------------------------------------------------------------------
'### PROGRAMM ENDE ###
repeat
ready_led

PRI moveit ' Paralleler Prozess der dauerhaft läuft
dira[15]~~ ' Servo Pin D[2]
periode := ((clkfreq/1000000)*20000) ' Länge der gesamten Periode berechnen
repeat ' Tu das bis du gestoppt wirst - für immer
high_pulse := ((clkfreq / 1000000) * pos) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[15]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[15]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)


PUB busy_led
!outa[26] ' Ausgang invertieren
waitcnt(3_000_000 + cnt) ' 300ms warten

PUB ready_led
outa[26]~~ ' LED ON



Wenn man sich mal reingedacht hat ist die Programmiersprache ganz simpel.

Als nächstes wird dieser Code nun so erweitert, dass ich ein Bein steuern kann, also 3 Servos mit beliebiger pos und beliebigem speed. Der Programmteil ist wichtig, weil ich den Hexa nicht immer bei voller Geschwindigkeit laufen lassen will, da schwingt alles zu sehr.

HannoHupmann
20.02.2013, 20:07
So Code erweitert auf 3 Servos damit kann ich dann schon ein Bein steuern mit entsprechender Geschwindkeitsregelung. Irgendwas sagt mir aber langsam schon, dass es diesmal nicht bei 800 Zeilen Code bleiben wird...

HannoHupmann
23.02.2013, 21:10
So das Programm für alle Beine mit Geschwindigkeitsregelung funktioniert endlich. Das war allerdings nicht so leicht, da ich mit verschiedenen "Bugs" zu kämpfen hatte, die natürlich dazu geführt haben, dass die Servos immer mal wieder absolut nicht das taten was sie sollten oder nur teilweise. Was dann am Ende daran lag, dass ich den 6 Kernen für die Beine etwas zu wenig Memory zugeteilt hatte und sie sich daher ganz gerne gegenseitig überschrieben haben.

Das waren die Softwarebugs, dann hatte ich noch verschiedene Hardwarebugs. Wenn alle 6 Beine angeschlossen und angesteuert werden gibt es den bei Hexas bekannten "epileptischen Anfall", bei dem alle Servos wild in der Gegend herumzucken und Position anfahren die absolut verboten sind. Dieses Verhalten lässt sich auf eine ungeeignete Stromversorgung zurück führen, denn gerade beim Initalisieren verlangen die Servos sehr viel Strom und das kann ein Labornetzteil schon mal in die Knie zwingen.

Daher hier nun ein Bild meiner modifizierten, primären Stromversorgung:
24634

Ist gerade ausgebaut weil ich noch andere Probleme damit hatte die nun aber hoffentlich auch erledigt sind.

5Volt-Junkie
23.02.2013, 23:43
Hallo Hanno,

das Teil kann ja bald laufen :)
Werden alle Beine von einem Propeller angesteuert?

Ich sehe gerade dass die Programmiersprache ziemlich nett aussieht und mehrere Cogs reizen mich auch ein bisschen...

HannoHupmann
24.02.2013, 10:30
Ja und nein :P

Der Propellerchip enthält 8 sogenannte Cogs, das sind 8 physikalisch getrennte Kerne die sich den gemeinsamen Speicher teilen. Jeder Cog kann zu jeder Zeit auf den Speicher zugreifen und nacheinander in den Speicher schreiben. Der Charm dieses Chips für einen Hexa ist natürlich, dass man den Cogs eins und zwei die Bahnkurve berechnen lässt, wärend die Cogs 3 bis 8 die 6 Beine kontinuierlich mit Servo-PWM-Signalen versorgen. Die Bein-Cogs greifen dabei einfach immer auf die Variable Xpos zu und wandeln diese in Servosignale (Siehe die Programme mit dem Suffix PRI).
Im unten stehenden Programm arbeitet das Main Programm mit Winkeln in Grad und erst in den Cogs wird daraus ein PWM Wert erzeugt, das macht es leichter den Überblick zu behalten, da sich jetzt alle Beine gleich bewegen, egal wie rum die Servos eingebaut sind.



CON
_CLKMODE = XTAL1 + PLL16X 'Set to ext crystal, 16x PLL, 80MHz Clock
_XINFREQ = 5_000_000 'Frequency on XIN pin is 5 MHz

Var
'LONG high_pulse, low_pulse, periode, speed
LONG speed
LONG Apos[3], Aini[3], Alast[3], Aziel[3], Asign[3]
LONG Bpos[3], Bini[3], Blast[3], Bziel[3], Bsign[3]
LONG Cpos[3], Cini[3], Clast[3], Cziel[3], Csign[3]
LONG Dpos[3], Dini[3], Dlast[3], Dziel[3], Dsign[3]
LONG Epos[3], Eini[3], Elast[3], Eziel[3], Esign[3]
LONG Fpos[3], Fini[3], Flast[3], Fziel[3], Fsign[3]
BYTE x
long stack_a[15], stack_b[15], stack_c[15], stack_d[15], stack_e[15], stack_f[15] ' Speicher für den Cog
pub main

init
Aziel[0] := 45 ' Zielposition Servo
Aziel[1] := 90
Aziel[2] := 90

Bziel[0] := 45 ' Zielposition Servo
Bziel[1] := 90
Bziel[2] := 90

Cziel[0] := 45 ' Zielposition Servo
Cziel[1] := 90
Cziel[2] := 90

Dziel[0] := 45 ' Zielposition Servo
Dziel[1] := 90
Dziel[2] := 90

Eziel[0] := 45 ' Zielposition Servo
Eziel[1] := 90
Eziel[2] := 90

Fziel[0] := 45 ' Zielposition Servo
Fziel[1] := 90
Fziel[2] := 90

speed := 5000
'-------------------------------------------------------------------------------------------------------------------------
'### INITIALPOSITION ANFAHREN ###
x:=0
repeat 3
Apos[x] := Aini[x]
Bpos[x] := Bini[x]
Cpos[x] := Cini[x]
Dpos[x] := Dini[x]
Epos[x] := Eini[x]
Fpos[x] := Fini[x]
x++

coginit(3, moveA, @stack_A)
coginit(4, moveB, @stack_B)
coginit(5, moveC, @stack_C)
coginit(6, moveD, @stack_D) ' Ab hier arbeitet ein Cog kontinuierlich das moveit programm ab
coginit(7, moveE, @stack_E)
coginit(8, moveF, @stack_F)
waitcnt(100_000_000 + cnt) ' Anfahren der Initalposition

repeat 10
busy_led ' Bestätigen, dass bereit

'-------------------------------------------------------------------------------------------------------------------------
'### SERVO BEWERGN ###
x:=0
repeat 3
Alast[x] := Aini[x]
Apos[x] := Alast[x]
Apos[x] #>= 20 ' Untere Servogrenze
Apos[x] <#= 160 ' Obere Servogrenze

Blast[x] := Bini[x]
Bpos[x] := Blast[x]
Bpos[x] #>= 20
Bpos[x] <#= 160

Clast[x] := Cini[x]
Cpos[x] := Clast[x]
Cpos[x] #>= 20 ' Untere Servogrenze
Cpos[x] <#= 160

Dlast[x] := Dini[x]
Dpos[x] := Dlast[x]
Dpos[x] #>= 20 ' Untere Servogrenze
Dpos[x] <#= 160

Elast[x] := Eini[x]
Epos[x] := Elast[x]
Epos[x] #>= 20 ' Untere Servogrenze
Epos[x] <#= 160 ' Obere Servogrenze, wenn die Mathe mal versagt

Flast[x] := Fini[x]
Fpos[x] := Flast[x]
Fpos[x] #>= 20
Fpos[x] <#= 160

if Aziel[x] > Alast[x] ' Servo-bewegung vorwärts
Asign[x] := +1
if Aziel[x] < Alast[x] ' Servo-bewegung rückwärts
Asign[x] := -1

if Bziel[x] > Blast[x] ' Servo-bewegung vorwärts
Bsign[x] := +1
if Bziel[x] < Blast[x] ' Servo-bewegung rückwärts
Bsign[x] := -1

if Cziel[x] > Clast[x] ' Servo-bewegung vorwärts
Csign[x] := +1
if Cziel[x] < Clast[x] ' Servo-bewegung rückwärts
Csign[x] := -1

if Dziel[x] > Dlast[x] ' Servo-bewegung vorwärts
Dsign[x] := +1
if Dziel[x] < Dlast[x] ' Servo-bewegung rückwärts
Dsign[x] := -1

if Eziel[x] > Elast[x] ' Servo-bewegung vorwärts
Esign[x] := +1
if Eziel[x] < Elast[x] ' Servo-bewegung rückwärts
Esign[x] := -1

if Fziel[x] > Flast[x] ' Servo-bewegung vorwärts
Fsign[x] := +1
if Fziel[x] < Flast[x] ' Servo-bewegung rückwärts
Fsign[x] := -1
x++

repeat ' Bewegung
x:= 0
repeat 3
Apos[x] += Asign[x] ' Positionsänderung
if Apos[x]==Aziel[x] ' Ziel erreicht
Asign[x]:=0
Bpos[x] += Bsign[x] ' Positionsänderung
if Bpos[x]==Bziel[x] ' Ziel erreicht
Bsign[x]:=0
Cpos[x] += Csign[x] ' Positionsänderung
if Cpos[x]==Cziel[x] ' Ziel erreicht
Csign[x]:=0
Dpos[x] += Dsign[x] ' Positionsänderung
if Dpos[x]==Dziel[x] ' Ziel erreicht
Dsign[x]:=0
Epos[x] += Esign[x] ' Positionsänderung
if Epos[x]==Eziel[x] ' Ziel erreicht
Esign[x]:=0
Fpos[x] += Fsign[x] ' Positionsänderung
if Fpos[x]==Fziel[x] ' Ziel erreicht
Fsign[x]:=0

x++
repeat speed ' Warten
until ((Asign[0] == 0) AND (Asign[1] == 0) AND (Asign[2] == 0)AND(Bsign[0] == 0) AND (Bsign[1] == 0) AND (Bsign[2] == 0)AND (Csign[0] == 0) AND (Csign[1] == 0) AND (Csign[2] == 0)AND(Dsign[0] == 0) AND (Dsign[1] == 0) AND (Dsign[2] == 0)AND(Esign[0] == 0) AND (Esign[1] == 0) AND (Esign[2] == 0)AND(Fsign[0] == 0) AND (Fsign[1] == 0) AND (Fsign[2] == 0)) ' Bis zum Ziel und Schluss

'-------------------------------------------------------------------------------------------------------------------------
'### PROGRAMM ENDE ###
repeat
ready_led

pub init
dira[26]~~ ' Ausgang für LED - Grün
Aini[0] := 90
Aini[1] := 90
Aini[2] := 90

Bini[0] := 90
Bini[1] := 90
Bini[2] := 90

Cini[0] := 90
Cini[1] := 90
Cini[2] := 90

Dini[0] := 90
Dini[1] := 90
Dini[2] := 90

Eini[0] := 90
Eini[1] := 90
Eini[2] := 90

Fini[0] := 90
Fini[1] := 90
Fini[2] := 90

PRI moveA|periode, high_pulse, low_pulse ' Paralleler Prozess der dauerhaft läuft
dira[22]~~
dira[23]~~
dira[24]~~
' Servo Pin D[2]
periode := ((clkfreq/1000000)*20000) ' Länge der gesamten Periode berechnen
repeat
' Tu das bis du gestoppt wirst - für immer
high_pulse := ((clkfreq / 1000000) * (Apos[0]* 8 +799 +50 )) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[22]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[22]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (Apos[1]* 8 +795 -70 )) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[23]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[23]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (Apos[2]* 8 +799 +0)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[24]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[24]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

PRI moveB|periode, high_pulse, low_pulse ' Paralleler Prozess der dauerhaft läuft
dira[19]~~
dira[20]~~
dira[21]~~
' Servo Pin D[2]
periode := ((clkfreq/1000000)*20000) ' Länge der gesamten Periode berechnen
repeat
' Tu das bis du gestoppt wirst - für immer
high_pulse := ((clkfreq / 1000000) * (Bpos[0]* 8 +800 -50)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[19]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[19]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (2192 - Bpos[1]* 8 +50)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[20]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[20]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (2173 - Bpos[2]* 8 +80)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[21]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[21]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

PRI moveC|periode, high_pulse, low_pulse ' Paralleler Prozess der dauerhaft läuft
dira[16]~~ ' Servo Pin D[2]
dira[17]~~
dira[18]~~
' Servo Pin D[2]
periode := ((clkfreq/1000000)*20000) ' Länge der gesamten Periode berechnen
repeat
' Tu das bis du gestoppt wirst - für immer
high_pulse := ((clkfreq / 1000000) * (Cpos[0]* 8 +800 +50)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[16]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[16]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (2160 - Cpos[1]* 8 + 0)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[17]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[17]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (2173 - Cpos[2]* 8 +50)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[18]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[18]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

PRI moveD|periode, high_pulse, low_pulse ' Paralleler Prozess der dauerhaft läuft
dira[13]~~
dira[14]~~
dira[15]~~
' Servo Pin D[2]
periode := ((clkfreq/1000000)*20000) ' Länge der gesamten Periode berechnen
repeat
' Tu das bis du gestoppt wirst - für immer
high_pulse := ((clkfreq / 1000000) * (2179 - Dpos[0]* 8 -150)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[13]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[13]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (Dpos[1]* 8 + 795 - 50)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[14]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[14]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (Dpos[2]* 8 + 795 + 10)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[15]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[15]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

PRI moveE|periode, high_pulse, low_pulse ' Paralleler Prozess der dauerhaft läuft
dira[10]~~ ' Servo Pin D[2]
dira[11]~~
dira[12]~~
' Servo Pin D[2]
periode := ((clkfreq/1000000)*20000) ' Länge der gesamten Periode berechnen
repeat
' Tu das bis du gestoppt wirst - für immer
high_pulse := ((clkfreq / 1000000) * (2187 - Epos[0]*8 -10)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[10]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[10]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (Epos[1]*8 + 800 - 150)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[11]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[11]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (Epos[2]*8 + 795 - 50)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[12]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[12]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

PRI moveF|periode, high_pulse, low_pulse ' Paralleler Prozess der dauerhaft läuft
dira[7]~~ ' Servo Pin D[2]
dira[8]~~
dira[9]~~
' Servo Pin D[2]
periode := ((clkfreq/1000000)*20000) ' Länge der gesamten Periode berechnen
repeat
' Tu das bis du gestoppt wirst - für immer
high_pulse := ((clkfreq / 1000000) * (2190 - Fpos[0]*8 + 150)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[7]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[7]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (2187 - Fpos[1]*8 - 50)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[8]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[8]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

high_pulse := ((clkfreq / 1000000) * (2187 - Fpos[2]*8 - 0)) ' Immer wenn sich der Wert in der Variablen pos ändert
low_pulse := periode - high_pulse ' wird dieser Wert an den Servo geschickt.
outa[9]~~ ' Ausgabe des High Pegels
waitcnt (cnt += high_pulse)
outa[9]~ ' Ausgabe des Low Pegels
waitcnt (cnt += low_pulse)

pub busy_led
!outa[26] ' Ausgang invertieren
waitcnt(3_000_000 + cnt) ' 300ms warten

pub ready_led
outa[26]~~ ' LED ON



Mit dem Laufen wird es leider noch dauern, da ich mich noch gar nicht an die Implementierung der Inversen Kinematik gemacht habe oder die Berechnung der Bahnkurven. Der nächste Schritt wird sein ein paar Grundlegende Bewegungen zu implementieren.

@5V-Junki
Die Programmiersprache nennt sich SPIN ist ähnlich aufgebaut wie Python und sehr intutiv zu programmieren (vor allen fallen diese nervigen Klammern: {} und ; weg, wie sie C braucht und sie ist intuitiver als assembler). Wer übrigens Lust hat kann auch im Programm lustig zwischen SPIN und Assembler wechseln. Soll heißen man kann ein paar Programmfunktionen in Assembler schreiben und vom SPIN Programm darauf zugreifen oder umgekehrt.

HannoHupmann
26.02.2013, 11:42
Kennt sich jemand mit Ferritkernen zur Entstörung aus und kann abschätzen ob die bei einem Hexa was bringen um die Servosignale zu entstören? Bisher habe ich darauf verzichtet und nur einen eingebaut der die Servo-Batteriespannung entstört (da war er vom Regler vorgegeben). Ich wüsste nun gerne wo so ein Ferritkern wirklich Sinn macht.

Slowly
26.02.2013, 16:20
Hmmm... Kannst Du ein grobes Schema posten, das zeigt wie die Stromversorgung in Deinem Bot aussieht? Ich denke das Problem mit dem Zucken wird sich nicht durch Ferritkerne ausbügeln lassen.

HannoHupmann
26.02.2013, 22:17
Siehe Beitrag #126 da ist meine "Primäre Versorgung" zu sehen. Von dort geht 3,3V - 5V und GND zum µC und die Signalkabel zu den Servos (in Reihe ein 100Ohm Widerstand). Vor jedem Bein ist eine "Verteilerplatine" gebaut hier werden die Servos mit 6V Spannung versorgt und mit 100nF + 100µF gepuffert. Seit gestern ist diese 6V Schiene mit EMV Geflecht ummantelt und von der Signalleitung getrennt (Signale sind nun unten verlegt und Versorgungsspannung oben).

Zusätzlich habe ich heute noch die längsten Servoleitungen in der Nähe des µC mit Feritkernen versehen (die liegen eh noch rum also kann ich sie auch einbauen).

Das Zucken des Servos E0 kommt allerdings nicht von der Servospannung, Signalleitung oder sonst was, sondern von der kaputten Elektronik im inneren. Er bewegt sich zwar, aber ohne Kraft. Irgendwas ist an dem nicht mehr ganz in Ordnung und daher wurde er jetzt ausgetauscht. Schon funktioniert alles wie gewünscht.

HannoHupmann
01.03.2013, 21:22
Frage an alle die Mitlesen:

Ich möchte die Bewegung einens Servos mathematisch invertieren.

Folgende Situation ich habe Servos die sich nach oben bewegen wenn der Vorgabewert steigt (max 2170 Ticks) und sich senken, wenn die Vorgabe sinkt (min 810 Ticks). Nun ist es aber durch den Einbau bedingt, dass manche Servos invertiert laufen, d.h. sie sinken bei hohen werten und steigen bei niedrigen. Für die Ansteuerung wäre es aber leichter, wenn sich alle Servos gleich verhalten. Ich müsste also bei den Servos die sich invertiert verhalten im Programm eine Umrechnung implementieren die aus dem Vorgabewert hohe Werte = steigen und niedrige Werte = sinken, entsprechende Ticks generieren:
Servo A = hoch bei 2170 und niedrig bei 810 (Mitte 1490)
Servo B = hoch bei 810 und niedrig bei 2170 (Mitte 1490)

Irgendwie komm ich gerade nicht drauf, wie ich das mathematisch abbilden kann.

ikarus_177
01.03.2013, 21:55
Ich hab' bei meinem Roboter die Servos einfach wie folgt kalibriert: per Taster wurden die beiden Endlagen sowie Winkel von +45° und -45° angefahren. Die jeweiligen Pulslängen bei diesen Winkeln (schließlich sind die Winkel ja das Ergebnis der IK) wurden im EEPROM gespeichert. Dann einfach eine Gerade durch diese Punkte legen (wofür ja schon 2 Punkte reichen sollten) - und fertig ist die Kalibrierung...

Schöne Grüße

radbruch
01.03.2013, 22:15
Hallo

Ich würde die Servos umbauen:

http://i2.ytimg.com/vi/IAP3Z-bAb-g/1.jpg (http://www.youtube.com/watch?v=IAP3Z-bAb-g)
(Aus https://www.roboternetz.de/community/threads/44536-Problem-mit-Servos?p=426347&viewfull=1#post426347)

Beide Servo erhalten das selbe Signal.

Bisher hatte ich nur Billigservos verwendet. Die drehen nicht linear. Das bedeutet, Impulsdaueränderungen auf der einen Seite bewirken einen anderen Drehwinkel als auf der anderen Seite. Dadurch wird eine rechnerische Lösung sehr kompliziert.

Gruß

mic

HeXPloreR
01.03.2013, 22:45
Hallo,

ich würde einfach sagen z.B. bei jedem Servo 1490 mitte, dann würde ich eine Seite minus und eine plus rechnen lassen, oder nicht?

Falls Korrekturen nötig sind würde ich die als Paramter vorher erfassen(Korr_servo1_b).
Hier sind die Werte für um 90° gedrehte Servos direkt eingeschrieben.
Für die Hitecs habe ich noch keine extra erstellt.

Ich habe eine "Variablen-Pflegebereich(Geometrie und Versatz)" eingebaut, in dem legt man die kompletten "Konstanten" fest (alle festen Längen, Korrekturwerte, .....). Änderungen der Geometrie müssen/dürfen aussschliessliche dort gemacht werden.

Das Problem trat beim mir auf als ich von RS-2 (Bein-Prototyp) auf Hitec Servos gewechselt habe. Die drehen entgegengesetzt ;)

Ich würde es auf jeden Fall rechnerisch lösen, nicht mechanisch durch Umbau.
Denn dazu ist ein µC da.

Du kommst noch drauf, geh schlafen - morgen gehts wieder ;)

Gute Nacht.

Geistesblitz
01.03.2013, 22:59
Eigentlich ist es ziemlich billig:

t_Servo = tmax + tmin - t_Soll

Wobei t_Soll der Wert ist, den der Servo einnehmen soll und t_Servo der Wert, den der Servo tatsächlich bekommt. tmax und tmin sind die obere und die untere Grenze, wobei du darauf achten solltest, dass diese auch wirklich von der Mittelstellung gleich weit entfernt sind. Obwohl, eigentlich lässt sich das mit Kalibrierung herausrechnen.

So, wie bin ich nun auf die Formel gekommen?
Erstmal hab ich das Signal invertiert, allerdings hat man dann nur negative Werte. Das heißt, dass man den Bereich jetzt noch geeignet verschieben muss. Zieht man den Wert tmin vom Sollwert ab, so hat man den Abstand zwischen beiden. Jetzt muss man diesen Abstand nur noch von tmax abziehen, und man hat sein Ergebnis:
t_Servo = tmax - (t_Soll - tmin) = tmax + tmin - t_Soll

movido
02.03.2013, 07:20
Ikarus_177 und Radbruch haben recht. Servos drehen weder linear, noch kann man sich auf Pulsbreiten wirklich verlassen. Um die Dinger relativ synchron zu bekommen, muss Du die Pulsbreiten für -45, 0 und +45 Grad notieren und in einer Kurve durch drei Punkte interpolieren. Dann hast Du eine grobe Übereinstimmung zwischen Pulslänge und Gradzahl. Die Drehrichtung ist dann auch egal - es ändert sich halt nur das Vorzeichen.

Ansonsten: s2 = 2170 + 810 - s1

oder die äusseren Pins am Poti im Servo tauschen.

radbruch
02.03.2013, 07:27
oder die äusseren Pins am Poti im Servo tauschen. ... und natürlich auch die Motorleitungen tauschen.

Gruß

mic

HannoHupmann
02.03.2013, 13:49
@Geistesblitz Danke das war die Formel die ich gestern versucht habe her zu leiten und jetzt wo ich die Lösung sehe, stell ich fest, dass ich sehr nah dran war, aber der letzte Groschen nicht gefallen ist.
@Movido: das ist die gleiche Formel und auch die Funktioniert

Die servos möchte ich ungern physikalisch umbauen, aber im Programm den Wert umzurechnen ist eine Zeile Code und damit kein Aufwand.

Geistesblitz
02.03.2013, 16:21
Gern geschehen :)

Das macht auch durchaus Sinn, das so zu machen, denn wenn man die Servos erstmal ausgebaut hat oder auswechseln muss, bringt man die nur durcheinander.

HannoHupmann
03.03.2013, 18:30
Langsam verzweifle ich an dem Vinculum, das System ist irgendwie zu komplex und hat zu viele Bugs:

1) Im Moment spinnen immernoch alle Servos in dem Moment wo der Hexa initalisiert wird und die Servos nicht exakt auf der Position stehen auf der sie sein sollten. Was vermutlich an der Spannungsversorgung liegt, denn die briecht auf 4V ein. Nur leider habe ich keine Idee wie ich die noch stabilisieren könnte, denn Kondensatoren habe ich oben schon mehr als genug eingebaut. Das Netzteil ist einfach zu träge und bei voller Last aller Servos reichen die 3A nicht aus!

2) Die Mechanik ist zwar toll mit den Federn und allen, aber im Moment führt sie dazu, dass die Servos nicht präzise ihre Position anfahren sondern sofort nach geben und dann rutschen die Beine irgendwann weg. Abgesehen davon sind die Zahnriemen, Kugellager, Federelemente und Co für den Großteil des Gesamtgewichts verantwortlich.

3) Sind die ganzen Stecker die ich verbaut habe um alles modular zu haben, immer wieder ein Garant für Fehler.

Langsam hab ich das Gefühl, nur immer mehr Geld hinein zu stecken ohne, dass dadurch brauchbare Ergebnisse erzielt werden!

malthy
03.03.2013, 22:22
Hey!

Dein Netzteil macht 3A max? Das ist doch sicher zu wenig für den Einschaltstrom von 18 Servos. Und wenn du außerdem noch viele Kondensatoren verbaut hast wirken die ja auch erstmal kurzzeitig als Kurzschluss, puffern tun die ja auch erst wenn sie umgeladen sind. Ich habe dein Projekt nicht bis ins Detail verfolgt, aber vielleicht könntest du zum Testen erstmal ein PC Netzteil nehmen? Die liefern auf der 5V Schiene ja gigantische Ströme (locker mal 25A) ...

Gruß
Malte

robin
03.03.2013, 22:29
Bei punkt 1) hilft entweder mit Akkus zu testen, was ständiges Laden bedeutet, oder ein gescheites Netzteil verwenden:
Heute einen Link von Pollin bekommen klick (http://www.pollin.de/shop/dt/MTg3ODQ2OTk-/Stromversorgung/Netzgeraete/Festspannungs_Netzgeraete/Open_frame_Schaltnetzteil_BFE05SX_U1_5_V_30_A_150_ W.html?utm_source=newsletter&utm_medium=email&utm_campaign=weekly_2013-kw9b) zwar nur 5V, aber die 30A sollten ausreichen zum basteln. Da dann einen kleinen Holzkasten drumgebaut uns man hat ein schönes Netzteil. (E: seh gerade, das NT ist schon ausverkauft..)

ist 2) auf die Mechanik zurückzuführen oder fehlt deinen Servos einfach der Strom?

Und die Sache mit dem Geld, wie war noch mal die Deffinition eines Hobbys? :)

HannoHupmann
04.03.2013, 13:16
1) Ich habe mir in der Arbeit mal ein 12V - 38A Netzteil organisiert, damit sollte auf jedenfall genug Bumms vorhanden sein um den SBEC an die Grenze von 5A zu bringen. Ob das schon ausreicht bezweifle ich, denn das Datenblatt der Schulter-Servos besagt 1.8A bei Haltemoment. Würde also 10,8A nur für die Schulterservos bedeuten. Die anderen Servos werden nicht so hoch belastet aber ich denke da kommen nochmal 5A dazu. Ich überlege ob ich nicht auf dein SBEC mit 20A aufrüste um genug Leistung zur Verfügung zu haben.

2) Die Federelemente wurden nun mechanisch außer Funktion gesetzt und jetzt sieht es schon etwas stabiler aus!

malthy
04.03.2013, 13:28
Ich überlege ob ich nicht auf dein SBEC mit 20A aufrüste um genug Leistung zur Verfügung zu haben.


Meinst du nicht dass es sinnvoller ist erstmal grundsätzlich die Funktion sicherzustellen und die Sache erst dann weiter zu "verkomplizieren"? Also ich würde deshalb erstmal alle DC/DC-Wandler u.ä. weglassen und direkt mit einem NT versorgen das sicher genug Leistung hat. Ich greife da gerne zum XT-Netzteil weil man davon i. d. R. doch sowieso noch irgendwo eins rumliegen hat und die nun wirklich genug Dampf haben. Wenn das sicher funktioniert kann man ja auf die Akku-Versorgung umsteigen. Wenn's dann nicht geht weiß man zumindest mal sicher woran es liegt.

HannoHupmann
04.03.2013, 18:30
Die Messungen heute, haben mir gezeigt, dass es wohl nicht an den fehlenden Ampers liegt sondern an etwas anderem.

Ein Bild sagt mehr als Worte und ein Video vom Oszi noch mehr!


http://www.youtube.com/watch?v=Q56bsVjThFQ&amp;feature=youtu.be

Wie ihr sehen könnt sollte die Spannung konstant bei 6V liegen. Ein Kästchen entspricht 1V.
Nachdem alle Beine nacheinander initalisiert werden, fluktuiert die Spannung bereits fast um ein ganzes Volt
Wärend der Bewegung sogar um 2V und stabilisiert sich nach erreichen der Position wieder auf 6V.
Wird dann die Anfangsposition angefahren bricht die Spannung unter 3,5V ein und die Servos bekommen keine korrekten Steuersignale mehr, es kommt zum "Kammerflimmern". Dir Folge sind wild zuckende Servos, was dann manuell abgeschaltet wird.
Die Restladung der Kondensatoren hält den Pegel noch für einen Moment hoch und sinkt dann aber ab auf 0V.

So jetzt die Gretchenfrage:
Was kann man degegen tun?

schorsch_76
04.03.2013, 18:53
Wie ist der Leitungsquerschnitt und wie viel Ampere fliessen?
Steckverbinder in der Kette?

Das war mal bei mir das Problem ....

Gruß
Georg

malthy
04.03.2013, 19:17
Wieso denkst du dass es nicht an der Leistung der Stromversorgung liegt? Mit jeder Bewegung bricht doch die Spannung ein. Es muss nicht direkt das Netzgerät sein, wenn du noch Schaltwandler o.ä. dazwischen hast können es ja acuh die sein (Wo ist das denn gemessen, direkt am NT oder an einem Servo?). Deswegen würde ich wie gesagt erstmal versuchen die Servos möglichst direkt mit einer definitiv ausreichend großen Quelle zu versorgen.

HannoHupmann
04.03.2013, 22:24
@malthy leider habe ich keine "ausreichend große Quelle" mit der ich direkt auf die Servos gehen kann. Ich habe ein 3A Labornetzteil zu Verfügung, das mir die benötigten 6V liefert. Damit laufen die Servos halbwegs stabil - sprich sie fallen nicht unter die kritische Spannung bei der die Servologik zusammenbricht (das dürfte so bei >3,3V passieren). Allerdings "wackelt" das Signal immernoch sehr stark. Gemessen ist am Verteilerkonoten wo von dem aus die Ringleitung der Servos gespeist wird.

@schorsch. 2mm Außendurchmesser. Die Ampere kann ich nur nur bedingt messen bisher fließen 1,irgendwas laut meinem Multimeter. Stecker gibt es leider sehr viele im System, bedingt durch die Servostecker und Stromanschluss selbst.


In Beitrag #126 ist ein Bild meiner Stromversorgung. Bisher ist hier ein SBEC mit 6V - 5A verbaut als Schaltregler. Meine Vermutung ist im Moment, dass dieser nicht außreicht, da die Schulterservos im Haltemoment jeder 1,8A ziehen können. Damit würde ich auf über 10A kommen und damit außerhalb dieses SBEC arbeiten.

malthy
04.03.2013, 22:53
Hast du nicht irgendwo noch ein altes PC XT-Netzteil rumliegen? Oder einen alten PC mit Netzteil? Ich habe mir für solche Zwecke meistens ein paar aufgehoben. Die sind für solche Zwecke ja ganz gut geeignet. Du könntest ja zB auch mal gucken, ob die Spannung nur nach dem/den SBEC(s) einbricht oder auch davor. Wieviele SBECs hast du denn eigentlich pro wieviele Servos verbaut?

robin
05.03.2013, 07:50
Vllt. ist das was für dich, kam letztens im Pollin Newsletter:
5V - 30A: http://www.pollin.de/shop/dt/MTg3ODQ2OTk-/Stromversorgung/Netzgeraete/Festspannungs_Netzgeraete/Open_frame_Schaltnetzteil_BFE05SX_U1_5_V_30_A_150_ W.html?utm_source=newsletter&utm_medium=email&utm_campaign=weekly_2013-kw9b

HannoHupmann
05.03.2013, 11:39
Bisher ist nur ein SBEC eingebaut für 18 Servos also einer mit 5A, das sollte eigentlich nicht ausreichen, wie ich jetzt berechnet habe.
Heute kann ich in der Arbeit ein altes Netzteil ausleihen, damit werde ich dann mal eine Messung machen. So was habe ich nämlich nicht rumliegen, ich entsorge sowas in der Regel zeitnah, da ich kaum Lagerplatz für sowas habe.

Ein Arbeitskollege meinte auch, dass ich Ferritkerne einsetzen sollte - direkt vor den Servos. Allerdings sehe ich das eher als zusätzliche Sicherheit und weniger als die Lösung des Problems.

Den Leitungsquerschnitt der Stromversorgung muss ich auch noch vergrößern, am besten mache ich mir dann auch gleich neue Platinen für die Beine, denn die sind irgendwie nix, die ich da im Moment habe.

malthy
05.03.2013, 11:48
Bisher ist nur ein SBEC eingebaut für 18 Servos also einer mit 5A, das sollte eigentlich nicht ausreichen, wie ich jetzt berechnet habe.

Ja, das würde ich auch so sehen, das reicht auf keinen Fall für 18 Servos unter Last, insb. nicht bei Spitzen die bei Positionsänderungen - und dann ja acuh noch bei vielen Servos gleichzeitig - auftreten.

schorsch_76
05.03.2013, 13:28
Nach dem Foto in #126 scheint die Isolierung aussen max. 2 mm zu haben. Vermutlich wird dann das Kabel sicher kein 1.5 mm² sein. Laut Elektrohandbuch sind ja bei 1.5 mm² 16A zulässig. Das hat ja exkat den Grund der Leitungserwärmung/Brandgefahr. Hier kommt auch noch der Übergangswiederstand in den Klemmen mit sicher 0.1 Ohm. Bei 15 A sind das allein an den Schraubklemmen 1.5V Spannungsabfall auf einer Leitung. Dazu kommt noch die Masseleitung auf welcher ja derselbe Strom fliesst. (1.5V). Dazu die relativ dünnen Leitungen und das ganze ist ziemlich erklärt.

Versuch mal parallel direkt von der Spannungsquelle ein dickes Kabel >= 2.5 mm² so nah wie möglich direkt an die Servos zu bringen. Reduktion der Übergangswiderstände und Verluste an den Kabeln. Eventuell würde eine Sternverdrahtung der Spannungsversorung mit dickeren Kabeln ohne (oder mit wenig Klemmen) einen Ausweg bieten.

Gruß
Georg

HannoHupmann
05.03.2013, 15:28
Hab schon dickere Leitungen mit 2mm Leitungsquerschnitt besorgt und werde heute nochmal eine neue Stromverteilung aufbauen. Ist es besser einen Ring zu bauen oder doch lieber einen Stern?

Wenn ich die Elektronikprobleme im Griff habe, dann mach ich mich an die Mechanik!

HannoHupmann
05.03.2013, 18:04
Jetzt habe ich zwar ein Netzteil aber mehr als die 5V Standby Spannung bekomm ich nicht raus. Ich habe Grün mit GND Kurzgeschlossen und für einen kurzen Moment konnte ich auch eine 12V Halogenlampe zum Leuchten bringen, aber jetzt tut sich nix mehr!

Jemand eine Idee was ich noch machen könnte?

schorsch_76
05.03.2013, 18:22
Hallo Hanno!

Ich würde einen Stern versuchen.

Mit den Atx Netzteil kenn ich mich nicht gut aus. Kann dir hier nicht helfen .... sorry.

Gruß
Georg

malthy
05.03.2013, 18:35
Das grüne Kabel nach Ground ziehen ist korrekt. Es kann sein dass die 5V Schiene belastet sein muss damit das NT funktioniert, bei älteren Netzteilen war es auf jeden Fall so. Du könntest mit einem (Leistungs-)Widerstand an dem 5V Ausgang für etwas Grundlast sorgen. Vielleicht tuts auch deine Halogen-Lampe, aber wie gesagt an 5V.

HannoHupmann
05.03.2013, 20:19
@Malthy habe ich ausprobiert, aber funktioniert leider nicht - zumindest nicht mit einer Hallogenlampe, allerdings funktioniert es auch nicht, wenn ich meine Servos an 5V direkt anschließe. Ich denke das ATX Netzteil bringt mich hier nicht weiter, da ich keinen Leistungswiderstand im Haus habe.

Wenn ich mir den Spannungsverlauf mit nur einem aktiven Bein anschaue, habe ich auf dem Oszi etwa alle 2,x ms einen Spannungseinbruch. Dabei ist es egal aus welcher Quelle ich das Bein versorgen. Wenn alle Servos in Position sind, bleibt die Spannung konstant auf 6V, wird ein Servo ein bischen belastet, dann bekomme ich die regelmässigen Spannungseinbrüche von etwa 1 bis 2V . Sieht für mich irgendwie danach aus, als wenn die Servos ihre Position dabei aktuallisieren und für den Moment zuviel Leistung brauchen, was das Versorgungssystem nicht bereit stellen kann. Normalerweise kann man solche Spannungseinbrüche mit einem Kondensator glätten und ich dachte mit 2200µF schon eine ganz ordentliche Glättung eingebaut zu haben, doch mein Test am Labornetzteil und zusätzlichen Kondensatoren hat mit eines besseren belehrt.
Mit 7x2200µF erreiche ich eine halbwegs saubere Spannung (-0,5V) bei zwei voll belasteten Beinen. Es scheint wohl, dass ich hier einfach ein paar dicke Elkos brauche um die Spannung glatt zu ziehen.

HeXPloreR
06.03.2013, 08:42
Hallo,

ist es nicht so das Elkos etwas träge beim entladen sind? Sind Kerkos da nicht besser geeignet?

HannoHupmann
06.03.2013, 09:01
@HexPlorerR schon richtig, dass die Elkos "träger" sind, aber da ich Minimum 6800µF pro Bein brauche um die Spannung zu glätten, würde ich mit Kerkos nicht glücklich werden. So ein 100nF bringt da leider gar nichts. Zudem sind die Servos aus sehr träge in ihrer Leistungsaufnahme. Die Spannungseinbrüche erstrecken sich etwa über 0,5-1ms also eher große Spitzen. Ein Kerko wäre wohl eher für Spitzen im MHz Bereich geeignet.

Bammel
06.03.2013, 16:17
Hast du es mal einen LiPo Akku un betrach gezogen?
Das ganze soll später ja eh unangebunden unterwegs sein, gehe ich mal von aus.

So ein LiPo Akku kann sehr hohe Ströme liefern und ist ja im Prinzip ein riesen Kondensator.
Mann muss ihn halt nur gut behandeln, dann geht von ihm keine gefahr aus und die lebensdauer ist auch recht lange

HannoHupmann
06.03.2013, 22:29
Bammel: Auch die Tests mit den LiPos haben gezeigt, dass es nicht funktioniert. Denn der Lipo aggiert vor dem SBEC und damit bekommt er die ganzen Spannungseinbrüche gar nicht mit und kann diese auch nicht "kompensieren". Ich bekomm morgen mein neues SBEC wie es scheint und dann werde ich mal weiter daran arbeiten.

Vermutlich brauch ich dann auch jemanden der mit neue Platinen fertig für die "Verteilerknoten".

Außerdem zeichne ich gerade neue Beine um auch hier gleich mein Mechanikproblem zu lösen. Zumal mir da eine schöne Idee gekommen ist, wie ich sowohl Beine als auch Körper weiter verwenden kann und nur die Oberschenkel und Schultergelenke neu machen müsste.

HeXPloreR
07.03.2013, 15:54
Hallo Hanno,

hattest Du nicht mal was von "Akku direkt in Servo" irgendwo gesagt - ich frage mich was dieses SBEC da zu suchen hat?

Warum hängst Du die Servos ncht direkt an, und nur das PWM kommt dann vom µC?
Damit holt sich jedes Sevo den Strom den es vom Akku ( ich gehe von LiPo 7,4V aus) benötigt...ohne das ein SBEC den Strom auf z.B. 5A hält und alles darüber blockiert.
Ein SBEC benötigt man doch nur damit ein Akku nicht in "unvernünpftiger" Zeit vom Bediener, oder durch Fehler, leergesaugt und beschädigt wird. Oder die Spannung runtergeregelt werden muss...
Beides sehe ich hier nicht unbedingt.

Ist doch quatsch - sorry, aber ist es nicht so?

HannoHupmann
08.03.2013, 07:09
Ganz einfach, ein LiPo liefert zwischen 8,4V und 7,2V je nach Ladezustand und meine Servos sind auf 6V ausgelegt. Klemm ich die diese also an die 8,4V wird es unvernünftig heiß und die BlueBirds halten diese Spannung auch nur bedingt aus. Also bekommen sie ein SBEC davor, welches die Spannung auf 6V legt. Akku direkt in Servos habe ich nur bei meinem Phoenix² Projekt gemacht und die HiTec Servos sind in der Spannungsversorgung auch "toleranter". Abgesehen davon ist es nur bedingt ein SBEC Problem sondern mehr eines der Servos.

Genau das ist übrigens auch der Job vom SBEC, das was du beschreibst klingt mehr nach einer Strombegrenzung.

HeXPloreR
08.03.2013, 08:45
hmm, ja ist mir schon klar das ich eher auf den Strom gerichtet war. Ich habe mir die von Hobbyking angesehen, dort steht z.B. dran 5V/6V-5A konstant. tja, deshalb zielte ich darauf ab.

Okay, dann müsste man wohl ein oder sogar zwei zusätzliche einbauen um den Strom von z.B. 5A pro SBEC nicht zu übersteigen.
Allerdings finde ich diese Lösung wirklich etwas teuer.

HannoHupmann
08.03.2013, 10:05
Richtig, daher habe ich den SBEC 5A / 6V jetzt auch durch einen ersetzt - oder werde ich sobald ich dazu komme den einzubauen (also heute :-D) - der 20A kann. Das sollte, dann hoffentlich reichen!

Die 5A / 6V Version werde ich dann verkaufen - jemand Interesse? Ansonsten geht die nachher ins Unterforum und dann in die Bucht.

Am Wochenende werde ich wohl die CAD Teile fertig machen und auch die neuen Platinen pinseln. Für beides muss ich dann wieder kostengünstige "Hersteller" finden, da ich das Zeugs nicht selber machen kann.

HannoHupmann
08.03.2013, 18:45
Problem gelöst! :-D

1) Der SBEC ist viel zu schwach ausgelegt gewesen, jetzt habe ich einen der kann 20A!
2) Die Pufferkondensatoren waren zu klein, wenn man 6x 6.800µF (!) verbaut, dann bleibt die Spannung ein gerade Strich bei 6V!
3) Die Leistung meines Netzteils wird niemals ausreichen, denn ich habe in Bewegung unter Last (einfaches absenken und anheben) bis zu 7A gemessen. (das Netzteil, dass ich gerade habe kann bis zu 32A leisten, ist aber leider nicht meines sondern aus der Arbeit geliehen).

Es zeigt sich also, wenn man einen Hexa dieser Größe und Leistungsklasse bauen will, dass es notwendig ist die Strombelastung genauer zu betrachten. Ich bin hier ziemlich unbedarft rein gegangen und dachte, dass es kein Problem sein müsste.

Nächster Punkt auf der Liste:
- den fliegenden Aufbau wieder richtig zusammensetzen
24757

- Günstiges 12V 20A Netzteil auftreiben
- Neue Platinen machen für die Energieversorung
- Platinen ätzen lassen
- CAD Teile fertig machen
- Teile fertigen lassen

Alles wieder zusammen bauen ^^

movido
08.03.2013, 19:09
OK, so entkoppelt man eine Stromversorgung bei der auf der einen Seite Elektromotors für Noise ohne Ende sorgen, und auf der anderen Seite schöne flache 5V rauskommen sollen. Die Schaltung ist getestet und funktioniert.


Der Akku geht einmal direkt an die Servos. Bau bloss nicht dazwischen. Jedes Bauteil macht bei den Spitzen, die die Servos saugen, ärger. NiCad's packen das weg, und LiPo's sollten das auch.

Die 5V nimmst Du so vom Akku: zuerst durch eine Drossel um den Noise zu glätten (wieviel Henry weiss ich leider nicht mehr), dann in Serie ein Diode, damit Stromspitzen in den Servos Dir nicht den Strom aus den Entkoppelkondensatoren klauen. Dann 1000uF und 0.1uF nach Masse, dann den 78L05 oder ähnlich, dann noch einmal 47uF und 10nF an Masse.

Nach der Siebung sollte jeder Kontroller glücklich sein!


24758

HannoHupmann
08.03.2013, 19:45
Hallo Movido, im Prinzip mach ich genau das. Nur dass es bei mir über einen Ferritspule und einen SBEC (statt des 78L05Z, der nur 100mA liefern würde) geht - der die Spannung nicht in Wärme verbrät sondern wandelt, was mir persönlich lieber ist. Außerdem reichen die Kondensatoren nicht aus um die Spannungsspitzen meiner 18! Servos zu fangen. Da braucht es etwas mehr µF (siehe oben 6800µF x 6 und alles ist bestens). Ich hatte es ursprünglich mit 2200µF und 100µF versucht, aber das reicht nicht! Wir reden hier nicht über Logik-Pegel von 5V die glattgezogen werden sondern über Leistungselektronik. Für die Logik hab ich es ziemlich genau so wie du es skizziert hast (abgesehen von der Spuhle, da ich hier keine hohen Ströme ziehe).

Deinen Punkt mit den "Bauteilen dazwischen" werde ich aber berücksichtigen und meine Stromverteilung nun etwas direkter realisieren. D.h. direkt vom SBEC zu den Servoverteilerplatinen. Dort die 6.800µF plaztieren und Stecker mit Goldkontakten anbringen. Weiter wird es dort bessere Stecker für die Servos geben und damit die Übergänge verringern. Die Platinen muss ich nun erst noch Layouten und dann machen lassen. Außerdem bekommt jeder Servo noch einen Ferritkern (Spuhle) direk am Gehäuse. Damit sollte dann alles glatt und gut sein.

movido
08.03.2013, 23:26
Hmm, bin mir nicht sicher, ob ich das verstehe. Auf der Servoseite brauchst Du überhaupt nicht glatt zu ziehen. Sicher, klar,, Leistungselektronik, aber die Servos vertragen normalerweise so ziemlich alles, denn das müssen sie im Modellbau ja auch. Also den Plus- und Minuspin von den Servomotoren würde ich wirklich direkt an den Akku tun. Ist bei meiner Spinne mit 24 Hochleistungsservos auch so. Die Steuerleitung geht direkt an den Controller, und der sitzt hinter der oben beschriebenen Elektronik. Der Controller brauch ein paar Milliampere, so dass die angegebenen Kondensatoren dicke ausreichen. Die Diode sorgt dafür, dass die Motoren nicht an die Kondensatoren kommen. Was die Motoren ziehen kann ich niemals mit Kondensatoren glätten. Grosse Kondensatoren glätten übrigens nur niedrige Frequenzen. Kleine Kondensatoren glätten die hohen. Daher hast Du auch auf beiden Seiten mindestens zwei.

Vielleicht habe ich auch was nicht mitgelesen und Du brauchst mehrere Ampere auf der Logikseite?

Achja, und fast alles ist besser als der 78L05Z. Hatte ich halt noch in der Grabbelkiste.

HannoHupmann
09.03.2013, 00:56
Ich kann schlicht und ergreifen die Servos nicht direkt an den Akku hängen.

movido
09.03.2013, 14:42
Da fällt mir jetzt auch nichts mehr ein. Ich beschränke mich dann erst einmal wieder auf's mitlesen ;-)

HannoHupmann
09.03.2013, 17:12
@movido nicht doch ;-)! Die BlueBird Servos sind einfach nicht für 7,2V - 8,4V ausgelegt und ich habe zwei oder drei auf dem Gewissen, weil ich es nicht glauben wollte. Eben keine besonders guten Servos, aber die habe ich nun mal verbaut. Ein Fehler den ich nun nicht wieder einfach ändern kann und ich hatte am Anfang auch gedacht ich könnte das einfach so machen wie beim Phoenix² und wie du es skizziert hast. Meine Spannungseinbrücke sind im Bereich der niedrigen Frequenzen und daher brauch ich große und dicke Dinger, so ein paar µF reichen da einfach nicht. Erst als ich mir das ganze auf dem Oszi angeschaut habe konnte ich es selbst glauben, vor allen wenn du nacheinander deine 2200µF einsteckst und erst bei 15,3mF eine sichtbare Glättung erreichen kannst, bei zwei Beinen! Auch hier mach ich die BlueBirds verantwortlich die sind auch in dem Punkt einfach mies.

Bei der Logikversorgung bin ich im Moment bei einem 9V Block und einem Step-Up der 12V generiert, einem Spannungsregler für 5V und danach nochmal einer auf 3,3V. Irgendwie schon komisch, wenn ich bedenke, dass ich nun vier verschiedene Spannungen auf dem Hexa habe: 12V, 6V, 5V und 3,3V! Die Spannung der Servos 6V wird jetzt mit 40800µF (!) abgepuffert. Das klingt im ersten Moment nach overkill aber weniger führt sofort wieder zu "wackelnder Spannung". Abgesehen davon

HannoHupmann
10.03.2013, 15:43
Wie angekündigt nun die neue Version des CAD Modells. Ich bin gespannt ob ihr noch Verbessungsvorschläge habt.

http://skfb.ly/5k3h1dc

MisterMou
10.03.2013, 16:37
Tolle Idee, ich hätte aber ein Vierkantrohr genommen, das neigt weniger zum Verdrehen, als ein "U". Vom Gewicht wird sich das nicht sonderlich bemerkbar machen.

HeXPloreR
10.03.2013, 17:43
Na,
mal abgesehen davon das ich nur die Grafik sehen - sie aber nicht drehen und zoomen kann.

Und wohin ist denn jetzt diese ganze Konstruktion mit den Flachriemen und die ganze Lagerung? Diese sollten doch die Schwingungen aufnehmen.

Sehe ich dort jetzt eine doppelte Ausführung der Servos am Unterschenkel?

Magst Du die Ansicht von "unten für einen Unterschenkel" hier noch mal zeigen?
Konkret geht es mir um die Befestigung des U-Profils zwischen den beiden Servos.

Da Du ja weiterhin schon gefertigte Teile weiter benutzen möchtest, wird es schwierig Verbesserungsvorschläge sinnvoll anzusetzen.

HannoHupmann
10.03.2013, 19:09
@MisterMou ? Lustig, da ich im ganzen Roboter kein U-Profil verbaut habe, weis ich jetzt nicht was du meinst. Vermutlich den Oberschenkel: der besteht aber aus zwei Flachprofilen und einer Abdeckung, die wiederrum die LED difus machen soll und sonst keine konstruktive Funktion hat. Ich bin mir allerdings selber nicht ganz sicher ob die beiden 2mm CFK Streben ausreichen und in der dargestellten Konstruktion die Verdrehung ausreichend verhindern. Zur Not könnte man auch nache der Schulter nochmal einen Klotz einbauen.

@HeXPloreR. Das muss an deinem Browser liegen, bei mir funktioniert es einwandfrei mit Firefox. Scheint da wohl noch Probleme zu geben. Ich habe aber unten nochmal ein paar Screenshots angehängt. Die Flachriemen und die ganze Lagerung fliegt raus, denn a) funktioniert das Konzept überhaupt nicht und es kann auch nicht funktionieren, da der Federweg für eine solche Lagerung zu klein ist bzw. ich keine passenden Federn dafür bekomme. b) Die Schwingungen werden nicht aufgenommen sondern der Roboter gibt einfach nur nach und macht die Grätsche was sehr unschön für alle Servos ist.

Weiter verwenden kann ich nur die Füße selbst und die Lagerklötze sowie ein paar der Klötze die die Servos halten, alles andere wird wohl oder übel neu gemacht werden müssen. Den Körper würde ich auch gerne behalten, denn der wäre sehr teuer aufgrund der Abmessungen. Auf den Bildern sieht man auch die Farben und damit auch besser welche Teile ich brauche.


24776
24777

Materialien:
Gelb = Dibond 4mm
Blau = CFK 2mm
Grau = Aluminium 2mm
Weiß = PVC
Braun = festes Balsaholz ?? (keine Ahnung ob das ausreicht)
Grau/Transparent = Lexan

ich muss mal kucken ob man nicht auch bessere Modelle bei Sketchab hochladen kann, das was jetzt drin ist macht die Rundungen schon sehr eckig!

MisterMou
10.03.2013, 19:24
Ahh :)
Wenn man nicht weiß, dass es drei Teile sind, interpretiert man den Oberschenkel als ein "U". Dem 3D Modell fehlen nämlich sämtliche Farben ;)
Allerdings ist das noch instabiler, ich neige aber auch immer dazu, ein Panzer bauen zu wollen...

Dann lass doch das Balsaholz weg und kante die beiden Seiten des Oberschenkels ab, müssten dann aber aus Alu sein.

HeXPloreR
10.03.2013, 19:42
Danke Dir.

Ich würde den Unterschenkelservo in den Unterschenkel einbauen, so wie Du es vorher hattest. Also eigentlich den Servo mit dem Balsaholz tauschen.
Die Halterbleche (das was jetzt am Balsaholz sitzt) würden dann den Hüftservo einschliessen.
Der Übergang vom Holz zum nicht U-Profil gefällt mir irgendwie garnicht. Wenn der Servo da nicht hin soll/kann/darf dann würde ich auch wenigstens dort ein U-Profil bis runter zum Unterschenkelservo einplanen. Oder zumindest diese beiden Bleche direkt mit Abstandshalter irgendwie verbinden, damit sich da nichts verdreht.
Ich denke nämlich das sich dort alles bewegen wird - und das will doch keiner haben.
Die Schrauben könnten komplett durchgehen + Abstandshülsen in der Mitte. Am besten noch mit Flansch auf beiden Seiten. Aber nur wenn das mit dem Balsaholz/Servo so bleiben soll.

Wenn man tauscht muss man wieder schauen wie man die beiden verschieden großen Servo auf der Gegenseite stabil zusammen bekommt.

Balsaholz?
Also dazu kann ich nur sagen entweder in Harz tränken oder Rohre um die Schrauben machen, die Löcher etwas großer dafür. Dann hat man noch etwas Querstabilität vom Holz...welches man irgendwann mal durch mindestens Kunststoff ersetzen sollte ;)

Gefühlt wird Dir Deine Lexanabdeckung dort momentan bei der ersten Belastung brechen, wenn es denn überhaupt belastet wird.


Meine GraKa kann wohl einfach kein WebGL verstehen ;)

HannoHupmann
10.03.2013, 23:08
@MisterMou, eigentlich will ich da kein Alu verbauen sondern CFK und ich versteh nicht ganz was du mit "abkanten" meinst bzw. wie das später aussehen soll, da fehlt mir gerade das Bild dazu.

@HeXPloreR: Der Grundgedanke dahinter war es so wenig Maße wie möglich in den Beinen zu haben bzw. so nah wie möglich am Körper. Der Grund ist sehr einfach, je mehr Masse ich im Oberschenkel und Fuss verbaue, desto mehr Massenträgheit muss ich bewegen. Allerdings gebe ich dir recht, dass ich mit der Lösung selbst noch nicht so ganz glücklich bin. Eben wegen dieser braunen Klötze. Wenn ich den Servo allerdings im Unterschenkel verbaue, dann muss ich auch irgendwie die Anbindung an den Hüftservo realisieren, da ist mir ehrlich gesagt nichts eingefallen. Ich hatte mal ein Konzept wo die beiden Servos gestapelt werden, nur dann kann ich den Grundkörper nicht mehr nutzen, da die Beine dann zu schnell an diesem anstoßen. Da ihr Beide bedenken habt bzgl. "Verdrehen des Oberschenkels" muss ich hier wohl doch noch eine Distanzhülse oder sowas einplanen. Das Problem hatte ich schon bei meinem Phoenix², dass die Füße sich zu viel bewegen aufgrund der Mechanik.

Noch habe ich keine Teile bestellt oder gekauft, daher kann ich alles ändern, vor für den Verbindungsteil Oberschenkel Hüfte würde ich gerne noch eine bessere Lösung finden.

MisterMou
11.03.2013, 06:51
Wo ist das Problem mit Alu? Ich versuche alles daraus zu fertigen, so viel zu CFK/GFK fehlt da auch nicht und es ist viel gesünder für Mensch und Maschine.
So habe ich mir das vorgestellt:
http://www.abload.de/thumb/attachmentu1k60.png (http://www.abload.de/image.php?img=attachmentu1k60.png)

HannoHupmann
11.03.2013, 07:50
Ah ok, das meinst du. Das hatte ich auch schon überlegt und als Königsweg angesehen, doch leider habe ich keine Möglichkeit gesehen dieses Profil kostengünstig fertigen zu lassen, vor allen so genau, dass ich am Ende alles wieder richtig zusammen bauen kann. Auch wenn ich bereit bin einiges für neue Beine zu investieren, so gibt es trotzdem irgendwo auch eine Grenze.
Besteht bei deinem Vorschlag nicht auch die Gefahr, dass sich der Oberschenkel verwindet? Bisher wurde das bei der jetzigen Konstruktion am meisten bemängelt und ich würde die neuen Beine gerne sehr verwindungssteif ausprägen. Die Füße selbst sind in dem Punkt schon sehr gut und bei der Schulter sehe ich nun auch kein großes Problem, bleibt also nur der Oberschenkel und die Anbindung an die Schulter.

Vorteil bei Alu wäre eben, dass ich viel mit Ausschnitten arbeiten könnte, wobei CFK/GFK natürlich viel leichter ist.

HeXPloreR
11.03.2013, 08:46
wie möglich in den Beinen zu haben bzw. so nah wie möglich am Körper. Der Grund ist sehr einfach, je mehr Masse ich im Oberschenkel und Fuss verbaue, desto mehr Massenträgheit muss ich bewegen. Allerdings gebe ich dir recht, dass ich mit der Lösung selbst noch nicht so ganz glücklich bin. Eben wegen dieser braunen Klötze. Wenn ich den Servo allerdings im Unterschenkel verbaue, dann muss ich auch irgendwie die Anbindung an den Hüftservo realisieren, da ist mir ehrlich gesagt nichts eingefallen. .

Tausche es um, wie bei Deinem alten Entwurf, mit den Haltern am Hüftservo.
Da hast aber recht mit der Massenträgheit, allerdings hast Du jetzt einen längeres Bein.
Wenn Du tauschst hast Du zwar wieder mehr bewegte Masse, aber kannst näher an den Hüftservo gehen mit dem Gelenk vom Oberschenkelservo, oder? Und das Bein kann etwa 20-30mm kürzer werden. Oder kommt dabei nicht ungefähr soviel an mm rum?

HannoHupmann
11.03.2013, 12:01
Der Abstand wischen Fussgelenk und Schulterservo ist genau gleich geblieben, hier habe ich nichts verändert, sieht nur optisch länger aus.

Ich bin mir nicht ganz sicher ob ich deine Idee schon richtig verstehe. Du willst Schulter-Oberschenkel Servo von der Position her tauschen? D.h. dass er im Oberschenkel verbaut ist, dann habe ich aber das Problem, wie ich diesen an die Hüfte anbinde mit den entsprechenden Lagern. Von der Breite wird sich dadurch nichts verändern und von der Gesamtlänge des Beines eigentlich auch nicht - soweit ich das jetzt verstehe. Die Servoachse möchte ich nämlich schon als Gelenkachse verwenden - ansonsten muss ich wieder mit Zahnriemen o.ä. arbeiten.

HeXPloreR
11.03.2013, 15:54
Danke Dir.

Ich würde den Unterschenkelservo in den Unterschenkel einbauen, so wie Du es vorher hattest. Also eigentlich den Servo mit dem Balsaholz tauschen.
Die Halterbleche (das was jetzt am Balsaholz sitzt) würden dann den Hüftservo einschliessen.
....Huch, ich meinte natürlich den Oberschenkelservo in den Oberschenkel einbauen.... :)

Ja, naja ich dachte so wie Du es schon hattest: Ich habe mir mal erlaubt eine Bild von Seite 13 etwas umzustricken....natürlich nur mit Paint ;)

24778
Kurze beschreibung: Der Oberschenkelservo liegt jetzt mit dem Abstand vor dem Hüftservo den er braucht um die gewünschte Bewegungsfreiheit zu behalten. Die Aluschienen die seitlich am Hüftservo angebracht sind werden "aufgedoppelt" damit sie auf der (auf dem Foto) sichbaren Seite entwerder das Gegenlager mit dem Servoboden bilden, oder auf der anderen Seite. Dementsprechend wird die Servohorn auf der gegenüber liegenden Seite auch an so eine Aluschiene befestigt. Damit hat man den Oberschenkelservo eingefasst, nur der Hüftservo ist dadurch etwas breiter wegen der Aufnahemkonstruktion für den Hüftservo geworden.

Im Grunde sieht der Aufbau dem Teil mit dem Fußservo auch sehr ähnlich. Nur das der Oberschenkelservo ja etwas Höher ist und daher dort eine stabile Verbindung geschaffen werden müsste.
24779

HannoHupmann
11.03.2013, 18:00
Verstanden, zumindest weitesgehends ;-).

Die Idee ist gut, auch wenn mir das Gegenlager am Servoboden nicht gefällt, hier hätte ich dann doch gerne eine andere Lösung. Falls ich aber wirklich auf Frästeile gehe wäre es vermutlich so einfacher. Ich muss nochmal ein wenig darum im CAD rumspielen vielleicht kommt mir noch eine andere Lösung.

HeXPloreR
11.03.2013, 18:58
he he, die Idee ist ja eigentlich Deine Eigene ;)

Das Gegenlager überlasse ich Dir gerne. Ich würde einfach das nehmen was Du da in PVC gezeigt hast. Also nicht so direkt am Servoboden :)

Naja Frästeile hattest Du ja jetzt auch.
Ich denke man könnte sämtliche Teile sogar selbst im Schraubstock per Hand herstellen, wenn man mit den Toleranzen daduch klarkommt. Da wird dann schon mal ein Teil was man eigentlich 6x (gleich) hat, jedesmal ein Unikat ;)
Blau und grün aus Alu, das braune aus PVC - ohne großartige Kanten und Absätze.

Zwei einfache U-Blöcke. Über den Servo schieben. Mit dem blauen Aluhalter verschrauben.
24780

HannoHupmann
12.03.2013, 09:44
HeXPloreR mit der Idee bin ich gestern ein wenig weiter gegangen im CAD und beim Oberschenkel und insbesondere bei der Lagerung des Servos ist mir nun schon eine Lösung gekommen mit der ich gut leben kann. Für die Hüfte habe ich auch schon eine Idee sie ist ähnlich zu deiner, aber ich werde den Servo um 90° drehen. denn er ist ungefähr so lang wie der andere Servo breit ist. Daraus ergibt sich eine gute Lösung, ich schau, dass ich heute Abend mal ein paar Bilder zeigen kann.

Das mit dem Fräsen und Fertigen generell ist so eine Sache, ich fertige eigentlich fast nicht mehr selber, dafür fehlt mir die Zeit und auch die technischen Möglichkeiten. In der Arbeit gibt es ein Bandsäge, eine Standbohrmaschine und eine Schleifband das ich nutzen kann.

2D Teile lasse ich Laserschneiden, was recht kostengünstig ist
3D Frästeile - hab ich bisher vermieden, da ich keinen Kontakt zu einem CNC Fräser habe und eine Lohnarbeit bei einer Firma jeden finanziellen Rahmen sprengt.

HeXPloreR
12.03.2013, 10:08
Das mit dem 90° gedrehtem Hüftservo ist ne gute Idee - nutzt vorhandenes Servogehäuse aus und spart zusätzlichen Material und Gewicht.
Die Befestigung sollte ähnlich möglich sein, wie angedeutet.

Das habe ich übrigens - allen Unkenrufen damals zum trotz - an dem Bioloid-Bausätzen zu schätzen gelernt. Ein fertigens System, welches viele (nicht alle) Möglichkeiten zur Kombination schnell und einfach bereitstellt. Teileweise reichte es schon sich 2-3 Dynamixels mit einigen Frames zusammen zu stecken und hatte eine funktionierende Ausgangsgrundlage - oder auch nicht ;)

Einige Frames habe ich verändert um Nachteile lokal zu entfernen ...oder das Lochmaß auf Aluwinkel "kopiert" und eingebaut.

HannoHupmann
12.03.2013, 11:59
Liegt irgendwie in der Natur der Sache bei einem Bausatz, dass es variabel zusammen gebaut werden kann. Nur bin ich kein Fan von Bausätzen, da ich so gerne selber Tüftel und mir Gedanken mache. Ist ja nun nicht so, dass mich diese CAD Konstruieren und Schaltungen ausdenken nervt. Ganz im Gegenteil, ich kann dabei wunderbar entspannen. Daher freu ich mich schon darauf heute Abend die Teile weiter zu pinseln und dann mal kucken wie ihr diese Lösung findet.

HannoHupmann
12.03.2013, 22:20
Nachdem ich mit der ersten Lösung nicht ganz zufrieden war, habe ich in den letzten Tagen nochmal den virtuellen Pinsel geschwungen und rausgekommen ist das hier:
24795

Der Hüftservo wird um 90° gedreht eingebaut und bekommt an den Seiten ein 3D-Fräs-Teil, welches aber aufgrund seiner kleinen Geometrien recht günstig wird - hoffe ich zumindest. Abmessungen: 58mm x 9mm x 19mm sollte also aus 10x20 Material raus gehen. Verbunden wird das ganze auf der Unterseite mit einem CFK Blättchen 2mm Stärke um das Kugellager zu halten (hier könnte ich auch noch Alu nehmen).
24797

Der Oberschenkel besteht nun wieder aus einer Konstruktion ähnlich meiner ersten Lösung. Die Servos werden zwischend en beiden Platten eingebaut und mit PVC Klötzen der Abstand eingestellt. Neu ist, dass der Schulterservo nun in den Oberschenkel integriert ist. Damit kann ich aus Platten + einer Bodenplatte für das Lager ein sehr stabiles Gebilde aufbauen.

24796

Nachteil der ganzen Konstruktion: Ich kann nix mehr Recyclen sondern muss alles neu machen. Die Menge der Teile ist aber überschaubar und es sind keine komplexen Teile dabei.

HeXPloreR
13.03.2013, 07:14
Moin,

das sieht echt gute aus. Einfach und zweckmässig - so wie es sein soll.

Doch etwas habe ich noch gesehen:

Die weißen Blöcke sind alle gleich - das ist gut, aber zwei davon benötigen mindestens eine Aussparung für die Kabel.
Das würde ich einmal mit einem Alu-Rechteck-Profil gegenrechnen. Und dann ggf alle so ausführen.
Durchgehende Schrauben sind an der Stelle okay - das vereinfacht auf jedenfall die Ausrichtung. Hauptsache ist das Servokabel geht dran vorbei.

Den Halter mit dem Gegenlager würde ich genauso fertigen lassen wie den Hornhalter. Allerdings kombiniert mit Gegenhalterbohrung und Hornbohrungen. Den Überstand der den Servo etwas umschliesst benötigt man vielleicht nicht, wodurch man mit einigen Änderungen gleiche Teile erhalten könnte.
Das ist dann zwar ein ganz wenig schwerer, aber Du hast wieder 12 gleiche Teile - statt 2x6.
Das wird aber nur interessant für Dich sein, wenn Du mal irgendwann zwei Servos parallel einbauen möchtest - die dann Boden an Boden liegen könnten.

Und die Aussparung für das Kabel (konnte man jetzt zwar auf den anderen Seite nicht richtig sehen) möchte ich hier auch noch wenigstens erwähnen. Da würde ich schauen ob man direkt oben und unten neben den Bohrungen/Gewinde ins Material eine Ausklinkung machen kann.

Die Schrauben (EDIT: < "Bohrungen" sollte es natürlich heißen) würde ich persönlich, da das Teil ja aus Alu scheint, als Gewinde ausführern und von beiden Seiten mit Schrauben verbinden. Spart zumindest im Zwischenbereich Gewicht ein.

Bild habsch hier:
24800

HannoHupmann
13.03.2013, 08:51
Guten Morgen..

HeXPloreR du hast völlig recht, ich hab die Kabelanschlüsse wieder vergessen, die sollte ich noch berücksichtigen! Danke für den Hinweis.

Da die CNC Teile eh auf der Maschine gefräst werden würde ich lieber auf "Gleichteile" verzichten und dafür Gewicht und Optimierung mitnehmen. Bei einer Serienproduktion wären Gleichteile sicher kostengünstiger :-D.

Die Idee mit den Gewinden ist an und für sich auch gut, nur ist meine Erfahrung, dass es im CAD ohne Probleme zusammen passt, aber in der Realität dann nicht mehr, weil die Servos nicht exakt sind oder irgendwo eben doch etwas außerhalb der Toleranz liegt. Daher fürchte ich mit den Gewinden im Aluminum ein Problem zu bekommen bei der Positionierung. Ich werde aber nochmal darüber nach denken.

Hummer
13.03.2013, 09:26
... Abmessungen: 58mm x 9mm x 19mm sollte also aus 10x20 Material raus gehen...


wiso dann nicht gleich 58 x 10 x 20 ,dann sparst du dir die Fräsvorgänge um das material ein bisschen kleiner zu machen...

sparst mit dem wegfräsen nur gerade 4.5 gramm pro teil...

HeXPloreR
13.03.2013, 11:11
Mir ist noch "was wichtiges" aufgefallen und zwar Deine Plexiglasabdeckung habe ich die ganze Zeit nicht mit eingeplant. Ich
hoffe es ist okay, und Du vermisst nicht plötzlich Deine LED's ;) Zur Not geht eine SMD Platine auf die beiden Servos des Oberschenkels. Oder nur dazwischen.

Das mit den Gewinden ist sone Sache, allerdings haben meine Servos Hitec und RS-2 Aufnahmebohrung von ca 4,5mm, wenn man da jetzt M3 Gewinde ziemlich mittig zur Aufnahme ins Alu schneidet, dann sollte es eigentlich nicht dramatisch sein wenn man z.B. 0,4mm daneben liegt.

Und das Bodenblech stattet man einfach auch mit Übermassbohrungen (oder Übermass-Langlöcher - hast Du ja schon welche) aus, dann kann man das gleich zum Einstellen des Gegenlagers mitbenutzen.

HannoHupmann
13.03.2013, 11:49
Mit den Langlöchern bin ich allerdings noch nicht ganz zufrieden, vermutlich wird es die aber brauchen um die Achsen schön aufeinander zu bekommen - zumindest in einer Richtung.

Die Abdeckung ist - wegen besserer Sichtbarkeit der Mechanik - gerade nicht drauf, die kommt aber wieder auf die Oberschenkel. Dafür habe ich zuviel Aufwand betrieben, als dass ich die jetzt weg lasse, außerdem sieht klasse aus, wenn die Beine leuchten. Leider kommt und kommt die Platine dafür nicht, bin jetzt bei +5 Wochen Lieferzeit :-(.

@Hummer, ich schau mal ob das auch funktionieren würde, vermutlich bei dein 9mm ohne Probleme, bei den 19 weis ich noch nicht ob auch 20 in Ordnung sind. Allerdings muss ich auf beiden Seiten sowieso fräsen, daher könnte man auch einmal fix drüber gehen. Mal kucken was mein Haus und Hof-Fräser noch für Ideen hat.


Brauch jemand einen 26V 5A Turnigy SBEC? Ich hätte einen günstig abzugeben.
Außerdem diverse Zahnriemen und Zahnräder :-P

HannoHupmann
13.03.2013, 20:42
...sparst mit dem wegfräsen nur gerade 4.5 gramm pro teil...
Sag doch sowas nicht, das wären dann bei 12 Teilen auch schon wieder 54g und das ist auch nicht zu verachten.
Ich habs jetzt doch mal 20x10 gemacht, wobei ich nochmal mit dem Fräser sprechen muss ob es nicht eh egal is ob er einmal drüber schrubt.


Hier nun nochmal ein Modell des neuen Designs:
http://skfb.ly/5ki32e1c0a
Leider habe ich noch nicht herausgefunden wie ich bunte Modelle bei Sketchfab hochladen kann.

Berücksichtigt wurden die Ausschnitte für die Kabel (zumindest bei zwei Servos wie ich gerade sehe, beim dritten hab ich es vergessen :rolleyes:.
Die Servos an der Schulter sind 1mm nach unten gerutscht damit platz für die LED Streifen ist und die Abdeckung ist wieder drauf.
Noch Ideen oder Änderungen?
Ansonsten werde ich mich langsam daran machen Leute zu suchen die diese Teile fertigen können. Bzw. erst mal wie ich eine Zeichnung erstelle.

HannoHupmann
19.03.2013, 20:54
Soll keiner Denken es würde im Moment nicht weiter gehen. Im Moment bin ich an der Neuordnung der Elektronik, nachdem nun endlich alle Platinen da sind. Leider ist dabei mein LM2577 zu bruch gegangen und jetzt hat der Hexa erst mal keine 12V Spannungsversorgung womit ich die LEDs nicht testen kann.

Leider gibt es das Teil nur bei Reichelt und im Moment kommt noch nicht genug "zusammen" um eine Bestellung zu rechtfertigen.

24865

So sieht das ganze im Moment aus, von links nach rechts:
1) Servo-Platine
2) LED und sonstiges Board
3) Pufferkondensatoren und Stromverteilung für die Servo-Stromversorgung
4) oben SBEC mit 20A
4) unten 9V zu 5V zu 3,3V und bald hoffentlich wieder 12V

Im Moment in dem Zustand lässt sich deutlich besser verkabeln, die Beine sind gerade zur Seite gelegt. Aber auch dort gibt es neues:

1) Die Frästeile sind bestellt
2) Die CFK Teile auch
3) Die Kötzchen konnte ich letzten Freitag in der Arbeit machen, fehlen noch die etwas kleineren
4) Für die Füße habe ich neue Spitzen an denen nun eine Anti-Rutsch-Matte von TexasInstruments klebt (Ja Werbegeschenke sind was tolles wenn sie so gut zweckentfremdet werden können)

HannoHupmann
29.03.2013, 12:14
Ok der nächste Hexa wird noch ein bischen größer:
http://www.mantisrobot.com/?utm_source=Mantis+March+2013+v4&utm_campaign=Mantis+Email+01&utm_medium=email


http://www.youtube.com/watch?v=1sRlFQLwg3w

robin
29.03.2013, 13:19
Größenwahnsinnig *hust* :D

Falls du jemals auf die Idee kommen solltest, den wirklich zu bauen, hier den thread nicht vergessen und Viel wichtiger, einen Todeslaser einbauen und bluetooht :D

HannoHupmann
29.03.2013, 16:31
das beklommt schon mein Vinculum

5Volt-Junkie
31.03.2013, 19:25
Matt Denton wieder mal ;)
Das ist quasi Amerikas HannoHupmann :)

EDIT: bin mir unsicher ob er aus USA ist...

HeXPloreR
01.04.2013, 08:41
Aus UK eher ;) siehe Contact:

http://www.micromagicsystems.com/ic-hexapod/4525033632

HannoHupmann
05.04.2013, 23:14
So, danke für das Lob,

heute habe ich 3x LM2755-ADJ und 3x LM2755T-12V bekommen und konnte nun endlich meine primäre Stromversorgung abschließen. Damit ist der Teil fertig und alle Platinen sind ebenso fertig.

Ich warte immernoch auf meine neuen Teile für die Beine und hoffe, dass die schnell fertig werden und dann der ganze Roboter etwas leichter wird.

Für die Lageregelung die noch kommen wird, habe ich jetzt auch schon einen geeigneten Baustein mit i2c Interface gekauft. Irgendwie muss ich diese ganzen kleinen Zusatzplatinen noch im oder am Deckel unterbringen.

HannoHupmann
10.04.2013, 12:29
Sieht so aus als würde mein CNC-Fräser keine Zeit für meine Teile finden, daher bin ich nun auf der Suche nach jemanden der mir genau diese Teile fertigen kann:
https://www.roboternetz.de/community/threads/61621-Teile-Fr%C3%A4sen-f%C3%BCr-Hexabot?p=576228#post576228

Ripper121
10.04.2013, 14:50
Schraubstock und Feile? :D

Slowly
10.04.2013, 17:16
Moin Hanno,
die 2er Aluteile mache ich Dir bis nächste Woche fertig. Die Portalanlage hat sich verzogen und muß am WE gerichtet werden.
Grüße
Slow

HannoHupmann
10.04.2013, 18:45
@Slowly ohje, ich wollte schon fragen, da ich es gar nicht kennem dass du solange brauchst. Dann hoffe ich, dass sich alles wieder richten lässt am Wochenende.

@Ripper ja das wäre auch eine Möglichkeit, aber das ist wie ... Steinzeit

HannoHupmann
13.04.2013, 18:06
Oh man langsam wirds wieder eng im Vinculum Körper, die ganzen Kabel müssen irgendwo durch. Ich hab auch noch keinen Platz für den IMU Baustein gefunden, dabei sollte der vermutlich mittig sitzen. auch für die Akkus ist noch kein wirklich guter Platz gefunden. Dafür ist nun auch die Deckplatte fertig.

Die neuen Teile für die Beine habe ich nun auch bestellt, allerdings überlege ich ob man die nicht hätte "drucken" können? Hoffentlich wird die neue Beinversion leichter als die alte.

HannoHupmann
24.04.2013, 12:50
Gestern habe ich von Slowly meine ersten Teile für die neuen Beine bekommen und sie sehen toll aus!
Die beiden Oberschenkel vorn und hinten, passen perfekt.
Die Schulterflanschplatte ist auch perfekt.
Nur bei der Oberschenkel Flanschplatte habe ich mich sauber vermessen! Das Loch für das Lager ist nicht richtig positioniert, hier muss ich nochmal in die Zeichnung gehen und die Position anpassen. Vermutlich ist mein Servo falsch vermessen.


Ansonsten sagt die Feinwaage:
352g für die alte - bisherige Version
289g für die neue Version

Also rund 60g pro Bein eingespart, was dann in Summe 360g bedeutet! Damit sollte ein Gewicht von unter 3kg möglich sein. Im Moment hat der Hexa 3kg (gemessen mit der Personenwaage).

Da es immer wieder kommt, hier nochmal kurz überschlagen die Auslegungsberechnung für die Servodrehmomente:
3kg = 30N; Vier Beine am Boden = 7,5N,
Hebelarm bei ungünstigster Beinstellung (45°/45° zum Boden über Oberschenkel und Fuss) = 16cm, daraus folgt: 120Ncm und die Motoren können 142Ncm.
Also wird eine Sicherheit von 1,18 erreicht.

Der Abstand zwischen den beiden Achsen am Oberschenkel beträgt nur 11cm, bei Stellung 90°/90° wäre es also eine Sicherheit von 1,72.
Für ein Gewicht von 2,7kg hätte ich 1,31 und 1,91 Sicherheit.

HeXPloreR
24.04.2013, 16:57
Gewicht gespart - das ist gut :cheesy:...Fotos :-b

HannoHupmann
24.04.2013, 20:58
Kann ich leider gerade noch keine machen, da ich schon wieder alles zerlegt habe ;-) Ich bekomm auch erst am Montag die Teile für die Hüfte, dann aber mach ich sofort Fotos!!

HannoHupmann
27.04.2013, 17:45
Das hat mir heute die Post vorbei gebracht:

25248

außerdem habe ich von meinem anderen Lieferanten die Bestätigung, dass die Frästeile fertig sind! Jetzt kann ich im Urlaub alles wieder zusammen bauen. Perfekt!

Danke nochmal an Slowy.

HeXPloreR
27.04.2013, 17:52
Hey, das sieht Klasse aus.

Ich bin gespannt wie sich die fertigen Beine machen.

Da hat auch Slowly wieder was Tolles gezaubert.

Sag mal, mit welcher CAD-Software arbeitest Du nochmal?

HannoHupmann
27.04.2013, 20:14
Vor ein paar Monaten bin ich von Catia auf ProE umgestiegen. Durch die Arbeit bekomm ich eine Schulungsversion für zuhause und der Vorteil ist, dass ich dann zuhause und beruflich mit dem selben System arbeit. Außerdem ist das Catia schon etwas veraltet mit mehr als 10 Jahren.

Geistesblitz
28.04.2013, 01:14
Viel Spaß, ich fand Pro-E jetzt nicht so prickelnd. Vor allem, wenn irgendwas überdefiniert ist oder es Probleme bei Abrundungen gibt, wird man mit Fehlermeldungen nur so zugeschmissen und weiß vor lauter Überforderung nicht, wie man das Problem denn jetzt gelöst bekommt. Ich finde da Solidworks, was ich derzeit verwende, wesentlich intuitiver, auch in anderen Belangen. Ich muss aber auch hinzufügen, dass ich mich in beiden Programmen noch nicht besonders tief eingearbeitet habe, aber das sind eben Dinge, die mir so aufgefallen sind.

HeXPloreR
28.04.2013, 08:11
Danke Hanno für die Antwort.
Ich denke mal jeder hat da ja die Qual der Wahl. Wenn ich beruflich mit einem bestimmten Programm arbeiten würde/müsste, dann würde ich es vermutlich auch für privat wählen um einfach mehr Erfahrungen damit zu machen. Ob das nun das beste Programm ist?...man ärgert sich sonst ja auf der Arbeit das es "in dem Anderen" viel viel besser geht. Ich denke da sollten wir hier in Hanno's Vinculum Thread keine Disskusion drüber führen.

Konkret ist bei mir die Frage des Exports von SKP-Dateien in DXF aufgetreten. Ich habe zwar das Plug-in "Export to DXF or STL" installiert, aber kann dennoch nicht speichern. Ich suche noch eine Lösung dafür in dem englischen Forum das auch das PlugIn bereitstellt.

HannoHupmann
28.04.2013, 08:46
Dann eben noch zwei Worte von mir zum Thema CAD:

Wie mein Prof so schön gesagt hat: "Jedes CAD Programm ist perfekt und furchtbar in einem!" Soll heißen, es gibt Dinge die Programm A sehr gut kann, dafür aber andere nicht und bei Programm B ist es das andere was es sehr gut kann aber das erste nicht. Für ProE habe ich eine Schulung bekommen. Die Konstruktionsabteilung arbeitet damit und der Hauptkunde. Ich gebe zu, dass ProE ohne "Einführung" und "Hilfestellung" zu umständlich ist, danach aber sehr gut!

Catia ist wundervoll für Freiformflächen - z.B. Karossiere beim Auto, wo man nicht mit Verrundungen und Radien arbeitet. Braucht kein Hobbybastler und die wenigsten Profis. Ansonsten find ich meine uralterversion zu Umständlich

Für Privat-Personen ist ein CAD System meistens nur als Schulungsversion, Studentenlizenz oder Privatanwenderkopie finanzierbar. Also nehmt was ihr bekommen könnt :P

HannoHupmann
30.04.2013, 16:45
Die Hüfte ist schon mal fertig:

25378

Für den Rest fehlen leider noch die M3x40 Schrauben und die Kugellager, das soll aber alles am Donnerstag kommen.

MisterMou
30.04.2013, 18:47
Wie konnte das denn sein, dass die Teile so schnell da sind? Die hab ich doch gestern erst abgegeben.
Passt alles? Sieht zumindest so aus ;)

HannoHupmann
02.05.2013, 14:15
Ging eben schnell, ja die Teile passen alle soweit ganz gut. Ich muss noch auf die Schrauben warten um den Rest zusammen bauen zu können. Irgendwas fehlt ja immer.

HannoHupmann
05.05.2013, 19:15
So neue Beine braucht das Land:
2541725418


So sieht das ganze dann aus wenn es fertig ist:
25419

Hier steht das Vinculum schon wieder auf "eigenen Beinen" und sogar sehr sehr stabil. Ich hab testweise meine halbvolle Wasserflasche auf den Rücken abgestellt ohne Probleme.

Was meint ihr?

HeXPloreR
05.05.2013, 19:44
Sieht sehr gut aus finde ich. Wenn sich alles sehr stabil verhält, würde ich auch sagen: Konstruktionsziel erreicht =D>

Eine halbvolle Wasserflasche ... 0,5(= ca 250g); 1,25(= ca 625g) oder 1,5L (= ca 750g) oder sogar 2L (= ca 1000g)? - wie sagt man doch immer, es fehlen infos um abschliessend beurteilen zu können :-k

Wenn jetzt von der Hardware her alles gut passt, kann man sich je endlich der Software weiter widmen. Du weißt ja das muss auch sein ;)

HannoHupmann
05.05.2013, 23:18
Ich hab sie nicht gewogen sie stand gerade nur rum und ich wollte sehen ob das schon Probleme macht. Ich vermute es waren um die 300g die da zusätzlich drauf gekommen sind. Ich kann mal noch einen test mit definiertem Gewicht machen ;-).
Erst mal bin ich allerdings froh, dass alles wieder zusammengebaut ist und funktioniert. Damit ist der Mechanik fertig, der Elektronikpart halbwegs und ich kann mich an die Programmierung machen, war ja nun doch ein längerer Weg.

HannoHupmann
19.05.2013, 09:06
Ich überlege gerade vorn noch einen "Sensorkopf" anzubringen, nur sehe ich dann das Problem, dass der Schwerpunkt aus der Mitte des Hexas wandert. Alternativ könnte man Sensoren vorn und hinten an bringen oder den Akku als Gewichtsausgleich verwenden, was mein ihr?

HeXPloreR
19.05.2013, 09:22
Geschätztes Gewicht? - also bei ein paar Gramm (ca 100g) ist es wohl vorerst nicht so wichtig.

Ein Sensorkopf der mit Servo bewegt wird? - Die Servos nach hinten legen, und die Bewegung per Bowdenzuge oder ähnliches nach vorne leiten? = Gewichtsverteilung der nötigen Komponenten des Sensorkopfs, ohne zusätzliche Gewichtsbelastung mit eigentlich nicht geplanten/nötigen Sensoren+ggf Mechanik nach hinten.
Sonst bleibt nur der Akku (bzw schwerste Masse), oder allgemein die Beine weiter nach vorne stellen um die Schwerpunktverschiebung aufzuheben = Mehrbelastung der vordern Beine.

EDIT: Als Gedankenanregung: Von Lego Technic gab es mal das "Flex System" ;) Das hat genau das gemacht...
Als verbesserung schlage ich vor das ganze auf ein Rolle wickeln zu lassen - Zug und Gegenzug Prinzip (geht auch mit einer Zugfeder für den Gegenzug) - habe ich für meinen Hexa auch so geplant, weil ich habe definitiv ein Platzproblem :(

Habe ich übrigens auch gestern auf der Da Vinci Ausstellung in Neumünster gesehen ;)

HannoHupmann
20.05.2013, 20:29
So erst mal ein kleiner Test heute, nachdem ich alle Servos kalibriert habe, die ersten Bewegungen. Was letztes mal im Chaos endete und mich davon überzeugt hat, alle Beine neu zu bauen, sieht heute schon viel besser aus:


http://www.youtube.com/watch?v=bLdZ-2aH05w&amp;feature=youtu.be

Die Bücher dürften zusammen ein Gewicht von 2,4kg haben (sagt die Waage) und ich hatte den Roboter eigentlich gar nicht auf diese Belastung ausgelegt. Es ist also noch deutlich Luft nach oben!

HeXPloreR
20.05.2013, 20:43
Sehr schön Hanno,

freut mich das es endlich voran geht bei Dir.

So ähnlich sahen meine Bewegungsmuster heute auch aus...Video habe ich grade gemacht ;)

HannoHupmann
20.05.2013, 22:30
Und hast du auch 2,4 kg drauf gepackt um zu sehen wann die Mechanik nach gibt. Ich habe leider nicht den Strom gemessen, den diese zusätzliche Belastung benötigt. Allerdings gibt das Netzteil 20A her, sollte also gut reichen.

HeXPloreR
21.05.2013, 08:45
hehe...na klar ;) Das habe ich mir abgewöhnt, denn irgendwie ist es schlecht wenn die Mechanik nachgibt ...

Ich kann Dir auch nur empfehlen diese Art Test nicht zu machen.

HannoHupmann
21.05.2013, 09:17
Oh glaub mir ich hab nicht vor den Test noch weiter zu treiben bis ich keine Bücher mehr habe oder alle Zahnräder knirschen. Ich weiß jetzt, dass 2,4kg Zuladung bei 6 Beinen kein Problem darstellen, d.h. ich kann ohne Sorge weitere Aufbauten implementieren und ich kann testen wie gut das ganze mit nur 3 Beinen am Boden funktioniert.

HannoHupmann
28.05.2013, 21:31
So ich glaube ihr braucht mal wieder ein Up-Date, hier ein kleines Bild:

25618

Es wird bunt. Der erste Test ob alle LED so tun wie sie sollen. Jedes Bein hat zwei streifen RGB LEDs, die individuell angesteuert werden können, d.h. jede Farbe ist möglich. Die drei hinteren Beine zeigen die Grundfarben, Grün, Blau, Rot und die drei vorderen Beine die jeweiligen Mischfarben: Türkis, Gelb und Pink. Weitere Farben bzw. Farbwechsel sind durch dimmen der LED möglich.

Der Deckel in der Mitte hat ebenfall zwei Streifen RGB LEDs, vorn ist noch eine LED Leiste als Scheinwerfer integriert, die allerdings noch nicht angesteuert werden kann (kommt noch).

Alle LEDs lassen sich bequem über i2c einstellen.

High Light
31.05.2013, 08:43
Sieht sehr schön aus!
Die Platinen zur Ansteuerung der LEDs hast du selber geplant oder sind das fertig Module?

Grüße High Light

HannoHupmann
31.05.2013, 11:21
ui ein Kommentar! @HighLight was erlaubst du dir! :p Sonst postet niemand hier, achso da ist auch noch ne Frage dabei:

Die Platinen habe ich selber entworfen und Layoutet, ist gar nicht so schwer, wenn man den Dreh mal raus hat, zur Ansteuuerung dient bei den LEDs ein: TLC59116F

5Volt-Junkie
31.05.2013, 23:30
Die niedrige Frequenz von Kommentaren würde ich nicht all zu kritisch sehen :)
Du beschreibst jeden einzelnen Schritt und das eigentlich ziemlich ausführlich.
Auf dem Foto sind etwas zu viele Farben auf einmal. Wenn ich mir was wünschen darf, würde ich gern die Beine in allen RGB-Farben sehen aber so, dass alle Beine mit gleicher Farbe leuchten :)

Was noch cool wäre, dass das Licht wirklich gleichmäßig verteilt wird, ohne dass man die Hot-Spots sieht.
Auf ein Video bin ich besonders gespannt.;)

HannoHupmann
01.06.2013, 09:24
Ich kann ja mal ein Foto mit allen Beinen in gleicher Farbe machen, ich wollte auf dem Bild nur zeigen welche Farben möglich sind. Die LEDs bzw. Spots wird man immer sehen, denn um sie wirklich gleichmäßig zu verteilen müssten die LEDs ein paar Zentimeter von dem Difusor weg sein. Das lässt der Bauraum leider nicht zu. Also versuch ich mit Sandstrahlen die Oberfläche wenigstens ein wenig gleichmäßiger zu beleuchten.

HannoHupmann
25.06.2013, 19:46
@5Volt-Junkie,

das hat jetzt wieder ein wenig länger gedauert, der kleine Zwischen-Sommer war schuld.

Jetzt wo es wieder kalt und winterlich ist, kann ich euch folgendes zeigen:


http://www.youtube.com/watch?v=utSsOezoXHk&amp;feature=youtu.be

Die Slider werden über eine MatLab Funktion gesteuert und wandeln die Slider-Werte in Hex um und übergeben diese über die RS232 Schnittstelle an den Roboter.
Im Prinzip lassen sich alle RGB Farben mischen.

Ryoken
26.06.2013, 05:31
Die LEDs bzw. Spots wird man immer sehen, denn um sie wirklich gleichmäßig zu verteilen müssten die LEDs ein paar Zentimeter von dem Difusor weg sein. Das lässt der Bauraum leider nicht zu. Also versuch ich mit Sandstrahlen die Oberfläche wenigstens ein wenig gleichmäßiger zu beleuchten.Was ist denn mit den LEDs selbst, hast Du die auch gestrahlt (sind ja meistens "Wasserklar" was man zu kaufen kriegt)?
Wenn nicht, könnte das ja zumindest noch ein bisschen helfen, die Spots zu verschleiern.

Gruß Ryoken

HannoHupmann
26.06.2013, 07:41
Die LEDs habe ich so verbaut wie ich sie bekommen habe, nur die Abdeckungen sind gestrahlt. Ich könnte mal mit ein paar Resten ausprobieren, ob das noch was bringt. Allerdings müsste ich dann alle LEDs wieder raus rupfen. Im Moment stört es mich nicht weiter, dass es keine gleichmäßig leuchtenden Flächen sind und der Aufwand diese zu erreichen ist mir zu hoch. Die LEDs sollen ja auch nur ein Gimik sein.

Mit der Ansteuerung über MatLab wollte ich mich auch wieder in das Programm einarbeiten, um dann den Gyro auslesen zu können. D.h. als nächstes wird einlesen über i2c realisiert.

Ryoken
26.06.2013, 14:52
Allerdings müsste ich dann alle LEDs wieder raus rupfenMan könnte ja auch fein anschleifen. Spart das rupfen, obs natürlich den Aufwand nennenswert verbessert wäre fraglich.

OT: Womit strahlst Du denn die Teile? Mit so nem Aufsatz für den Haus- Hof und Garagenkompressor oder hast was Profesionelleres?
Bei ersterem tät mich interessieren, ob sichs lohnt das anzuschaffen. Vor allem zwecks Sauerei mit dem Sand und Auffangen etc.


Gruß Ryoken

HannoHupmann
26.06.2013, 21:17
Nein ich müsste sie trotzdem raus rupfen weil die unter den Abdeckungen versteckt sind. Letztere sind in einer professionellen Box gestrahlt, habe ich in der Arbeit gemacht.

HannoHupmann
01.07.2013, 11:06
Jemand am Mitlesen der sich als SPIN-Experte outen will? Ich bin gerade dabei meinem Propeller Chip die IK zu verklickern und ich habe in kleines Cog Problem. Bzw. ich wüßte gerne ob ich der Float32Full auch spezifische Cogs zuweisen kann.

Für alle nicht Experten: Die Idee von den 8 Cogs des µC jedem Bein einen zur Verfügung zu stellen scheitert daran, dass die Mathe Funktion auch zwei haben will.

HannoHupmann
12.08.2013, 09:22
So gerade wird die PowerControll Platine fertig und wieder geht es an das leidige Thema einen Hersteller für die Platinen zu finden. Entweder muss ich gleich 100 Stück abnehmen oder die Qualität ist bescheiden oder der Preis völlig überzogen.

Allerdings muss ich jetzt erst noch die richtigen Abmessungen für diese winzigen SMD ICs herausfinden.

Sinn der Übung:
Eine Platinge die den Eingangsstrom und die Eingangsspannung vom Akku überwacht und mir per i²c zur Verfügung stellt. Da der Chip aber mit 5V arbeitet brauch ich auf der Platine auch gleich noch einen Konverter von 5V auf 3,3V. Die Bauteile sind schon all da, nur die Platine fehlt noch...

malthy
12.08.2013, 09:56
Hallo Hanno,

ich lasse meine Platinen nach wie vor von Bilex (http://www.bilex-lp.com/user_d/) in Bulgarien machen. Du musst definitiv keine 100 Stück abnehmen, die Platinen sind günstig und die Qualität ist in der Regel in Ordnung. Letzteres bedeutet, dass es bei mir hin und wieder durchaus mal Probleme mit der Qualität gab, dem wurde dann aber unbürokratisch mit Ersatz oder Preisnachlass begegnet. Mittlerweile gibt es auch viele chinesische Anbieter, bisher habe ich mich aber noch dazu durchgerungen, denen mal eine Chance zu geben.

So sehen die Platinen von Bilex beispielsweise aus:

26201 26202

Gruß
Malte

HannoHupmann
13.08.2013, 08:29
Muss ich mal mit meinem Design ausprobieren. Ich bin aber noch am Feintuning der SMD-Chip-Abmessungen. Irgendwie passen die Geometrien da nicht so ganz zu meinen Bauteilen.

HannoHupmann
14.08.2013, 09:28
Sind leider im Urlaub die Jungs von Bilex, wir eh knifflig mit diesen kleinen Chips zurecht zu kommen.
26212

ist halt leider mit den beiden Chips für Power und i²c so ein bisschen knifflig.

HannoHupmann
23.08.2013, 10:40
26261

Scheinwerfer front, Aufnahme mit 10% Leistung.

HannoHupmann
04.09.2013, 21:28
So nachdem es jetzt einige Tage ruhiger war um meinen Hexa und ihr vermutlich heute schon im Fehlschlag-Thread gelesen habt, dass mir ein Servo abgeraucht ist, gibt es nun News (wie man auf altbayrisch so schön sagt).

1) Der Servo ist komplett hin, da hilft nur noch austauschen, daher bewegt sich Bein B auch so komisch.
2) Die inverse Kinematik ist nun vollständig implementiert.

Was bedeutet das?
Ich muss die Winkel der Servos nicht mehr ausrechnen sondern sie werden berechnet aus folgenden Größen:

Translatorisch:
dx - die x-Richtung der Fussspitze gemessen von der Hüfte
dy - die y-Richtung der Fussspitze auch gemessen von der Hüfte.
--> über den Atan2 wird daraus der Winkel für die Hüfte!
--> Mit der Höhe h werden daraus die Winkel für Schulter und Fuss

Rotatorisch:
hbasis - die Grundhöhe des Hexas über dem Tisch
Winkel Querachse -Rotation um die x-Achse also wie viel der Körper sich nach vorn oder hinten neigen soll
Winkel Längsachse - Rotation um die y-Achse, also wie viel der Körper sich links oder recht neigt.
wy - Wo sich der Drehpunkt für Q befindet auf der y Achse
wx - Wo sich der Drehpunkt für L befindet auf der x Achse

Was heißt das jetzt?
Aus den beiden Winkeln Q und L mit ihrer Position lässt sich der Körper beliebig kippen um die beiden Achsen x und y (drehen um z würde über die dx und dy werte gehen), wie bei einem Flugzeug. Durch die Parameter wx und wy lässt sich der Drehpunkt an eine beliebige Stelle auf dem Roboter (oder auch außerhalb) verschieben und so um jeden Punkt kippen.

Ich verstehs immer noch nicht?
Dann schaut euch das Video an:

http://www.youtube.com/watch?v=N2dyZPNceEA&amp;feature=youtu.be


Wie gesagt Bein B (das Mittlere rechts) hat einen defekten Schulterservo.

Die Kunst daran ist zum einen die reinen Formeln in Mathe aufzustellen, hier reicht aber Sinus, Tangens und Cosinus Wissen aus. Danach muss man diese Formeln schön im Programm umsetzen, was deutlich aufwendiger ist, da hier die Syntax des Programms zum tragen kommt:
Beispiel für Bein A


dQ := math.Sin(math.Radians(wQ))
dL := math.Sin(math.Radians(wL))

dhAF := math.FMul(dQ, math.FSub(+230.0, -wy))
dhABC := math.FMul(dL, math.FSub(-110.0, -wx))
hA := math.FAdd(hBasis, dhAF)

'~~~~~ BERECHNUNG SERVOWINKEL ALPHA GAMMA PHI
'----- Länge von Bein A ----
ca_2 := math.FAdd(math.FMul(hA, hA), math.FMul(rA,rA))
ca := math.FSqr(ca_2)
'----- Winkel von Hüfte A0 ----
phi := math.Degrees(math.Atan2(xA, yA))
phi := math.FAdd(math.FMul(math.FSub(phi, 5.0), 8.0), 809.0)
Aziel[0] := math.FRound(phi)
Aziel[0] := Aziel[0] +0
'----- Winkel Schulter A1 ----
alpha_P := math.ATan(math.FDiv(rA, hA))
alpha_PP := math.ACos(math.FDiv(math.FAdd(aa_m_bb, ca_2), math.FMul(ax2, ca)))
alpha := math.Degrees(math.FAdd(alpha_P, alpha_PP) )
Aziel[1] := math.FRound(math.FAdd(math.FMul(math.FSub(alpha, 5.0), 8.0),809.0))
Aziel[1] := Aziel[1] - 60
'----- Winkel Fuss A2 ----
gamma := math.ACos(math.FDiv(math.FSub(aa_p_bb, ca_2), abx2))
gamma := math.Degrees(gamma)
gamma := math.FAdd(math.FMul(math.FSub(gamma, 5.0), 8.0), 809.0)
Aziel[2] := math.FSub(2910, math.FRound(gamma))
Aziel[2] := Aziel[2] +80

Hier hilft es die Berechnung in Excel aufzubauen mit einer grafischen Darstellung zu prüfen ob das überhaupt funktionieren kann bzw. was bei den Werten herauskommen muss. Leider habe ich keine Möglichkeit die Werte nach der Berechnung am Hexa ausgeben zu lassen, da er kein Display oder eine Schnittstelle dafür hat.



Noch Fragen?

HannoHupmann
18.09.2013, 20:44
Hat jemand eine Idee wie man die Bahnkurve bzw. Trajektorie implementiert?