Saat ini saya sedang mengerjakan perangkat yang menggunakan accelerometer 3D selalu aktif (menggunakan skala + -2g) dan giroskop 3D (menggunakan skala + -250g) -sensor.
Saya dapat membaca setiap kemungkinan vektor (X, Y, Z) dan akselerasi mereka (g) dan kecepatan sudut (dps) dan juga sudut di mana perangkat saat ini berada. Tetapi masalah saya adalah bahwa ketika perangkat dalam kemiringan (0g saat tidak ada kemiringan) akselerasi adalah antara (ke bawah) 0g -> - 1g atau antara (ke atas) 0g-> 1g tergantung pada sudut perangkat saat ini. Di bawah ini adalah gambar yang mudah-mudahan membersihkan ide.
Perangkat akan terletak di dalam mobil dan harus mengukur akselerasi saat mobil melambat (rem). Namun jika perangkat sudah miring, akselerometer akan mengukur beberapa akselerasi yang menyebabkan kemiringan yang membuatnya sulit untuk mengetahui apakah perangkat benar-benar memiliki akselerasi atau hanya kemiringan yang menyebabkan akselerasi.
X dan Y -Axis menghasilkan 0g dan sumbu Z adalah 1g ketika perangkat tidak memiliki kemiringan dan pada permukaan datar. Kemiringan menyebabkan pembacaan sumbu X mengarah ke 1g jika miring ke atas dan -1g saat ke bawah. + -1g tercapai ketika perangkat berada pada derajat 90 * dari posisi semula
Saya telah memikirkan bagaimana menghilangkan akselerasi yang menyebabkan kemiringan dan hanya mengukur akselerasi sebenarnya dari perangkat tetapi tidak bisa memikirkan jalan keluar dari masalah ini dengan data berikut yang dapat saya hasilkan.
Pada dasarnya saya berpikir bahwa jika saya hanya bisa mengukur akselerasi sumbu X (gambar) bahkan jika sensor dalam kemiringan seperti pada gambar.
Semoga pesan ini tidak terlalu sulit dimengerti karena kemampuan bahasa Inggris saya dan cara saya mencoba menjelaskan masalah saya.
sumber
Jawaban:
Hanya sebuah sketsa solusi.
Pertimbangkan semua 3 sumbu sebagai pertimbangan.
Akselerasi karena gravitasi, terlepas dari kemiringannya, akan selalu 1G, sebagai jumlah vektor X, Y, Z, tidak peduli apa kemiringannya. Anda dapat menggambarkan akselerasi saat istirahat atau gerakan stabil sebagai titik pada bola dengan jari-jari 1G. (Jika Anda horisontal sempurna, titik itu adalah (0, 0, -1) yaitu tepat di bawah Anda).
Akselerasi karena pengereman akan merusak bola itu sendiri; jumlah vektor X, Y, Z tidak akan lagi menjadi 1G.
Begitu
Kecuali Anda juga berputar atau tergelincir, jadi Anda perlu input dari roda kemudi dan ABS untuk memastikan; itu menjadi masalah fusi data. Pendekatan ini akan memberikan perkiraan percepatan. Untuk memeriksa dan menyempurnakan estimasi tersebut, gabungkan dengan sumber data lain (juga tidak dapat diandalkan), seperti dalam jawaban Phil Frost, menggunakan filter Kalman.
sumber
Kesalahan utama Anda adalah tidak memperlakukan akselerasi sebagai vektor tunggal. Ketika mobil dalam keadaan diam, vektor itu akan selalu 1 g ke atas. Jangan hanya melihat komponen X dari data accelerometer mentah. Lakukan matematika vektor nyata.
Tidak, ini intinya. Apa yang Anda katakan mungkin benar untuk komponen X dari output accelerometer, tetapi tidak benar untuk akselerasi ketika mobil dalam keadaan diam.
Akselerasi terukur yang ideal akan selalu menjadi akselerasi aktual mobil (relatif terhadap bumi), ditambah akselerasi 1 g karena gravitasi. Yang terakhir selalu ke arah atas. Jika Anda mengetahui orientasi mobil, maka Anda dapat mengurangi 1 g ini karena gravitasi untuk menemukan akselerasi yang sebenarnya Anda cari.
Perhatikan bahwa ada kesalahan yang cukup besar dalam pembacaan tersebut, terutama dari sensor MEMS murah. Meskipun Anda harus bisa mendapatkan ide bagus tentang peristiwa jangka pendek seperti akselerasi keras atau pengereman keras, data ini tidak cukup baik untuk melakukan navigasi inersia selama lebih dari beberapa detik.
sumber
Seperti jawaban lain telah menyatakan, accelerometer menyediakan vektor tiga dimensi yang merupakan jumlah gravitasi dan akselerasi lain pada mobil karena mesin, rem, atau gaya lain yang bekerja pada mobil. Tujuan Anda kemudian adalah untuk mengurangi percepatan gravitasi dari output accelerometer untuk menemukan kekuatan lain yang tersisa.
Untuk akurasi terbaik, Anda tidak dapat menganggap gravitasi selalu "turun" relatif terhadap accelerometer. Misalnya, mobil mungkin berada di atas bukit. Semua perhitungan Anda harus dilakukan dengan matematika vektor tiga dimensi, dan Anda harus memiliki beberapa perkiraan orientasi mobil sehingga Anda tahu arah vektor gravitasi untuk dikurangi.
Sebuah Kalman Filter adalah pendekatan umum di sini. Idenya adalah untuk mengambil semua data yang Anda miliki yang dapat mengubah orientasi mobil, kemudian melakukan pengukuran rata-rata tertimbang, menggabungkannya dengan apa yang Anda ketahui tentang fisika yang bekerja pada mobil, untuk sampai pada perkiraan probabilistik dari orientasi baru mobil dan ke arah mana "turun".
Semakin banyak data yang Anda miliki, dan semakin akurat Anda dapat memodelkan fisika mobil, semakin akurat estimasi ini.
Misalnya, jika Anda memiliki gyro dan mengukur mobil yang melayang, Anda dapat memperkirakan vektor gravitasi akan berputar ke arah belakang mobil. Dalam jangka pendek, katakanlah ketika mobil baru saja mulai naik bukit, ini dapat membantu vektor gravitasi dengan cepat mengambil orientasi yang benar.
Anda mungkin juga menganggap mobil rata-rata tidak akan mengerem atau berakselerasi. Dengan demikian, output low-pass dari accelerometer dapat dimasukkan ke dalam estimasi arah "turun" itu. Ini memberikan pengukuran jangka panjang yang tidak mengalami penyimpangan inersia.
Menggabungkan data dari accelerometer dan giroskop untuk memperkirakan arah gravitasi sehingga memberikan estimasi yang lebih akurat daripada pengukuran lainnya.
Anda selanjutnya dapat memasukkan apa yang Anda ketahui tentang kemungkinan amplop operasional kendaraan. Misalnya mobil tidak dapat mengendarai naik atau turun bukit yang terlalu curam, jadi ketika accelerometer menunjukkan sudut ekstrem seperti itu Anda mungkin kurang berat, dengan asumsi sebagian besar outputnya disebabkan oleh rem atau mesin, bukan gravitasi.
Anda tahu jika pengemudi menginjak rem, ini akan memindahkan vektor akselerasi, dan Anda dapat mengurangi ini dari perkiraan komponen "turun".
Atau jika Anda memiliki GPS dan data peta, Anda dapat memasukkan perkiraan kemiringan mobil berdasarkan lokasi. Jika Anda memiliki data akurasi tinggi, Anda mungkin tahu persis bukit apa yang dihidupkan. Jika Anda hanya memiliki data akurasi rendah ini masih bisa berguna. Misalnya jika mobil di Kansas, bukit tidak mungkin. Jika mobil di San Francisco, perbukitan lebih mungkin dan Anda mungkin memberikan akselerometer lebih sedikit.
Jika Anda memiliki data tentang konsumsi dan kecepatan bahan bakar, mengetahui bahwa lebih banyak bahan bakar dikonsumsi saat naik, Anda mungkin menggunakan ini untuk memperkirakan mobil dinaikkan atau turun berdasarkan efisiensi bahan bakar.
Dan seterusnya. Semakin banyak Anda tahu, semakin baik perkiraan Anda.
sumber
Anda membutuhkan algoritma fusi dan menggunakan sensor 3D-accelerometer, 3D-Gyro, dan 3D-Magnetic. Dengan algoritma fusi ini Anda mendapatkan sikap, gravitasi bumi membantu sebagai referensi untuk mendeteksi sudut horizon-pitch / yaw / roll. Dua sensor mag / gyro lainnya membantu menyaring gerakan dinamis. Saat mobil Anda juga akan belok kiri / kanan, .. gaya sentrifugal akan ditambahkan. Setelah Anda memiliki sikap, maka Anda dapat mengurangi vektor gravitasi dan membongkar percepatan yang dihasilkan di ketiga sumbu.
sumber
Sebagai pendekatan yang sangat mendasar, Anda dapat menggunakan filter high-pass untuk menghilangkan bagian konstan dari akselerasi (yang sesuai dengan gravitasi) dan menjaga bagian variabel yang disebabkan oleh dinamika mobil. Misalkan
raw
adalah vektor yang berisi pengukuran X, Y dan Z Anda, danacc
merupakan akselerasi mobil tanpa gravitasi. KemudianKomponen individual
acc
masih dipengaruhi oleh kemiringan, tetapi norma vektor tidak:Tentu saja, metode ini tidak terlalu tepat, terutama jika kemiringan berubah pada tingkat tinggi. Ini tentang sejauh matematika naif membuat Anda. Jika Anda membutuhkan ketelitian yang lebih baik, pelajari cara menggunakan filter Kalman.
sumber
Jawabannya terletak pada definisi tepat "melambat" .
Dari pertanyaan Anda:
Namun, melambat tidak sama dengan pengereman . Ada dua definisi yang mungkin:
Perbedaan ini signifikan dalam uphills dan downhills. Pada saat downhills, kecepatan mobil akan meningkat jika rem tidak diterapkan. Dan di uphills, kecepatannya bisa melambat bahkan saat tidak mengerem.
Ternyata mendeteksi 1. secara signifikan lebih sulit daripada 2. Mari mendefinisikan sumbu relatif terhadap orientasi mobil: X: arah depan-belakang, Y: arah kiri-kanan, Z: arah atas-bawah. Semua sumbu selaras dengan mobil.
Solusi:
Untuk definisi 1., pendekatan terbaik adalah dengan mengasumsikan bahwa kecepatan mobil hanya dapat berubah dalam arah X. Kemudian akselerasi terukur a = g + v di mana g adalah akselerasi karena gaya melawan gravitasi, dan v adalah akselerasi karena perubahan kecepatan. Anda dapat mengasumsikan panjang g selalu sama dengan 9,8 m / s², dan v selalu dalam arah X. Jadi (g_x + v_x, g_y, g_z) = (a_x, a_y, a_z) , yang memberikan v_x = a_x - sqrt ((9,8m / s²) ² - g_y² - g_z²) . Ini hanya akan berfungsi selama | v | kurang dari | g |, atau dengan kata lain, akselerasi karena motor atau rem kurang dari 1G. Asumsi itu seharusnya cukup aman kecuali mobil Anda memiliki roket pendorong.
Untuk definisi 2., Anda bisa langsung mengambil pembacaan sumbu x. Jika mobil tidak berakselerasi atau mengerem, satu-satunya gaya pencegah gravitasi yang bekerja di atasnya adalah gaya normal permukaan jalan. Gaya ini selalu berada pada arah z relatif terhadap mobil, sehingga tidak mengubah pembacaan sumbu-x. Rem dan motorik bertindak hanya dalam arah x, dan akan langsung terlihat dalam bacaan ini.
sumber
Tampaknya Anda menggunakan perangkat "berlebihan" untuk aplikasi Anda. Anda harus menggunakan perangkat yang hanya mengukur akselerasi x & y, dengan cara ini, kemiringan tidak akan memiliki efek yang dapat diukur. Meskipun total akselerasi mungkin lebih kecil atau lebih besar, karena kemiringannya, perangkat hanya akan mengukur komponen x & y dari akselerasi pada pesawat yang digunakan kendaraan.
sumber