Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein Hexabot, Update: "Ferngesteuert über Nunchuk"
Bluesmash
30.09.2008, 23:01
Hallo Zusammen
Ist noch kein Fertiges Projekt (ein Roboter ist eh nie fertig) aber schonmal ein grosser Teilerfolg. Heute war es endlich soweit und mein Hexa konnte das erste mal selber aufstehen und einige Bewegungen vollführen.
Leider habe ich noch das Problem dass zwischendurch plötzlich ein Servo zuckt (sieht man im Film am anfang). Ich habe schon einiges probiert dies zu beheben aber es hat bis jetzt nichts geholfen...
Hier ist das Video dazu:
http://www.bluesmash.roboterbastler.de/?Projekte_in_Arbeit:Hexabot:Videos
Auf meiner Homepage findet ihr noch ein Paar Bilder und andere Sachen:
http://www.bluesmash.roboterbastler.de/?Projekte_in_Arbeit:Hexabot
http://www.bluesmash.roboterbastler.de/images/Hexa_2_thumb.jpg
http://www.bluesmash.roboterbastler.de/images/Hexa_4_thumb.jpg
Laufen kann er leider noch nicht, aber dies werde ich ihm in den nächsten Tagen/Wochen auch noch beibringen...
Ein paar Eckdaten:
- 18x Hitec HS-475
- 3x Mega168 für die Beincontroler
- 1x Mega32 für die Stromversorgung (Messung der Servospannungen, Ströme und Akuspannung)
- 1x Mega8 für die Displayansteuerung
- 1x RNControl als Master (nur für testzwecke, später werde ich für den Master auch ein Board erstellen welches im Körper untergebracht wird)
- 12,4V 2400mAh LIPO Akku
gruss Bluesmash
radbruch
01.10.2008, 00:59
Sieht ja prima aus, Glückwunsch.
Zuckende Servos deuten meist auf schwankende Impulslängen hin. Gelegentlich auch schlechter Kontakt am Stecker.
Bluesmash
01.10.2008, 10:04
Ich habe eher das gefühl dass es an meinem Programm liegt... solange ich nur den Programmteil der Servoansteuerung laufen lasse funktioniert es wunderbar. sobald aber die Berechnung der IK dazukommt fängt das Problem an.
ich muss mal überprüfen ob es eventuell an der Positions übermittlung per I2C liegt, ob da zwischendurch einfach müll ankommt und eine völlig falsche Position berechnet wird... ich muss da vielleicht mal ne Checksumme einfügen oder so...
gruss Bluesmash
Seher schönes Projekt.
Sieht super aus. Dein Problem könnte aber auch von einer Spannugnsschwankungkommen, die durch das Mehr an Rechenaufwand hervorgerufen wird.
Gruß,
Sven
ikarus_177
01.10.2008, 15:17
Hi bluesmash,
das sieht ja schon wirklich gut aus!
Verwendest du bereits eine IK, oder sind das "noch" vorgefertigte Bewegungen?
lg ikarus_177
Bluesmash
01.10.2008, 15:24
Hallo
Das ist schon die IK, zwar noch im anfangsstadion aber funktioniert schon relativ gut.
ich gebe dem Bot über die Serielle schnittstelle vom PC nur noch die x/y/z koordinaten, der rest macht er selber.
gruss bluesmash
radbruch
01.10.2008, 16:53
Hallo
"Schwankende Impulslängen" können ganz unterschiedliche Ursachen haben: Rein mechanisch durch schlechten Kontakt der Signalleitung, Überlauf der Interruptroutine (ein Klassiger), andere Interrupts mit höherer Priorität, aber natürlich ist auch ein Fehler bei der Übertragung per I²C möglich oder ein Rechen-/Rundungsfehler bei der Positionsberechnung. Eben alles was dazu führt dass der Impuls bei gleicher Position minimal unterschiedlich lange ist. Gut sollte man sowas auf dem Oszi sehen (wenn man eines besitzt).
Gruß
mic
Klingon77
01.10.2008, 17:09
hi,
habe mir eben auch das Video angeschaut.
Sieht echt beeindruckend aus.
Ich bin immer wieder fasziniert, wenn ich solche Bewegungsabläufe sehe.
Was mir aufgefallen ist:
Wenn der Robby den Körper nach vorne bewegt scheint es, als wippt er in der vorderen Endlage etwas nach.
Sind das die Servos (nach hinten ist es besser) oder die einseitige Auslegung des Oberschenkels?
Ich habe echte Bedenken bezüglich der Lagerung der Servo-Abgangswellen.
liebe Grüße,
Klingon77
Bluesmash
01.10.2008, 17:22
@Radbruch:
Danke für die Inputs. Folgendes denke ich kann ich ausschliessen:
mit überlauf der Interrupt Routine meinst du sicher den Stack überlauf oder? ich habe da schon einige Werte bis 512 ausprobiert half aber nix.
Als Interrupts laufen nur der Timer1 für die Servos und der I2C Interrupt, für die I2C übertragung habe ich für jedes der Servomodule eine Seperate Leitung zum Master, welche beim Master einen Interrupt auslöst. Damit der MAster nur in der Zeit Daten sendet in der das Servomodul genügend Zeit hat zu empfangen (am Ende der Servoansteuerung bleiben ca. 4ms übrig bis die Servos neue Impulse wollen) dies funktioniert (überprüft am Ozzi)
Einen Rechenfehler kann es ja auch nicht sein, der Mikrocontroller rechnet ja immer (sollte) gleich, und das zucken habe ich ja auch im stillstand wenn kein wert verändert wird. und die Servos auch völlig unbelastet sind...
Es ist zufällig und nicht immer bei den gleichen Servos und wenn nur der Programmteil mit den Servoberechnungen läuft, habe ich kein zucken, somit schliesse ich mal den schlechten Mechanischen Kontakt aus.
Ich werde heute abend mal die I2C übertragung unter die Lupe nehmen, mal schauen ob da der Hund begraben liegt. Ich lasse die übertragung auch auf 400kHz laufen vielleicht ist das zuviel des guten, da die Kabel doch quer durch den Roboter verlaufen...
@Klingon77:
Ich glaube das Nachwippen kommt von den zuckenden Servos, wenn du genau hinschaust, siehst du auf der linken seite (von vorne gesehen) wie ein Servo wie wild umherzuckt.
Ansonsten ist er recht Steif und ich finde die Servobelastung hält sich in Grenzen, da er doch sehr mühelos aufstehen kann. vielleicht werde ich mal testen wieviel zuladung er verträgt...
gruss Bluesmash
--edit--
werde eventuell heute Abend noch ein Video aus einer anderen perspektive machen. dann kann man auch ein bisschen mehr erkennen...
Klingon77
01.10.2008, 17:37
hi Bluesmash,
es ist weniger die gleichmäßige Belastung, welche mich besorgt, sondern die Anfahr- und Bremsbewegungen beim vor- und zurückgehen.
Die resultierende kinetische Energie muß auch kompensiert werden.
Für einen dauerhaften Betrieb sehe ich da Probleme.
Bitte nicht falsch verstehen; ich möchte Dir nicht meine Meinung "aufdrücken" :oops:
Nun lasse ich es auch "gut sein" mit dem Thema \:D/
Freue mich schon darauf zu sehen, wie sich der (oder die?) Kleine weiterentwickelt.
liebe Grüße,
Klingon77
radbruch
01.10.2008, 17:57
Mit Interruptüberlauf meinte ich eine zu lange ISR die noch nicht fertig ist wenn der nächste Interrupt schon ansteht.
Bluesmash
02.10.2008, 09:16
Ich glaube ich habe gestern den fehler des zuckens gefunden, irgendwie mag es die Berechnung der IK nicht wenn während der berechnung die Interrupts der Servoansteuerung kommen. ich habe jetzt mal die Berechnung in die Pausen gelegt wo die Servoansteurung zeit hat und jetzt gehts.
aber erklären kann ich es mir nicht... schon komisch... eventuell ein Bug von Bascom? vielleicht wird irgendwo eine Speicherzelle überschrieben, was ich mir aber fast nicht vorstellen kann...
@Klingon77:
Ich werde dann nach ein Paar Betriebsstunden mal ein Paar Servos zerlegen und schauen wie es innen aussieht und dann weiter entscheiden...
gruss Bluesmash
HannoHupmann
02.10.2008, 09:46
Die HS475 laufen bei mir schon einige Betriebsstunden ohne Probleme, ich denke du musst da keinen auseinander bauen. Die sind an und für sich ganz in Ordnung.
Verwendest du jetzt eigentlich noch die Plastik Servohörner oder hast du dir welche aus Metall besorgt?
Bluesmash
02.10.2008, 09:52
Ich habe mir beim grossen "C" welche aus Alu gekauft, die sitzen bombenfest auf den Servohörnern. Die aus Kunstoff waren mir einfach zu "labbrig" und hatten zu viel spiel... so sind nun die verbindungen recht steif. Das grösste Spiel hat nun das Getriebe, welches aber schlecht optimiert werden kann...
gruss Bluesmash
Mit Interruptüberlauf meinte ich eine zu lange ISR die noch nicht fertig ist wenn der nächste Interrupt schon ansteht.
Das Problem habe ich,
allzuviel darf man in der ISR nicht machen
Ich glaube ich habe gestern den fehler des zuckens gefunden, irgendwie mag es die Berechnung der IK nicht wenn während der berechnung die Interrupts der Servoansteuerung kommen. ich habe jetzt mal die Berechnung in die Pausen gelegt wo die Servoansteurung zeit hat und jetzt gehts.
aber erklären kann ich es mir nicht... schon komisch... eventuell ein Bug von Bascom? vielleicht wird irgendwo eine Speicherzelle überschrieben, was ich mir aber fast nicht vorstellen kann... Das klingt mir ganz danach als gäbe es da einen Konflikt beim Zugriff auf eine Variable...
Nehmen wir an du hättest irgendeine 16Bit Variable die in einer ISR geschrieben und im Programm irgendwo gelesen wird (oder umgekehrt, völlig egal). Dann musst du beachten, daß bei einem 8-Bit µC in der Regel jeweils 2 Operationen dafür benötigt werden. Tritt jetzt nach der ersten Operation der Interrupt auf, wurde die Variable erst "zur Hälfte" gelesen bzw. geschrieben und das kann Probleme geben.
Ein Beispiel:
Ich habe eine Timer-ISR die einfach nur eine 16-Bit Variable jeweils um 1 inkrementiert, und an verschiedenen Stellen im Programm lese ich diese Variable ein um z.B. irgendwelche Zeiten zu messen.
So, gehen wir mal davon aus daß die Variable aktuell einen Wert von 0x00FF hat und beim Zugriff jeweils immer das untere Byte zuerst kommt. Wir wollen den Wert im Programm also einlesen, und bekommen als erstes das untere Byte mit dem Wert 0xFF, aber dann kommt der Interrupt und inkrementiert die Variable um 1 so daß ihr Inhalt jetzt eigentlich 0x0100 ist. Dummerweise weiß das Programm davon aber nichts und macht nach dem Rücksprung einfach mit dem lesen der zweiten Hälfte der Variable weiter, nämlich 0x01. Das Programm hat also 0x01FF gelesen, ein Wert der natürlich viel zu groß ist.
Solche Probleme können nicht nur auftreten wenn die ISR schreibt und das Programm liest, sondern auch wenn das Programm schreibt und die ISR liest, auch welcher Teil der Variable zuerst gelesen wird ist egal.
Prüfe deinen Code mal auf derartige Konflikte
Bluesmash
02.10.2008, 10:19
Diese Idee hatte ich auch schon... ich schreibe die berechneten Servopositionen in eine 16bit variable. welche dann vom interrupt dem Timerwert zugewiesen wird.
Ich habe es so gelöst dass ich 2 Blöcke gemacht habe, in etwa so:
servo_umsch=1
servo_1(1) = servo_pos(1)
servo_1(2) = servo_pos(2)
servo_1(3) = servo_pos(3)
servo_umsch=0
servo_2(1) = servo_pos(1)
servo_2(2) = servo_pos(2)
servo_2(3) = servo_pos(3)
Jenachdem ob servo_umsch 1 oder 0 ist lese ich in der ISR die variablen servo_1 oder servo_2. So kann ich verhindern dass ich eine Variable lese welche gerade beschrieben wird....
gruss bluesmash
Hmm, das sollte eigentlich funktionieren, auch wenn es nicht gerade die platzsparendste Lösung ist (den zweiten Block Variablen könnte man sparen, wenn man vor dem Zugriff einfach den Interrupt abschaltet).
Spontan fällt mir aber auch kein anderer "typischer" Fehler ein, der solche Probleme auslösen kann.
Bluesmash
02.10.2008, 10:51
Naja diese lösung ist aus der not entstanden als es immer noch nicht funktionierte. werde dann wahrscheinlich deine lösung einbauen. Danke!
könnte es sein dass, bei bascom die Trigonometrischen Funktionen (Sin/Cos/Tan) irgendwie ein Problem mit dem Interrupt haben? dass da irgendwelche Variablen überschrieben werden oder irgend sowas? Bei der überprüfung gestern habe ich herausgefunden dass zwischendurch wirklich falsche positionen berechnet werden und die servos für einen kurzen Augenblick an eine falsche Position fahren wollen....
gruss Bluesmash
Hallo,
erstmal: Applaus für das tolle Projekt. IK Bewegungen sehen irgendwie immer sehr "schön" aus.
Ich hatte vor einiger Zeit auch ein ähnliches Problem. Ich hab in Bascom die tan Funktion benutzt(Mega32) und wenn ich dann zur Performancemessung einen regelmäßigen Interrupt ausgeführt habe(die Zeit spielte keine Rolle, es war auch egal ob mit timer0 oder timer1) hat der controller total angefangen zu spinnen. zufällige ports wurden gesetzt, etc. (zumindest sah es für mich zufällig aus). Kann sein das dies auch aus einer fehlerhaft modifizierten Variable entstanden ist.
Ich hatte dann aber keine Lust mehr das Problem weiter zu verfolgen und habs anders gelöst.
Könnte aber sein das das das gleiche Problem ist...
Gruß,
Majus
Bluesmash
02.10.2008, 13:08
Danke für den Applaus :)
Ich schaue mir vielleicht heute abend mal die Assembler übersetzung meines codes an, mal schauen ob in der ISR ein register überschrieben wird welches nicht gesichert wird... sollte ja aber auch nicht sein, da ja Bascom alle Register sichert, ausser die, die für Floating-Point Berechnungen benutzt werden. die benutze ich ja aber auch nicht in der isr.... komische sache...
gruss bluesmash
Bluesmash
03.10.2008, 23:10
Hallo zusammen
Auf meiner Page gibt es ein neues Video:
http://www.bluesmash.roboterbastler.de/?Projekte_in_Arbeit:Hexabot:Videos
nicht viel neues an bewegungen, dafür ein schöneres video mit besserem bewegungsablauf...
gruss bluesmash
Klingon77
04.10.2008, 12:43
hi,
einfach nur schön anzusehen \:D/
...auch will... O:) \:D/
liebe Grüße,
Klingon77
squelver
04.10.2008, 14:19
Hey, hab mir das Video angeschaut und gleich mal nen Kommentar hinterlassen \:D/
Find den sehr eindrucksvoll ;)
Gruß Andreas
HannoHupmann
04.10.2008, 15:45
Beim Conrad hab ich gerade gesehen, dass es Metall Servohörner für 2€ das Päckchen gibt (sind 2 drin, ergo nur 1€ pro Stück). Außerdem sind noch bis Sonntag keine Transportkosten zu bezahlen. Das nur so als hinweis.
Bluesmash
12.10.2008, 20:53
Hallo Zusammen
Es gibt wieder neuigkeiten von meinem Hexa. Heute hat er seine ersten Schritte gemacht. Ich musste festellen, auch wenn man die IK einigermassen prorammiert hat, das laufen ist wieder ein völlig anderes Kapitel... Hier mal das erste Video des laufens... Ich bin noch überhaupt nicht zufrieden, aber wenigstens läuft er ;)
http://www.bluesmash.roboterbastler.de/?Projekte_in_Arbeit:Hexabot:Videos&normal
gruss Bluesmash
Omnibrain
12.10.2008, 23:31
Super schaut das aus ( hoffentlich werde ich irgendwann auch mal so gut ).Dürfte ich fragen was du bist jetzt an Geld in den Hexabot investiert hast? :-k
Bluesmash
13.10.2008, 20:23
Hallo Omnibrain
Also das teuerste sind mit abstand die Servos.
18 x 29.- = 522 SFr
6 x 10.- = 60 SFr für die Servohörner aus Alu
3 Lipo's mit Ladegerät 120.- SFr
Elektronik und Diverses ca. 150.-
50.- für die Kaffekasse für den, der die Teile gefertigt hat.
Komme aus der Schweiz und daher alle Preise in Franken, umrechnen darfst du selber ;)
gruss Bluesmash
Omnibrain
14.10.2008, 02:10
1 Schweizer Franken = 0,65 Euro am 13.10.2008 also kommen wir auf 585,10 Euro.Hochwertiger Hexabot kostet eben :wink:
HannoHupmann
14.10.2008, 12:17
@Bluesmash wieviel SPiel haben deine Beine? Sprich wie weit kannst du die Fusspitze hin und her bewegen wenn kraft auf den Servos ist. Ich hab jetzt für meinen auch Alu Servohörner besorgt, da es die beim C gerade für 1€ das Stück gibt.
Mit welcher Spannung versorgst du deine Servo und hast du direkt an den µC angeschlossen oder noch eine Zwischenschaltung gebastelt?
thewulf00
14.10.2008, 12:34
Ich hab jetzt für meinen auch Alu Servohörner besorgt, da es die beim C gerade für 1€ das Stück gibt.
Das ist der Punkt, an dem ich nicht mehr mitkomme. Ich habe vorhin geschaut, doch erst ab 4 Euro pro Horn was gefunden. Gib mir doch bitte mal Artikelnummern.
Und des weiteren: Woher weißt Du, ob die überhaupt passen? Wenn dort Maße stehen, wie misst man das Rädchen, auf das das Horn kommt, aus?
MeckPommER
14.10.2008, 13:14
Conrad vertickt grade seine Restbestände an runden Servohörnern. Schaue mal unter "servoh rund". Dies sind jedenfalls die, die ich verwende.
Für meine MG995 habe ich die passenden Futaba-kompatiblen Servoscheiben mit Gewinde genommen - passen prima :)
Ich habe mir da auch noch 6 Scheiben geholt - nachdem ich die vorherigen 18 noch zum vollen Preis gekauf habe *aua!* Seitens des Herstellers sind die wohl abgekündigt und auch anderswo im Netz findet man die nur zu extrem heftigen Preisen.
<offtopic>und wenn ich das Geld überhabe, fliegen meine MG995 in die Bastelkiste zurück, denn das Gewackel an den Beinen geht mir auf den *selbstzensiert* ^^</offtopic>
Bluesmash
14.10.2008, 18:48
@Hanno:
Das spiel ist je nach Kraftaufwand beliebig gross ;) Das Bein selber hat relativ wenig spiel, das grösste spiel liegt beim schulterservo (getriebe, servoregelung) da machen wenige Grad schon sehr viel aus, aber das kennst du ja sicher da du ja die selben Servos verwendest. Bis man merklich widerstand spürt beträgt das spiel schon ca. +/-10mm (Oberschenkel rechtwinklig nach aussen, unterschenkel senkrecht nach unten), es kommt halt extrem darauf an wie stark man auf die seite drückt...
Als Versorgung habe ich einen 11,4V Lipo und je für ein Beinpaar ein Schaltregler mit 6V Output und einer für die 5V Versorgung.
@All:
Ich verwende folgende Servohörner:
http://www.conrad.ch/goto.php?artikel=226679
diese sind speziell für Hitec Servo's. Ich habe auch andere probiert aber die Servohörner sind anscheinend von jedem Hersteller anders...
Frage an die Hexabauer hier im Forum:
wie habt ihr die Schritte programmiert? also speziell intressiert mich wie und wann ihr jedem Bein mitteilt dass es einen Schritt machen soll. Im moment habe ich es so gemacht dass immer nur ein Bein in der Luft sein darf. Die beincontroller sind alle mit einer Leitung verbunden und sobald ein Bein in der Luft ist wird die Leitung auf Low gezogen und so wissen die anderen Controller dass sie noch warten müssen.
Ausserdem hat jedes Bein einen begrenzten Arbeitsraum und sobald dieser überschritten wird, wird ein Schritt ausgeführt. Aber diese Lösung überzeugt mich noch nicht, da es immer wieder ungünstige Beinpositionen gibt.
gruss bluesmash
MeckPommER
14.10.2008, 20:32
Bei meinem Bot ist die Schrittsteuerung wie folgt geregelt:
Dazu sei kurz erwähnt, das ich das mit inverser Kinematik kombiniert habe. In der vorherigen Version war ein Atmega32 für zwei Beine zuständig - mittlerweile hab ich es so optimiert, das ein Atmega128 alle 18 Servos steuert, die IK berechnet und die Schrittsteuerung macht. Das Ganze bei einer Wiederholfrequenz um die 50Hz. Mehrere Controller hatten den Vorteil von mehr Rechenpower und den Nachteil, das zu viel Kommunikation mit der Schrittberechnung nötig war, damit keine unerlaubte Kombination aus schreitenden Beinen stattfand.
In der ersten Version hatte ich meinen Bot mit den verschiedensten Reihenfolgen programmiert, doch je nach Bewegung ist keine starre Reihenfolge optimal. Nun vergleicht der Bot 50 Mal pro Sekunde die Endposition der Beine mit einer optimalen Standposition des Bots in Ruhelage und berechnet, wie weit die einzelnen Beine von dieser optimalen Position entfernt sind. Nach entfernungsbezogener Sortierung ergibt sich eine Prioritätsliste, welche Beine am vordringlichsten Bewegt werden müßten und welche Beine keines Schrittes bedürfen.
Nun wird diese Liste abgearbeitet, vorbei zwei Faktoren ausschlaggebend sind:
Schrittmodi: es kann frei gewählt und sogar während des Laufens umgestellt werden, wieviele Beine gleichzeitig einen Schritt machen dürfen. Die erlaubte Anzahl geht von 1 bis 3. Dadurch, das der Controller die Schritte selber auslöst, ist er auch stets über die Anzahl der Beine informiert, die grade einen Schritt machen.
Ist die Anzahl der schreitenden Beine gleich der Anzahl der Beine, die gleichzeitig einen Schritt machen dürfen, so braucht die Liste nicht weiter angearbeitet zu werden, denn es dürfen sowieso keine Schritte mehr gemacht werden.
Das zweite wichtige Faktum ist die Tot-Liste - eine Liste, in der vermerkt ist, welche Beinkombinationen grundsätzlich verboten sind. So ist es z.B. nicht gestattet, das die beiden vorderen Beine gleichzeitig in der Luft sind. Ebenso ist es nicht gestattet, das z.B. das Bein vorne Links und das Bein mittig links gleichzeitig einen Schritt machen, u.s.w.
Ist das Bein, welches nun bewegt werden müßte dadurch blockiert, das seine Beinnummer zusammen mit der Beinnummer eines schreitenden Beins in dieser Totliste steht, so wird dieses Bein nicht bewegt und das Bein mit der nächstniedrigeren Priorität wird "begutachtet".
Es ist sehr interessant zu sehen, wie gut diese Methode funktioniert. Geht der Bot enge Kurven, so verharren die dem Drehmittelpunkt nahen Beine fast Schrittlos, während sich die äußeren Beine öfter Bewegen. Ebenso führt diese Methode bei 3 gleichzeitig gestatteten Schritten zur bekannten 3/3 Geh-Mehode, ohne das diese explizit vorgegeben ist.
Ein weiterer netter Nebeneffekt dieser Methode ist, das der Bot, wenn er anhält, alle Beine der Reihe nach in die Standposition bringt. Er verharrt also nicht mitten im Schritt oder in einer ungünstigen Standposition, von der aus er vielleicht schlecht in eine andere Richtung gehen kann.
Ich hoffe, ich konnte damit helfen :-)
Gruß MeckPommER
P.S.: ich finde deinen Bot richtig schick und gelungen! Ich bin schon gespannt auf weitere Videos :-)
P.P.S.: ausversehen hatte ich auch mal 4 gleichzeitig bewegte Beine erlaubt. Der Bot bewegte trotzdem stets nur maximal 3 Beine, da eine Bewegung des 4. Beines automatisch durch die Tot-Liste abgefangen wurde.
Bluesmash
14.10.2008, 21:13
Vielen Dank für deine ausführliche Erklärung! Das hilft mir sehr viel weiter! Habe mir gerade wieder einmal deine Videos angeschaut, der läuft wirklich sehr schön!
Wenn ich deine Methode richtig verstanden habe ist eigentlich immer irgend ein Bein in der Luft? und abhängig von der Vorwärtsgeschwindigkeit machen die Beine grössere oder kleinere Schritte?
gruss Bluesmash
MeckPommER
14.10.2008, 21:29
Zunächst war wirklich immer mindestens ein Bein in der Luft, auch bei kleinsten oder langsamsten Bewegungen. Ich habe dann aber recht schnell eine Mindestentfernung zur optimalen Position eingeführt, unter der ein Bein nicht bewegt wird.
Es stimmt, die Schrittlänge ist dabei variabel, da sich bei schnellerer Botgeschwindigkeit auch die optimale Position der Beine schneller "bewegt" und somit größere Schritte gemacht werden.
Einziger aus meiner Sicht noch zu optimierender Punkt ist (ich arbeite nebenbei immer mal wieder daran) das die Beine nur zur Standposition schreiten. Eigentlich (und so machen wir Menschen das beim Gehen ja auch) müßte der Bot das Bein über die Standposition hinaus etwas in Richtung der Gehrichtung bewegen. Dies birgt jedoch enorm viele Tücken
- wenn es zu plötzlichen Richtungswechseln kommt
- da der Vorsatz genau kalkuliert werden muss, damit das Bein je nach Geschwindigkeit nicht so weit in Gehrichtung landet, das der Bot es als entferntesten Bein gleich wieder zurückzieht.
- da es mit viel zusätzlichem Rechenaufwand verbunden ist
- da mein Bot sich manchmal bewegte wie eine Mischung aus James Brown und Joe Cocker *hust*
Na ja, habe in letzter Zeit viel an den Routinen optimiert und wenn ich mit dem SMD-Bau fertig bin, schaue ich mir das nochmal an.
Gruß MeckPommER
Bluesmash
14.10.2008, 21:54
Danke für deine Hilfestellung da kommt noch einiges an Programmieraufwand auf mich zu ;)
Aber als nächstes werde ich mich an das designen der Hauptplatine mit M128, bluetoothmodul und eventuell ein SD-Karten Slot machen damit das Drahtwirwar und die gute alte RN-Control vom Rücken des Bots verschwindet...
gruss Bluesmash
HeXPloreR
14.10.2008, 22:02
hallo,
ob ich den MeckPommER wohl mal bei der Gelegenheit hier fragen könnte:
in welcher Programmiersprache hast Du denn programiert würde mich brennend interessieren.
vielen dank + mfg
MeckPommER
15.10.2008, 06:31
Hallo HeXPloreR,
ca. 60% sind in Bascom und der Rest in Assembler.
Schleifenkonstrukte und komplexe Berechnungen sind in Ihrer Ausführungsgeschwindigkeit nicht sonderlich Sprachabhängig, da ist Bascom auch nicht schneller oder langsamer als z.B. C.
Anders sieht es e.B. bei der Kommunikation zwischen den einzelnen Modulen aus. Hier kann man durch den Einsatz von Assembler enorme Geschwindigkeitsteigerungen erzielen.
Auch viele A/D Sachen oder die Ansteuerung des externen Speichers somd in Assembler geschrieben.
Gruß MeckPommER
HannoHupmann
15.10.2008, 09:31
Versorgung habe ich einen 11,4V Lipo und je für ein Beinpaar ein Schaltregler mit 6V Output und einer für die 5V Versorgung.
So hab ichs mir fast gedacht, kannst du mir noch kurz schreiben welchen Schaltregler du da verwendest? Ich würde nämlich gerne die Stromversorgung meines Hexas auch etwas optimieren.
Bluesmash
16.10.2008, 10:03
Ich verwende folgenden Schaltregler: LM 2576S-ADJ (es war der günstigste und einfachste den ich gefunden habe ausserdem ist es relativ schwierig Schaltregler für hohe Ströme zu finden.)
Er ist für einen Dauerstrom von 3A ausgelegt und kurzzeitig bis 5.8A (wenn ich das Datenblatt richtig interpretiert habe)
zuerst hatte ich ein wenig bedenken ob der Regler für 2 Beinpaare ausreicht aber bis jetzt laufen die Regler relativ gut. Ich muss mal noch die Temperatur des Reglers kontollieren die er nach ein Paar Minuten Vollbetrieb hat.
gruss Bluesmash
1hdsquad
16.10.2008, 18:45
Schönes Gerät :)
HeXPloreR
16.10.2008, 19:14
thx @ MeckPommER
mfg
Bluesmash
28.10.2008, 20:30
So es gibt wieder etwas neues :)
Dank den guten Tips von MeckPommER habe ich nun den Laufalgorithmus geändert.
Und dank der super Arbeit von Radbruch kann ich nun meinen Hexa über den Nunchuk Controller der Nintendo Wii Steuern.
Nähere Details über das auslesen des Nunchuk gibt es hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=42153&postdays=0&postorder=asc&start=22
Und hier das neue Video mit der Nunchuk Fernbedienung:
http://www.bluesmash.roboterbastler.de/?Projekte_in_Arbeit:Hexabot:Videos
Ausserdem habe ich eine neue Möglichkeit entdeckt dem Hexa "Schuhe" zu verpassen, mit "Windows Color" diese wird normalerweise verwendet um Fensterbilder zu erstellen. Diese Farbe hat den Vorteil dass sie nach dem Aushärten wie eine art weicher Kunstoff ist. Ich habe die Farbe einfach in einen grösseren Behälter gefüllt und jedes Bein einmal eingetaucht. Die Farbe ist sehr dickflüssig und tropft dann auch nicht.
Ein Bild dazu gibt es hier:
http://www.bluesmash.roboterbastler.de/?Projekte_in_Arbeit:Hexabot
gruss Bluesmash
MeckPommER
28.10.2008, 21:21
Hey ... echt großes Kino!
Sehr genial, sowohl die Schuhe als auch das Video! Das sieht wirklich verdammt gut aus!
Begeisterte Grüße
MeckPommER
Bluesmash
28.10.2008, 21:28
Dankeschön! :)
Leider sind die "Schuhe" wie man es auch im Video hört nicht so sehr Schalldämpfend... und es macht immernoch einen Höllenlärm :( ich muss da noch etwas dämpfenderes finden bevor sich unsere Nachbarn unter uns sich beschwehren ;) eventuell die Wohnung mit Teppich auslegen.... :)
gruss Bluesmash
MeckPommER
28.10.2008, 21:40
Kleine Kinder machen eben Lärm, und es soll niemand sagen, das unsere Bots nicht auch irgendwie unsere Babys sind :-)
Hauptsache, die Reibung stimmt bei den Beinen. Was diese angeht, bin ich mit meinem Bot auch noch total unzufrieden. Ich finde nirgends Taster, die etwas aushalten und an denen man z.B. deine Schuhe "antrocknen" könnte.
Bluesmash
28.10.2008, 21:51
Aber das tolle an unseren "Babys": Schalter auf Off = Ruhe ;)
Von der Reibung ist diese Windowscolor Farbe sehr gut. Wenn er auf den Beinen steht ist es relativ schwierig ihn zu verschieben... mal schauen vielleicht kann ich das absetzen der Beine noch ein wenig verlangsamen damit er nicht so hart auftritt...
gruss Bluesmash
genial wie die steuerung funtioniert.
ev. kannst du die beine mehrmals in der farbe eintauchen und so eine dickere schicht erzeugen, welche besser dämpfen würde.
radbruch
28.10.2008, 23:55
Wirklich beindruckend. Wenn nicht die Berechnung der Beinbewegungen so nervig kompliziert wäre, würde mich so eine Spinne auch reizen ;)
Flummies sehen hübsch aus und haben Grip:
http://i3.ytimg.com/vi/Z7gb-9V5KY4/3.jpg (http://www.youtube.com/watch?v=Z7gb-9V5KY4)
http://www.youtube.com/watch?v=Z7gb-9V5KY4
Allerdings ändert sich der Aufsetzpunkt etwas mit der Beinstellung.
Den Nunchuk könnte man auch mitfahren lassen und den Neigungswinkel auf schrägem Gelände korrigieren. Oder man könnte erkennen wenn ein Bein auf einem Hinderniss aufsetzt...
Gruß
mic
Klingon77
29.10.2008, 09:29
hi Bluesmash,
da kann ich mich meinen Vorrednern nur anschließen:
großes Kino \:D/
Du hast meinen neidlosen Respekt \:D/
Bezüglich der Füße bin ich etwas enttäuscht, daß die Fingerfarbe nicht mehr leistet.
Meine Idee war es die Fußspitzen, wie Du es auch gemacht hast, in flüssigen Gummi zum umhüllen von Werkzeuggriffe zu tauchen.
Die ist von der Konstistenz wohl ähnlich wie die Fingerfarbe (darauf bin ich gar nicht gekommen; guter Ansatz!).
Wenn mehrmaliges Tauchen keine Verbesserung bringt könntest Du einen schmalen Streifen 2mm dickes Moosgummi an die Unterseite der Füße kleben.
Dann noch ein oder zweimal tauchen, damit das Moosgummi in der Farbe eingebettet ist.
Somit wäre es wohl möglich die originäre Form der Fußspitzen beizubehalten und dennoch zu dämpfen.
2mm dickes Moosgummi bekommt man bei uns als DIN A4 Bogen im OBI für kleines Geld.
Das die Katze sich vom Robby nicht beeindrucken ließ hat mich verwundert.
Unsere ist bei solchen Sachen immer sehr schreckhaft gewesen und hat sofort die Flucht ergiffen.
liebe Grüße,
Klingon77
Bluesmash
29.10.2008, 19:01
@all:
Vielen dank für das grosse Lob :)
@Radbruch:
Die berechnung der Beine ist ja gerade der reiz an der Sache ;) das Nunchuk als Lagesensor zu benutzen habe ich auch schon überlegt. Das ding ist einfach genial, einen Beschleunigungssensor selber aufzubauen und auszuwerten stelle ich mir relativ komplex vor (ausserdem kann man die ja fast nicht löten).
Diese Bälle haben sicher hervoragende Eigenschaften was den Grip und die Schalldämpfung angeht, aber von der Optik her... naja...
@Klingon77:
Ich wollte auch diesen Werkzeuggriff-gummi verwenden habe aber keinen im Baumarkt gefunden. Da habe ich die Bastelkiste meiner Freundin gelündert ;) Die Farbe ist aber nicht zu verwechseln mit der Fingerfarbe mit der man mit den Händen direkt auf die Fenster malt. Diese Farbe hat eher ähnlichkeit mit Silikon. Einmal an den Händen, bringt man sie fast nicht mehr ab ;)
Die Idee mit dem Moosgummi ist sehr gut! Da muss ich mal einen Versuch starten. Da der Lärm schon extrem nervt :(
Unsere zwei Katzen haben überhaupt keine Angst, meistens schenken sie dem Hexa gar keine Beachtung...
gruss Bluesmash
PCF8574P
29.10.2008, 19:21
Hallo Bluesmash
Sehr geil. Mehr kann ich net sagen.
Wäre es auch möglich mit einen EasyRadio oder ZigBee (oder vergleichbar) das ganze auch über Funk zu steuern?
MFG
Bluesmash
29.10.2008, 19:41
Das ganze über Funk zu steuern ist grundsätzlich kein Problem. z.B das EasyRadio Modul ist sehr einfach in der Ansteuerung und ersetzt eigentlich einfach eine Serielle-Kabelverbindung.
Ich habe mir noch ein Bluetooth Modul gekauft welches ich noch auf meinen Robby basteln will und eigentlich auch relativ einfach in der Ansteuerung ist.
Wenn wir gerade bei kabelloser Bedienung sind:
Ich habe mir noch ein Wireless Nunchuk von Nyko gekauft und dachte eigentlich dass es ja genau gleich angesteuert werden muss. Aber ich schaffe es einfach nicht auf dem Nunchuk Empfänger den Wireless Teil einzuschalten damit der das Nunchuk erkennt. Das Auslesen funktioniert grundsätzlich, aber alle Werte sind "0" da der Empfänger keine Daten vom Nunchuk erhält. Ich habe schon stundenlang das Internet durchforstet aber anscheinend hat noch Niemand ein Wireless Nunchuk benutzt...
irgendwie muss ich herausfinden welchen speziellen Befehl es braucht um den empfänger zu aktivieren...
Hat Jemand per Zufall einen Code für nen I2C-Sniffer zur Hand welcher auf nem Tiny oder Mega läuft? habe schon etwas gefunden aber die benötigten Teile habe ich Momentan nicht zur Hand... :(
gruss Bluesmash
Hi,
Wow das ganze sieht ja schon mal extrem super aus.
Und auf die Idee mit den Window-colors muss man auch erstmal kommen =D>
MFG XBert
aenimatronik
31.10.2008, 13:37
Moin !
Ich rede nur ungern dazwischen, aber ich merke hier sind Wissende vor Ort.
Ich bin Elektrotechnikstudent und möchte mit einem Mitkommilitonen auch einen Hexabot konstruieren. Ich habe dazu schon reichlich gelesen und möchte bald das Projekt mit ihm angehen. Wir wollen als erstes einen BOT bauen,der als Prototyp herhalten soll, damit wir damit Erfahrungen sammeln können. Das heißt, der erste Bot sollte nicht teurer sein als 250 euro.Nur beim Durchlesen der Beiträge , sind mir Fragen entstanden, die ihr mir hoffentlich bestens beantworten könnt.
Und zwar :
Ich konnte noch nichts dazu lesen was das Drehmoment der verwendeten Servos betrifft. Habt ihr eine Faustregel für das benötigte Drehmoment ?
Denn berechnen ist eine Sache aber die Praxis zeigt oft...
Des Weiteren habe ich oft was zu Gegenlagern gelesen,was absolut plausibel ist, aber wie habt ihr die realisiert ? Via CNC ? Wenn ja, wer hat es anders gemacht, denn ich habe keine CNC zur Verfügung.
Als letztes hätte ich noch gerne gewusst,was ihr unter INVERSER Kinematik versteht.
Danke im Vorraus.
Wenn wir an unserer FH so einen Hexabot bauen würden, könnten wir damit einen Stein ins Rollen bringen, denn sowas wird bei uns unterstützt.
Achja für alle Studenten unter euch : Wer im StudiVZ angemeldet ist, kann auch der von mir gegründeten Gruppe beitreten :
Hexabots - Germany
1hdsquad
31.10.2008, 13:48
Faustregel: Zuviel gibts nicht ;)
Gegenlager koennen schnell und billig an die andere Seite geklebt werden, ist halt nicht fuer die Ewigkeit.
http://de.wikipedia.org/wiki/Inverse_Kinematik Wenn du zB mit deinem Finger in der Nase bohren willst, werden die Stellungen der Gelenke dazwischen durch inverse Kinematik berechnet :D
HannoHupmann
31.10.2008, 14:04
@aenimatronik ,
Faustregel für Hexa Servos ist etwa 50Ncm bei einem Gesamtgewicht von 2-3kg. Genaueres kann und sollte man ausrechnen. Gerade wenn es ein Uni Projekt wird.
250€ sind sehr knapp bemessen, es wird wohl teurer werden für eine ordentliche Lösung.
Die Begriffe: Inverse Kinematik und Gegenlager sollten bekannt sein, sonst habt ihr euch noch nicht genug eingelesen.
HannoHupmann
31.10.2008, 14:05
@aenimatronik ,
Faustregel für Hexa Servos ist etwa 50Ncm bei einem Gesamtgewicht von 2-3kg. Genaueres kann und sollte man ausrechnen. Gerade wenn es ein Uni Projekt wird.
250€ sind sehr knapp bemessen, es wird wohl teurer werden für eine ordentliche Lösung.
Die Begriffe: Inverse Kinematik und Gegenlager sollten bekannt sein, sonst habt ihr euch noch nicht genug eingelesen.
aenimatronik
31.10.2008, 14:28
Es ist kein Projekt der FH ! Es ist ein privates Projekt, dass ich mit einem Mitkommilitonen realisieren möchte.
Nochmal zu den Gegenlagern : Habt ihr die selbst gebaut oder irgendwo fertig bekommen ?
Dieser Hexabot soll ein erster Versuch sein ! Deshalb soll er so "günstig" sein.
Bluesmash
31.10.2008, 14:52
Für die gegenlager gibt es soviele lösungen wie es hexas gibt ;)
jeder überlegt sich die für ihn einfachste und machbare lösung... ich hatte das glück und konnte sie auf einer fräsmaschine herstellen lassen...
schau dich einfach ein bisschen um dieses thema wurde schon oft diskutiert...
gruss Bluesmash
HannoHupmann
31.10.2008, 16:35
Auch wenns ein Privates Projekt ist, so erwarte ich von nem Studenten der Ingenieurwissenschaften, dass er sich soweit damit beschäftigt um Drehmoment und IK selbst ausrechnen zu können.
Es gibt keine Versuche bei Hexas! Entweder richtig oder gar nicht.
Einzig irgendwas schnelles aus Balsaholz würde als Versuch durchgehen. Da gibts dann aber auch keine Wiederholgenauigkeit bei den Beinen und schon gar keine sauberen Bewegungen.
Außerdem gilt es erst mal die Frage zu klären 2DOF oder 3DOF am Bein.
Es gibt soviele Hexas die hier im Forum gebaut und besprochen werden, da lassen sich eigentlich gerade die Grundlagen wunderbar abklären.
aenimatronik
23.11.2008, 11:25
@ Hanno
Ich habe mir das alles noch mal überlegt, was du mir geschrieben hast und habe mir eine Lösung gesucht. Wir werden das Projekt doch ernster nehmen als anfänglich gedacht. Wir suchen uns einen Sponsor
aenimatronik
23.11.2008, 11:29
Ich habe auch nochmal eine Frage an die anderen !
Was für einen Mikrokontroller nutzt ihr zur Steuerung und vor allem wieviele ?
Bluesmash
12.12.2008, 17:20
Also ich nutze Pro Beinpaar ein Mega168, als Master einen M32, im Displaymodul einen M8 und im Stromversorgungsmodul einen M32....
gruss Bluesmash
ikarus_177
12.12.2008, 17:50
Hi,
ich bin da sehr viel "verschwenderischer":
pro Bein einen M32, und zur Steuerung des IK - Subsystems meines Bots nochmal einen M32^^
Viele grüße
HannoHupmann
12.12.2008, 19:11
Ich brauch nur einen Propeller Chip für alles ;-)
aenimatronik
17.12.2008, 19:12
Meine Herren ! Ich bin entsetzt! Nein nicht wirklich .^^
Ich hätte geschätzt, dass im Schnitt ein großer Mikrokontroller zum Einsatz kommt.
Warum habt ihr euch für soviel entschieden ?
Vielleicht um ein gewisse Multitasking-Fähigkeit zu erzeugen ?
ikarus_177
17.12.2008, 21:11
Hi,
klar spielt da die Multitasking-Fähigkeit eine nicht ganz untergeordnete Rolle. Sicherlich ist es praktisch, wenn die Auswertung der Sensoren dezent im Hintergrund von einem eigenen uC erledigt wird, der die passend zugschnittenen und "vorverdauten" Sensorwerte zur Verfügung stellt.
Andererseits gibt es die leistungsfähigeren Microcontroller, wie zum Beispiel den Mega2560 bzw. irgendwelche ARM - Controller, jetzt mal abgesehen vom PropellerChip von Hanno, nur in SMD - Ausführung, was ein Löten auf z.B. Lochraster sehr schwierig macht. Außerdem sind diese uC's oft teurer als mehrere (schwächere) Controller, die zusammen dieselbe Leistung bringen.
Außerdem hilft diese "Parallelarchitektur", die einzelnen Programme schön klein und übersichtlich zu halten, würdest du die komplette Steuerung eines Hexapoden von einem Controller übernehmen lassen (entsprechender Programmspeicher vorausgesetzt), inklusive aller Sensoren und einer gewissen "Intelligenz", wäre das ein ganz schöner "Brocken von einem Programm".
Das waren zumindest die Gründe, die mich bewegt haben, meinen Bot wie beschrieben aufzubauen...
Viele Grüße
HannoHupmann
18.12.2008, 20:16
meistens kauft man sich bei denen langen Programmen dann auch noch ein, dass alles in einer while(1) schleife unterkommen muss und dann fängts an mit Laufzeitproblemen und Speicherplatz wird dann auch meisten eng. Außerdem hat selbst ein besser Controller nur so an die 40 pins und davon kann man nicht immer alle als I/O Ports verwenden, meiste eng mit Servos und Sensoren.
NXTbotFreak
06.04.2009, 08:27
Mensch, ganz schön aufwendig, wie sind den die Servos im Programm koordiniet, wie wird der Roboter programmiert, was sieht man auf dem Display und in welcher Programmiersprache wurde der Roboter Programmiert? (Ich weiß, dass frag ich jeden, aber ich will ja noch was lernen ;-) )
Hallo an alle :)
Ich wollte mal fragen welche Ausgänge ihr vom uC benutzt. Ich wollte die PWM Ausgänge verwenden. Oder ist das garnicht notwendig?
mfg Zwiebel =D>
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.