Anda dapat mencoba membatalkan filter. Ini dapat menghilangkan kelambatan, tetapi juga meningkatkan kebisingan frekuensi tinggi. Setelah melakukan ini, Anda dapat mencoba mengendalikan robot berdasarkan perkiraan heading yang baru. Untuk melakukan ini, Anda harus bereksperimen untuk mengetahui parameter filter low pass. Misalnya, dalam waktu yang terpisah, Anda mungkin menemukan:
di mana θ (t)adalah perkiraan pos (kompas output) pada waktut,θadalah heading aktual (ground truth) pada waktut.
θ^( t ) = a0θ ( t ) + a1θ ( t - 1 ) + ⋯ + akθ ( t - k )
θ^( t )tθt
Anda dapat menemukan parameter dengan melakukan percobaan di mana Anda mengukur kebenaran tanah menggunakan beberapa cara eksternal lainnya. Mengingat n + k + 1 sampel, Anda memiliki persamaan
ini: [ θ ( k ) ⋮ θ ( k + n ) ] = [ θ ( k ) θ ( k - 1 ) ⋯ θ ( 0 ) ⋮ ⋮Sebuahsayan + k + 1
⎡⎣⎢⎢⎢θ^( k )⋮θ^( k + n )⎤⎦⎥⎥⎥= ⎡⎣⎢⎢θ ( k )⋮θ ( k + n )θ ( k - 1 )⋮θ ( k + n - 1 )⋯⋯θ ( 0 )⋮θ ( n )⎤⎦⎥⎥⎡⎣⎢⎢⎢⎢Sebuah0Sebuah1⋮Sebuahk⎤⎦⎥⎥⎥⎥
⎡⎣⎢⎢⎢⎢Sebuah0Sebuah1⋮Sebuahk⎤⎦⎥⎥⎥⎥= ⎡⎣⎢⎢θ ( k )⋮θ ( k + n )θ ( k - 1 )⋮θ ( k + n - 1 )⋯⋯θ ( 0 )⋮θ ( n )⎤⎦⎥⎥+⎡⎣⎢⎢⎢θ^( k )⋮θ^( k + n )⎤⎦⎥⎥⎥
M.+M.k, jadi Anda mungkin hanya akan menebak. Untuk poin bonus, ini mengasumsikan bahwa noise putih dan independen, tetapi Anda dapat memutihkannya terlebih dahulu untuk menghilangkan bias, dan karenanya meningkatkan estimasi Anda dari parameter.
Anda dapat mengonversikan ini ke fungsi transfer (juga dikenal sebagai Z-transform dalam domain waktu diskrit):
Θ^( z)Θ ( z)= a0+ a1z- 1+ . . . + akz- k
θ¯( t )
Θ¯( z)Θ^( z)= 1Sebuah0+ a1z- 1+ ⋯ + akz- k
Konversi kembali ke domain waktu:
Sebuah0θ¯( t ) + a1θ¯( t - 1 ) + ⋯ + akθ¯( t - k ) = θ^( t )
θ¯( t ) = θ^( t ) - a1θ¯( t - 1 ) - ⋯ - akθ¯( t - k )Sebuah0
θ¯
θ¯
Solusi di atas masih bukan cara terbaik. Perkiraan bising mungkin tidak terlalu berguna. Jika kita menempatkan ini dalam persamaan ruang keadaan, kita dapat merancang filter Kalman, dan pengontrol umpan balik keadaan penuh menggunakan LQR (regulator kuadratik linier). Kombinasi filter Kalman dan pengontrol LQR juga dikenal sebagai pengontrol LQG (linear quadratic gaussian), dan menggunakan pemulihan loop-transfer untuk mendapatkan pengontrol yang baik.
Untuk melakukan ini, buatlah persamaan ruang-ruang (waktu diskrit):
x⃗ ( t ) = A x⃗ ( t - 1 ) + B u⃗ ( t - 1 )y⃗ ( t ) = Cx⃗ ( t )
atau:
x⃗ ( t ) = ⎡⎣⎢⎢⎢⎢θ ( t )θ ( t - 1 )⋯θ ( t - k )⎤⎦⎥⎥⎥⎥= ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢SEBUAH110⋮00SEBUAH201⋮00⋯⋯⋯⋯⋯000⋮10000⋮01000⋮00⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥x⃗ ( t - 1 ) + ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢B0B10⋮00⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥kamu⃗ ( t - 1 )
y⃗ ( t ) = [ θ^( t )] = ⎡⎣⎢⎢⎢⎢Sebuah0Sebuah1⋮Sebuahk⎤⎦⎥⎥⎥⎥x⃗ ( t )
kamu⃗ ( t - 1 )SEBUAH0SEBUAH1B0B1BSEBUAH
QHaiRHai
QcRcQc=⎡⎣⎢⎢⎢⎢10⋮000⋮000⋮0⋯⋯⋯00⋮0⎤⎦⎥⎥⎥⎥Rc=[1]J=∑(x⃗ TQx⃗ +u⃗ TRu⃗ )
Kemudian, Anda hanya memasukkannya melalui persamaan Riccati aljabar waktu diskrit:
P=Q+AT(P−PB(R+BTPB)−1BTP)A
P
Dengan demikian, hukum kontrol Anda dapat diberikan oleh:
u⃗ (t)=−K(x⃗ (t)−x⃗ ref(t))
K=(R+BTPB)−1(BTPA)
θ¯
Untuk memperbaiki ini, kami menggunakan Loop transfer teknik Recovery, di mana Anda menyesuaikan filter Kalman, dan sebagai gantinya memilih baru Qo=Q0+q2BVBTQ0QVV=Iqq→∞Qo Matriks menjadi tidak disetel, yang artinya menjadi kurang optimal.
qRcQc