Forum: Mikrocontroller und Digitale Elektronik Positionsbestimmung, Sensorfusion, Fehlerbehaftet


von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Hallo Zusammen,

ich habe derzeit ein Problem bei der Bestimmung einer Position.
Nehmen wir an wir haben ein Objekt dass Linear mittels eines Motors und 
einem Seil hin und her bewegt wird.

Der Motor hat einen Motorencoder (Drehgeber). Die Daten des 
Motorencoders sind quasi sofort verfügbar, aber beinhalten einen Fehler 
durch Schlupf, Dehnung und Stauchung des Seiles.
Zusätzlich wird die Position des Objektes mit einem linearen 
Absolutencoder erfasst. Die Absolutposition wird über CAN übertragen. 
Das Telegramm beinhaltet ausserdem die Geschwindigkeit 
(Positionsdifferenz zw. 10ms).

Zwischen zwei Absolutpositionsberechnungen (innerhalb des Sensors) 
vergehen hinreichend genau 10ms.

Der CAN-Bus ist ziemlich ausgelastet und ich habe keine Information 
darüber wie "alt" die Nachricht ist, außer dass sie höchstens 10ms alt 
ist. Der Abstand zwischen zwei eintrudelnden CAN-Botschaften ist nicht 
konstant!
Dadurch habe ich auch einen Fehler in der absolutposition (solange das 
Objekt in Bewegung ist, im Stillstand -> Kein Problem!).

Ich möchte nun die Position (s(T))ohne Fehler (oder mit minimalem 
Fehler) ausrechnen. Gibt es dazu Möglichkeiten?

Die Position wird dann weiter verarbeitet und es wird daraus eine 
Fahrkurve berechnet.

Es reicht die Position während der Konstantfahrphase (a(T)=0) zu 
stützen.

Hat jemand eine Idee oder einen Ansatz? Eventuell auch eine 
Buch/Internet Empfehlung für mich?

von Stm M. (stmfresser)


Lesenswert?

Ein Kalman Filter würde das Problem lösen.

von W.S. (Gast)


Lesenswert?

Wie?

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Genau, wie?
Aber die vage Vermutung hatte ich auch schon dass es damit irgendwie 
gehen könnte. Ich werde mich mal einlesen.
Danke

von Yalu X. (yalu) (Moderator)


Lesenswert?

Du brauchst mehr Informationen über

Christopher B. schrieb:
> Schlupf, Dehnung und Stauchung des Seiles

Sind diese Größen beliebig, sind die Messwerte des Motorencoders nichts
wert. Mit dem Absolutgeber alleine ist wegen der schwankenden Totzeiten
keine hinreichend genaue Positionsschätzung möglich, also ist dein
Problem nicht lösbar.

Aber vielleicht kann man davon ausgehen, dass die Dehnung bzw. Stauchung
des Seils während der Phasen ohne Beschleunigung bekannt und während
einer konstanten Beschleunigung vielleicht nicht bekannt, aber zumindest
ebenfalls konstant ist.

Woher kommt der Schlupf? Wird das Seil über eine Rolle per Reibung
angetrieben? Was weiß man sonst noch über den Schlupf (Maximalwert
u.ä.)?

Je genauer dein Schlupf-Dehnungs-Modell ist, desto höher sind die
Chancen, die Enocderdaten gewinnbringend in eine Gesamtrechnung
einbringen zu können.

Für den Absolutgeber hast du ja die Messfrequenz und Obergrenze der
Totzeiten genannt, was schon einmal einen guten Ausgangspunkt darstellt.
Aber vielleicht gibt es auch hier noch weitere nützliche Informationen.

Perfekt wird die Positionsschätzung nie werden, aber jedes Plus an
Information über die Messdaten kann dazu beitragen, den Fehler zu
reduzieren. Erst, wenn du den größten Teil dieser Informationen
beisammen hast, mach es Sinn, über die einzusetzenden Methoden
(Kalman-Filter oder was auch immer) nachzudenken.

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Hallo Yalu,
danke, das ist doch schon mal eine Ansage :)

Yalu X. schrieb:
> Du brauchst mehr Informationen über
>
> Christopher B. schrieb:
>> Schlupf, Dehnung und Stauchung des Seiles
>
> Sind diese Größen beliebig, sind die Messwerte des Motorencoders nichts
> wert. Mit dem Absolutgeber alleine ist wegen der schwankenden Totzeiten
> keine hinreichend genaue Positionsschätzung möglich, also ist dein
> Problem nicht lösbar.
>
> Aber vielleicht kann man davon ausgehen, dass die Dehnung bzw. Stauchung
> des Seils während der Phasen ohne Beschleunigung bekannt und während
> einer konstanten Beschleunigung vielleicht nicht bekannt, aber zumindest
> ebenfalls konstant ist.
Die Dehnung ist leider nicht bekannt. Aber man kann davon ausgehen, dass 
sie in Phasen konstanter Geschwindigkeit (a=0) konstant ist. Wie es mit 
konstanter Beschleunigung (a!=0, a'=0) aussieht weiß ich nicht. 
Eventuell kann ich das herausfinden.

> Woher kommt der Schlupf? Wird das Seil über eine Rolle per Reibung
> angetrieben? Was weiß man sonst noch über den Schlupf (Maximalwert
> u.ä.)?
Genau, über eine Rolle per Reibung. Entschuldige, diese Information 
hatte ich glatt unterschlagen.

> Je genauer dein Schlupf-Dehnungs-Modell ist, desto höher sind die
> Chancen, die Enocderdaten gewinnbringend in eine Gesamtrechnung
> einbringen zu können.
>
> Für den Absolutgeber hast du ja die Messfrequenz und Obergrenze der
> Totzeiten genannt, was schon einmal einen guten Ausgangspunkt darstellt.
> Aber vielleicht gibt es auch hier noch weitere nützliche Informationen.
Ich kann zumindest Bereiche für die Verzögerung der Absolutdaten 
angeben.
Ich habe allerdings erst Mittwoch wieder Zugriff auf diese Daten.
Ich meine von Samplezeitpunkt bis Übergabe an den Cancontroller vergehen 
0,8-1,3ms. Insgesamt trudeln die Daten im 8-14ms Raster rein.

> Perfekt wird die Positionsschätzung nie werden, aber jedes Plus an
> Information über die Messdaten kann dazu beitragen, den Fehler zu
> reduzieren.
Das stimmt mich schonmal positiver.

Danke auch an alle anderen Beteiligten.

LG
Christopher

von W. (Gast)


Lesenswert?

Christopher B. schrieb:
> Genau, wie?
> Aber die vage Vermutung hatte ich auch schon dass es damit irgendwie
> gehen könnte. Ich werde mich mal einlesen.

Könntest Ja anschließend Deine Ergebnisse publizieren, wenn Du magst.

von Wolfgang (Gast)


Lesenswert?

Christopher B. schrieb:
> Die Dehnung ist leider nicht bekannt. Aber man kann davon ausgehen, dass
> sie in Phasen konstanter Geschwindigkeit (a=0) konstant ist.

Die Dehnung ist noch die einfachste Größe. Da wird nach einer 
anfänglichen Alterung des Seils ein handhabbarer Zusammenhang zwischen 
Dehnung und Kraft auf dem Seil bestehen, den man nur ausmessen muss und 
ggf. mit einem adaptiven Modell aktuell hält.

von dunno.. (Gast)


Lesenswert?

Christopher B. schrieb:
> Ich meine von Samplezeitpunkt bis Übergabe an den Cancontroller vergehen
> 0,8-1,3ms. Insgesamt trudeln die Daten im 8-14ms Raster rein

Wie beeinflussbar ist denn das gesamtsystem jetzt noch von dir?

Den jitter bei der Übergabe könnte man doch sicher reduzieren. Und das 
raster der messages sollte ja durch geschickte priorisierung der 
messages auch beeinflussbar sein..

von Schorsch X. (bastelschorsch)


Lesenswert?

Wie wäre es den CAN-Daten einen Zeitstempel mitzugeben. So läßt sich 
zumindest der Jitter erfassen.

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.