https://www.roboternetz.de/phpBB2/ze...=402225#402225

Zitat Zitat von MeckPommER
...Schrittsteuerung wie folgt geregelt:
... inverser Kinematik kombiniert...mittlerweile so optimiert, das ein Atmega128 alle 18 Servos....

...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...

Gruß MeckPommER

P.S.: ...

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.

hallo

...also ich überlege ernsthaft in die "C-Programmierwelt" aufzubrechen, wenn ich sowas interessantes lese. Inverse Kinematik zu programmieren gehört auch zu meinen Zielen. Weiß zwar nicht "in was" da programmiert wurde, aber das sollte in "C" auch funktionieren.
Ich werde also erstmal weiter diesen Weg gehen das ich EVA das per BCP (BehaviorControlProgramer) und MotionEditor was ich momentan von ihr möchte beibringe: vorwärts, rückwärts, drehen, nicht vom Tisch fallen, Kraftmessung, Temperatur-Kontrolle, "Suizid-Alarm-Shutdown" (SAS).
In das Programm muß eine Akkuabfrage integriert werden.
Ebenso eine Sicherheitsabfrage für die Position der Servos-bei Störungen spinnt da schon mal einer rum und fährt überhall hin nur nicht wohin er sollte. Die Kraft dabei ist nicht gerade unerheblich, und er muß sofort manuell abgeschaltet werden um Schäden zu vermeiden. Da bei Störungen der Ausgabewert auf 1023 geht könnte man damit so eine Abfrage realisieren, allerdings mit dem schönen Aufwand jeden DXL einzelnt abfragen zu müssen. Besser wäre hier eine Funktion die allgemein eine Aktion auslöst wenn irgendein Servo einen der artigen Wert aufweist. Da habe ich aber bis jetzt im BCP nichts weiter gefunden. Sonst bleibt nur noch mit der Kraft allgemein runtergehen, aber ob das den gewünschten Erfolg hat bleibt fraglich bis der Fall eintritt.

Werde wahrscheinlich das I/O-Board für Bioloid bestellen, und mal schauen was damit geht. Ich hoffe das ich das dann erstmal mit dem BCP betreiben und zusätzliche Sensoren ansteuern kann. Leider vermute ich daß das nichts wird....also "C" muß her

(2 x) 3er LiPo's werden bestellt, auslesen der Netzteilspannung gibt nen Wert von 14V (Wert 140) ohne Ladebetrieb aus. 3LiPo-Zellen sollten ihren Dienst gut tun. Vielleicht zwei in parallel für längere Power??

Ich bräuchte mal eine Rückmeldung wie lange bei Euch so ein Bot/Servo in etwa läuft bis er zu warm wird?
Und wie lange er mit einer frischen Akkuladung (9,6V 2300mAh NiMH) etwa läuft?
Bei mir wird ein Servos ca. 70°C heiß, und läuft so ca. 20min durch.

Wenn sonst jemand mal nen guten Tipp oder ne Idee hat immer ruhig her damit, vielleicht ist was für mich dabei [-o<

@ barbar: hoffe hab dich nicht verschreckt...habs leider noch nicht wieder weiter probiert.


mfg

http://www.myvideo.de/watch/5254352/Bioloid_EVA_laeuft