Das ist einfach, dachte ich, aber mein naiver Ansatz führte zu einem sehr lauten Ergebnis. Ich habe diese Beispielzeiten und -positionen in einer Datei mit dem Namen t_angle.txt:
0.768 -166.099892
0.837 -165.994148
0.898 -165.670052
0.958 -165.138245
1.025 -164.381218
1.084 -163.405838
1.144 -162.232704
1.213 -160.824051
1.268 -159.224854
1.337 -157.383270
1.398 -155.357666
1.458 -153.082809
1.524 -150.589943
1.584 -147.923012
1.644 -144.996872
1.713 -141.904221
1.768 -138.544807
1.837 -135.025749
1.896 -131.233063
1.957 -127.222366
2.024 -123.062325
2.084 -118.618355
2.144 -114.031906
2.212 -109.155006
2.271 -104.059753
2.332 -98.832321
2.399 -93.303795
2.459 -87.649956
2.520 -81.688499
2.588 -75.608597
2.643 -69.308281
2.706 -63.008308
2.774 -56.808586
2.833 -50.508270
2.894 -44.308548
2.962 -38.008575
3.021 -31.808510
3.082 -25.508537
3.151 -19.208565
3.210 -13.008499
3.269 -6.708527
3.337 -0.508461
3.397 5.791168
3.457 12.091141
3.525 18.291206
3.584 24.591179
3.645 30.791245
3.713 37.091217
3.768 43.291283
3.836 49.591255
3.896 55.891228
3.957 62.091293
4.026 68.391266
4.085 74.591331
4.146 80.891304
4.213 87.082100
4.268 92.961502
4.337 98.719368
4.397 104.172363
4.458 109.496956
4.518 114.523888
4.586 119.415550
4.647 124.088860
4.707 128.474464
4.775 132.714500
4.834 136.674385
4.894 140.481148
4.962 144.014626
5.017 147.388458
5.086 150.543938
5.146 153.436089
5.207 156.158638
5.276 158.624725
5.335 160.914001
5.394 162.984924
5.463 164.809685
5.519 166.447678
und wollen Geschwindigkeit und Beschleunigung schätzen. Ich weiß, dass die Beschleunigung konstant ist, in diesem Fall ungefähr 55 Grad / s ^ 2, bis die Geschwindigkeit ungefähr 100 Grad / s beträgt, dann ist die Beschleunigung Null und die Geschwindigkeit konstant. Am Ende beträgt die Beschleunigung -55 ° / s ^ 2. Hier ist Scilab-Code, der sehr verrauschte und unbrauchbare Schätzungen insbesondere der Beschleunigung liefert.
clf()
clear
M=fscanfMat('t_angle.txt');
t=M(:,1);
len=length(t);
x=M(:,2);
dt=diff(t);
dx=diff(x);
v=dx./dt;
dv=diff(v);
a=dv./dt(1:len-2);
subplot(311), title("position"),
plot(t,x,'b');
subplot(312), title("velocity"),
plot(t(1:len-1),v,'g');
subplot(313), title("acceleration"),
plot(t(1:len-2),a,'r');
Ich dachte daran, stattdessen einen Kalman-Filter zu verwenden, um bessere Schätzungen zu erhalten. Ist es hier angebracht? Ich weiß nicht, wie ich die Filer-Gleichungen formulieren soll, die mit Kalman-Filtern nicht sehr erfahren sind. Ich denke, der Zustandsvektor ist Geschwindigkeit und Beschleunigung und das In-Signal ist Position. Oder gibt es eine einfachere Methode als KF, die nützliche Ergebnisse liefert?
Alle Vorschläge willkommen!