Forum: Mikrocontroller und Digitale Elektronik Bahnsteuerung mit S-Kurve plötzlich bremsen


von Pepe (Gast)


Lesenswert?

Hallo,
bin dabei einen Achscontroller zu schreiben. Der soll eine Fahrt mit 
S-Kurven-Profil machen. Wegen des Rechenaufwand teile ich eine Fahrt in 
max. 7 Abschnitte ein und berechne diese vor. Soweit funktioniert dies 
auch.
Jetzt muss ich aber unvorhersehbar auf Grund eines externen Signals 
bremsen ( z.B. Limitschalter oder Coverswitch ).
Wie kann ich ein Bremsen während der Jerk & Beschleunigungsphase 
hinbekommen, wenn ich die vorgegebene Verzögerungskurve einhalten soll ?

Danke, Pepe.

von Detlef K. (adenin)


Lesenswert?

Kennst Du auch Snap, Crackle und Pop?
Diese interssante Lektüre könnte Dir bei deinem Problem eventuell 
weiterhelfen.
https://info.aiaa.org/Regions/Western/Orange_County/Newsletters/AIAAOC_SnapCracklePop_docx.pdf

von Pepe (Gast)


Lesenswert?

Nö. Hatte ich bis jetzt nicht gekannt. Danke für die Info.
Hilft mir aber (glaube ich) nicht weiter.

Ich brauche eine Lösung für das spontane Abbremsen der Achse, z.B. 
während der Beschleunigungsphase. Schalte ich sofort auf Verzögerung hab 
ich doch im nächsten Regelungstakt eine schlagartige Umkehrung von 
Beschleunigung auf Verzögerung. Also eigentlich 200% im Vergleich zu 
einer Trapezkurve. Aber genau dies möchte man ja durch die Verwendung 
des Jerks reduzieren.

Also wie kann man eine Jerk-ähnlich Bremsung am besten implementieren ?

von Detlef K. (adenin)


Lesenswert?

Ich glaube da besteht ein kleines Verständnisproblem dessen, was Jerk 
ist.
Jerk ist die Änderung der Beschleunigung über die Zeit, etwas, das man 
als Ruck (engl. jerk) verspürt.

Du möchtest eine "Ruck-ähnliche Bremsung" ?

: Bearbeitet durch User
von David .. (volatile)


Lesenswert?

Detlef Kunz schrieb:
> Ich glaube da besteht ein kleines Verständnisproblem dessen, was Jerk
> ist.
> Jerk ist die Änderung der Beschleunigung über die Zeit, etwas, das man
> als Ruck (engl. jerk) verspürt.
>
> Du möchtest eine "Ruck-ähnliche Bremsung" ?

Ich denke, er moechte den Ruck begrenzen, ich kenn das von 
Industrierobotern. Schont die Substanz...
Anderes Thema: Wie kann ich mir Snap, Crackle und Pop vorstellen? 
Mathematisch ist klar was gemeint ist, aber gefuehlsmaessig? Wie nehme 
ich die Ableitung des Rucks war, und deren Ableitung usw?

von Detlef K. (adenin)


Lesenswert?

David ... schrieb:
> Wie nehme
> ich die Ableitung des Rucks war, und deren Ableitung usw?

Mensch nehmen das nicht wahr, sonst hätten sie für diese Wahrnehmungen 
andere Namen als Snap, Crackle und Pop. ;)

David ... schrieb:
> Ich denke, er moechte den Ruck begrenzen,

Das ist mir auch klar, aber dem TO soll es auch klar werden.
In dem von mir verlinkten pdf ist doch das Grundwissen für die Lösung 
drin.

von David .. (volatile)


Lesenswert?

Detlef Kunz schrieb:
> David ... schrieb:
>> Wie nehme
>> ich die Ableitung des Rucks war, und deren Ableitung usw?
>
> Mensch nehmen das nicht wahr, sonst hätten sie für diese Wahrnehmungen
> andere Namen als Snap, Crackle und Pop. ;)

Hmpf, Punkt fuer dich, macht es aber nicht besser ;)

von Detlef K. (adenin)


Lesenswert?

David ... schrieb:
> Hmpf, Punkt fuer dich, macht es aber nicht besser ;)

Mal sehen (eigentlich nur fühlen) :)

Position nimmt der Mensch (gefühlt !) nicht wahr.
Geschwindikeit nimmt der Mensch (gefühlt !) nicht wahr.
(konstante) Beschleunigung nimmt der Mensch als konstante Kraft wahr.
Jerk (Änderung der Beschleunigung, Ruck) nimmt der Mensch bei langsamer 
Änderung der Beschleunigung als sich ändernde Kraft, die auf ihn wirkt 
wahr.
Schnelle Änderungen als Ruck. Das liegt daran, das man versucht die 
Kraft auszugleichen, um die Position zu halten. Ändert sich die Kraft 
schnell, und man kann nicht so schnell "Nachregeln", dann kommt es zum 
Überschwingen der "Regelung" --> gefühlter Ruck.

von David .. (volatile)


Lesenswert?

Detlef Kunz schrieb:

> Schnelle Änderungen als Ruck. Das liegt daran, das man versucht die
> Kraft auszugleichen, um die Position zu halten. Ändert sich die Kraft
> schnell, und man kann nicht so schnell "Nachregeln", dann kommt es zum
> Überschwingen der "Regelung" --> gefühlter Ruck.

Hm. Und weil die Aenderung der Beschleunigung fuer die Wahrnehmung als 
Ruck schnell sein muss, kann man die hoeheren Ableitungen erst Recht 
nicht wahrnehmen? Damit lass ich es erstmal gut sein ;)

von Detlef K. (adenin)


Lesenswert?

Hmm, wenn die Kraftänderung nicht konstant ist, könnte einem vielleicht 
mächtig übel werden. Vielleicht sollte man Snap in Sick umbenennen ;)
Ich glaube, das könnte für die Seekrankheit verantwortlich sein.
(Nur mal vom Gefühl her.).

von David .. (volatile)


Lesenswert?

Detlef Kunz schrieb:
> Hmm, wenn die Kraftänderung nicht konstant ist, könnte einem vielleicht
> mächtig übel werden. Vielleicht sollte man Snap in Sick umbenennen ;)

Wenn du mutig bist, darfst du Industrieroboterreiten kommen und das 
erfuehlen :3

> Ich glaube, das könnte für die Seekrankheit verantwortlich sein.
> (Nur mal vom Gefühl her.).

Ist Seekrankheit nicht die Diskrepanz zwischen verschiedenen Sinnen? Ich 
war zB neulich im Technikmuseum Sinsheim in der Concorde. Die steht 
ziemlich schraeg, aber wenn man in ihr steht, gibts kein optisches 
Merkmal fuer die Steigung. Das macht auch ziemlich schummrig - eben wie 
in (zwischenzeitlich) gekippten Schiff, was man innen nicht sehen kann.

von Pepe (Gast)


Lesenswert?

Detlef Kunz schrieb:
> Ich glaube da besteht ein kleines Verständnisproblem dessen, was Jerk
> ist.

Mir ist klar, was der Jerk bedeutet. Hatte eigentlich - wie David 
schreibt - eine Begrenzung des Rucks im Kopf.
Eigentlich hatte ich auf eine Lösung gehofft, die etwas 
Programmierer-freundlicher wäre.

Die Berechnungen wie im Kapitel III des Links hab ich ja schon so weit. 
Nur mein Mathe reicht gerade nicht aus, ein Polynom 3. Grades zu 
berechnen, wenn ich noch eine Anfangsgeschwindigkeit V<>0 ( weil ich ja 
schon fahre ) habe. Kann anscheinend auch nicht ganz trivial sein, weil 
viele Hersteller von (einfachen) Achscontrollern bei S-Kurvenfahrten 
eine Änderung der Zielposition On-The-Fly nicht erlauben.

von Detlef K. (adenin)


Lesenswert?

Du gehst die Sache falsch an.
Die Anfangsgeschwindigkeit ist nicht wirklich dein Problem, eher die 
Physik.
Geschwindigkeit ist relativ. ;)
Wenn sich dein Objekt mit 1m/s Anfangsgeschwindigkeit bewegt, und Du es 
auf 0m/s abbremsen willst, dann definier dein Bezugssystem um.
Sag einfach, dein Objekt bewegt sich mit 0m/s Anfangsgeschwindigkeit und 
du willst es auf -1m/s beschleunigen. ;)

Deine Sorge sollte der Anfangsbeschleunigung gelten, weil Du sie jetzt 
nicht einfach auf 0 setzen kannst. :P

: Bearbeitet durch User
von Pepe (Gast)


Lesenswert?

Du hast recht. Physikalisch betrachtet sprechen wir von der aktuellen 
Beschleunigung, die mir das Leben schwer macht.

Hab das Ganze zu stark aus Sicht der Bahnsteuerung ( sprich Sourcecode ) 
aus betrachtet.

Muss jetzt erst mal in mich gehen... und vielleicht kann ich mich auch 
noch erinnern wo mein Orear oder Papula sind.

von noeppkes (Gast)


Lesenswert?

Hallo Pepe.

Sehr interessant was du da machst.
Ich will auch gerade umstellen auf S Kurve.
D.h. Beschleunigung mit Ruckbegrenzung.
Wärst du so nett und würdest dein Source Code hier (oder mir direkt) zur 
Verfügung stellen.
Ich bin da noch nicht ganz so weit wie du und suche noch Formeln für die 
Berechnung.

noeppkes ...

von Christian A. (noeppkes)


Lesenswert?

Hallo Pepe.

Hab mich jetzt noch angemeldet, dann könntest du mir direkt den Source 
Code senden. Wäre sehr hilfreich. Vielleicht kommen wir da zusammen 
weiter.

Danke.

noeppkes ...

von Pepe (Gast)


Lesenswert?

Hallo.
Hab mich die letzten Wochen mit allem Anderen beschäftigt, nur nicht mit 
der Implementierung der S-Kurve.

Habe meine bisherige Implementierung verworfen, da ich das Bremsen nicht 
sauber
implementieren könnte. Außerdem möchte ich noch eine Möglichkeit 
einbauen, damit ich die Endposition On-The-Fly ändern kann (wenigstens 
in gewissen Grenzen). Werde wohl auf einen Ansatz mit einem "Motion 
Planer" umsteigen, der mir kontinuierlich die nächsten paar Wegpunkte 
berechnet. Da fange ich heute aber erst an :-)

Im Link findest du die Herleitung für die Formeln. Hat mir zum 
Verständnis viel gebracht.
http://www.inmechasol.com/fullpanel/uploads/files/motionplanning-01.pdf

Falls der Links nicht mehr funktioniert, hier der Titel "CONSTANT JERK 
EQUATIONS FOR A TRAJECTORY GENERATOR"

Hat sonst jemand noch weiterführende Infos?

Pepe.

von Pepe (Gast)


Lesenswert?

Hallo.
Hab noch was vergessen.
Unter http://www.copleycontrols.com/ findest Du ein Java-Script, welches
die Zeit für eine S-Curve berechnet. Leider funktioniert das Script im 
Browser
bei mir nicht mehr. Hat es aber schon mal :-)

http://www.copleycontrols.com/Motion/Java/calculator-Scurve.html

Ist auf alle Fälle schon mal eine Basis.

Pepe

von Christian A. (noeppkes)


Lesenswert?

Hallo Pepe.

Bin gerade wieder hier her gekommen und hatte gesehen, dass du vor 
längerer Zeit geschrieben hattest.
Bist du bei der S-Kurve weitergekommen?
Würde mich sehr interessieren.
Das pdf Dokument ist auch sehr interessant. Das Java-Script läuft bei 
mir übrigens auch nicht.

noeppkes ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.