Dua hal.
Jika Anda berencana melakukan pemetaan, Anda perlu Algoritma Lokalisasi dan Pemetaan Simultan yang lengkap. Lihat: Lokalisasi dan Pemetaan Simultan (SLAM): Bagian I Algoritma Esensial . Dalam SLAM, memperkirakan status robot hanya setengah dari masalah. Bagaimana melakukannya adalah pertanyaan yang lebih besar daripada yang bisa dijawab di sini.
Mengenai lokalisasi (memperkirakan keadaan robot), ini bukan pekerjaan untuk Filter Kalman. Transisi dari
ke x ( t +x(t)=[x,y,x˙,y˙,θ,θ˙]x(t+1)bukan fungsi linear karena percepatan dan kecepatan sudut. Karenanya Anda perlu mempertimbangkan penduga non-linear untuk tugas ini. Ya, ada cara standar untuk melakukan ini. Ya, mereka tersedia dalam literatur. Ya, biasanya semua input dimasukkan ke filter yang sama. Posisi, kecepatan, orientasi, dan kecepatan sudut robot digunakan sebagai output. Dan Ya, saya akan menyajikan pengantar singkat untuk tema umum mereka di sini. Kesimpulan utama adalah
- sertakan bias Gyro dan IMU di negara Anda atau perkiraan Anda akan berbeda
- Sebuah Filter Kalman Extended (EKF) umumnya digunakan untuk masalah ini
- Implementasi dapat diturunkan dari awal, dan umumnya tidak perlu "dilihat".
- Implementaitons ada untuk sebagian besar masalah lokalisasi dan SLAM, jadi jangan melakukan lebih banyak pekerjaan dari yang seharusnya. Lihat: Sistem Operasi Robot ROS
Sekarang, untuk menjelaskan EKF dalam konteks sistem Anda. Kami memiliki IMU + Gyro, GPS, dan odometri. Robot yang dimaksud adalah drive diferensial seperti yang disebutkan. Tugas penyaringan adalah untuk mengambil estimasi berpose saat robot
x t , input kontrol u t , dan pengukuran dari masing-masing sensor, z t , dan menghasilkan perkiraan pada saat langkah berikutnya
x t + 1 . Kami akan memanggil IMU pengukuran I t , GPS G t , dan odometry, O t .x^tutztx^t+1ItGtOt
Saya berasumsi kita tertarik dalam memperkirakan pose robot sebagai
. Masalah dengan IMU dan Gyros adalah drift. Ada bias non-stasioner dalam akselerasi yang harus Anda perhitungkan dalam EKF. Hal ini dilakukan (biasanya) dengan memasukkan bias ke dalam perkiraan keadaan. Ini memungkinkan Anda untuk secara langsung memperkirakan bias pada setiap langkah waktu.
x t = x , y , ˙ x , ˙ y , θ , ˙ θ , bxt=x,y,x˙,y˙,θ,θ˙xt=x,y,x˙,y˙,θ,θ˙,b, untuk vektor bias b .
Saya berasumsi:
- = dua pengukuran jarak mewakili jarak tapak telah melakukan perjalanan di beberapa selisih waktu kecilOt
- = tiga pengukuran orientasi α , β , θ , dan tiga pengukuran akselerasi ¨ x , ¨ y , ¨ z .Itα,β,θx¨,y¨,z¨
- = posisi robot diduniabingkai,
G x t , G y t .GtGxt,Gyt
Biasanya, hasil dari input kontrol (kecepatan yang diinginkan untuk setiap tapak) sulit untuk dipetakan ke output (perubahan pose robot). Sebagai ganti , itu biasa (lihat Thrun , Pertanyaan Odometry ) untuk menggunakan odometry sebagai "hasil" dari kontrol. Asumsi ini bekerja dengan baik ketika Anda tidak berada di permukaan tanpa gesekan. IMU dan GPS dapat membantu memperbaiki selip, seperti yang akan kita lihat.u
Jadi tugas pertama adalah untuk memprediksi negara berikutnya dari kondisi saat
. Dalam kasus robot penggerak diferensial, prediksi ini dapat diperoleh langsung dari literatur (lihat Di Kinematika Robot Beroda Bergerak atau perlakuan yang lebih ringkas dalam buku teks robotika modern mana pun), atau diperoleh dari awal seperti ditunjukkan di sini:x^t+1=f(x^t,ut) Pertanyaan Odometri .
Jadi, kita sekarang dapat memprediksi x t + 1 = f ( x t , O t ) . Ini adalah langkah propagasi atau prediksi. Anda dapat mengoperasikan robot hanya dengan menyebarkan. Jika nilai-nilai O t benar-benar akurat, Anda tidak akan pernah memiliki perkiraan x yang tidak tepat sama keadaan sebenarnya Anda. Ini tidak pernah terjadi dalam praktek.x^t+1=f(x^t,Ot)Otx^
Ini hanya memberikan nilai prediksi dari estimasi sebelumnya, dan tidak memberi tahu kami bagaimana keakuratan estimasi menurun seiring waktu. Jadi, untuk menyebarkan ketidakpastian, Anda harus menggunakan persamaan EKF (yang menyebarkan ketidakpastian dalam bentuk tertutup berdasarkan asumsi kebisingan Gaussian), filter partikel (yang menggunakan pendekatan berbasis pengambilan sampel) *, UKF (yang menggunakan titik-bijaksana) perkiraan ketidakpastian), atau salah satu dari banyak varian lainnya.
Dalam hal EKF, kami melanjutkan sebagai berikut. Mari menjadi matriks kovarians dari negara robot. Kami linearkan fungsi f
menggunakan ekspansi Taylor-series untuk mendapatkan sistem linier. Sistem linier dapat dengan mudah dipecahkan menggunakan Filter Kalman. Asumsikan kovarians dari estimasi pada waktu t adalah P t , dan kovarians diasumsikan dari kebisingan di odometry diberikan sebagai matriks U t
(biasanya diagonal 2 × 2 matriks, seperti 0,1 × I 2 × 2 ). Dalam kasus fungsi f , kita mendapatkan JacobianPtftPtUt2×2.1×I2×2f
danFu=∂fFx=∂f∂x , lalu sebarluaskan ketidakpastian itu sebagai,Fu=∂f∂u
Pt+1=Fx∗Pt∗FTx+Fu∗Ut∗FTu
Sekarang kita bisa menyebarkan estimasi dan ketidakpastian. Perhatikan bahwa ketidakpastian akan meningkat seiring waktu. Ini diharapkan. Untuk memperbaiki ini, apa yang biasanya dilakukan, adalah dengan menggunakan dan G t untuk memperbarui negara diprediksi. Ini disebut langkah pengukuran dari proses penyaringan, karena sensor memberikan pengukuran tidak langsung dari kondisi robot.ItGt
hg()hi()RRgRih
szs
vs=zs−hs(x^t+1)
Ss=Hs∗Pt+1∗HTs+Rs
K=Pt+1∗HTsS−1s
x^t+1=x^t+1−K∗v
Pt+1=(I−K∗Hs)∗Pt+1
In the case of GPS, the measurement zg=hg() it is probably just a
transformation from latitude and longitude to the local frame of the
robot, so the Jacobian Hg will be nearly Identity. Rg is
reported directly by the GPS unit in most cases.
In the case of the IMU+Gyro, the function zi=hi() is an integration of
accelerations, and an additive bias term. One way to handle the IMU is
to numerically integrate the accelerations to find a position and
velocity estimate at the desired time. If your IMU has a small
additive noise term pi for each acceleration estimate, then you
must integrate this noise to find the accuracy of the position
estimate. Then the covariance Ri is the integration of all the
small additive noise terms, pi. Incorporating the update for the
bias is more difficult, and out of my expertise. However, since you are interested in planar motion, you can probably simplify the problem.
You'll have to look in literature for this.
Some off-the-top-of-my-head references:
Improving the Accuracy of EKF-Based Visual-Inertial
Odometry
Observability-based Consistent EKF Estimators for Multi-robot
Cooperative
Localization
Adaptive two-stage EKF for INS-GPS loosely coupled system with
unknown fault bias
This field is mature enough that google (scholar) could probably find
you a working implementation. If you are going to be doing a lot of
work in this area, I recommend you pick up a solid textbook. Maybe
something like Probablistic Robotics by S. Thrun of Google Car fame.
(I've found it a useful reference for those late-night
implementations).
*There are several PF-based estimators available in the
Robot Operating System (ROS). However, these have
been optimized for indoor use. Particle filters deal with the
multi-modal PDFs which can result from map-based localization (am I
near this door or that door). I believe most outdoor
implementations (especially those that can use GPS, at least
intermittently) use the Extended Kalman Filter (EKF). I've
successfully used the Extended Kalman Filter for an outdoor, ground
rover with differential drive.