Cihaz eğimdeyken hızlanma


13

Şu anda her zaman açık 3D ivmeölçer (ölçek + -2g kullanarak) ve 3D jiroskop (ölçek + -250g kullanarak) -sensör kullanan cihaz üzerinde çalışıyorum.

Mümkün olan her vektörü (X, Y, Z) ve bunların hızlanmalarını (g) ve açısal hızını (dps) ve ayrıca cihazın şu anda olduğu açıyı okuyabilirim. Ancak benim sorunum, cihaz eğimdeyken (eğim olmadığında 0g), ivmenin (şu anda) açıya bağlı olarak (aşağı doğru) 0g -> - 1g arasında veya (yukarı doğru) 0g-> 1g arasında olmasıdır. Aşağıda umarım bu fikri temizler.

Umarım bu yardımcı olur

Cihaz bir arabada bulunur ve araç yavaşladığında (fren) ivmeyi ölçmelidir. Ancak, cihaz zaten eğikse ivmeölçer, eğilmenin neden olduğu bir hızlanmayı ölçecek ve bu da cihazın gerçekten biraz hızlanıp hızlanmadığını veya sadece hızlanmaya neden olan eğim olup olmadığını söylemeyi zorlaştırmaktadır.

X ve Y-Ekseni, cihaz eğik olmadığında ve düz bir yüzeydeyken 0g üretir ve Z ekseni 1g'dir. Eğim, eğer eğim yukarı doğruysa X ekseninin okunmasının 1 g, aşağı doğru ise -1 g olmasını sağlar. + -1g'ye, cihaz orijinal konumundan 90 * derece olduğunda ulaşılır

Başımı eğen bu ivmenin nasıl ortadan kaldırılacağını ve sadece cihazın gerçek ivmesini ölçtüğünü düşünüyorum, ancak üretebileceğim aşağıdaki verilerle bu sorundan çıkış yapamıyorum.

Temel olarak, sensör resimdeki gibi eğik olsa bile, yalnızca X ekseni hızını (resim) ölçebilseydim.

Umarım bu mesaj İngilizce becerilerim ve sorunumu açıklamaya çalıştığım için çok zor değildir.


2
Neden sadece ilginç bir ivme olmadığında ölçüm yapmıyor ve bunu bir karşılaştırma noktası olarak kullanmıyorsunuz?
PlasmaHH

Bence bu işe yaramaz. Cihaz tam olarak sabitse X ve Y ekseni 0g ve Z ekseni 1g'dir. Eğim, X ekseni okumasının belirttiğim gibi eğime bağlı olarak -1g ila 1g arasında olmasına neden olur. Frenleme X ekseni ölçülen değerinin azalmasına neden olur (negatif hızlanma, böylece araç yavaşlar). Cihaz zaten aşağıya doğru eğilmişse 0g - (-1g) arasında bir şey varsa, bunun frenlemenin neden olduğu hızlanma olmadığını nasıl anlayabilirim?
jumbojohn

Neden sadece Y ekseni yerine üç eksenin toplam ivmesini hesaplamıyorsunuz? Bence bu üç ekseni de dikkate almak temel bir şey !? Böyle bir şey bu
charansai

LSM6DSM'nin bir manyetometresi yoktur. Bu bilgiyi nereden aldın? Aslında, hem LSM6DSM Gyro / ivmeölçer hem de bir LIS3MDL Manyetometresi olan ST'nin X-NUCLEO-IKS01A1 kartını kullandığınızı düşünüyorum .
MrGerber

@MrGerber Bunu fark ettiğiniz için teşekkür ederiz. Sensörün veri sayfasını yanlış yazmak benim için kötüydü.
jumbojohn

Yanıtlar:


18

Sadece bir çözüm taslağı.

3 eksenin tümünü dikkate alın.

Eğimden bağımsız olarak yerçekimine bağlı hızlanma, eğim ne olursa olsun X, Y, Z vektör toplamı olarak her zaman 1G olacaktır. Dinlenme veya sabit hareket halindeki ivmeyi, 1G yarıçaplı bir küre üzerinde bir nokta olarak görüntüleyebilirsiniz. (Mükemmel yatayysanız, bu nokta (0, 0, -1), yani doğrudan altınızda olacaktır).

Frenleme nedeniyle hızlanma kürenin kendisini deforme edecektir; X, Y, Z'nin vektör toplamı artık 1G olmayacaktır.

Yani

A=X2+Y2+Z2

size toplam ivmeyi verir. G'ye eşitse, hareketsizsiniz; aksi takdirde hızlanırsınız ve , G'nin vektör toplamı ve gerçek ivmedir.A

Şimdi normal arasındaki farkı açıklar ileri (veya arka) yönde bir vektör olacak gerçek ivme bulmak zorunda G küre üzerinde bir noktada çıkarma ve G. İhtiyaç , bir (umutla benzersiz bulmak çözeltisi) sadece X (ileri / geri) bileşenli vektör. Bu sizin hızlanmanız. (Trigonometriyi basit bir bulmaca olarak bırakacağım, umarım fikir açıktır).AAA

Ayrıca dönmedikçe veya kaymadığınız sürece, emin olmak için direksiyon simidi ve ABS girişlerine ihtiyacınız vardır; bu veri birleştirme problemi haline gelir. Bu yaklaşım bir ivme tahmini sağlayacaktır. Bu tahmini aklı kontrol etmek ve hassaslaştırmak için, bir Kalman filtresi kullanarak Phil Frost'un cevabında olduğu gibi diğer (güvenilir olmayan) veri kaynaklarıyla birleştirin.


Aslında daha önce ivmeölçer / jiroskop ile hiç çalışmadım, bu yüzden büyük resim bu şeylerin nasıl çalıştığı ve matematiğin en güçlü becerilerimden biri olmadığı için net değil, bu yüzden ipuçlarını / açıklamayı takdir ediyorum, teşekkürler.
jumbojohn

Doğru olsa da, hata kenar boşluklarının önemli olacağına dair güçlü bir şüphem var. Ayrıca dikey ivmenin küreyi deforme edeceğini unutmayın (örn. Hız tümsekleri, çukurlar), bu nedenle uygulamaya bağlı olarak bunu çözmeniz gerekebilir.
Chris H

Fakat yeterince sert bakarsanız yerçekimi sabit değildir . ABD'deki en yüksek yol $ g $ 'ı sadece% 0.1 oranında azaltırken, kutuplardan ekvatora gitmek% 0.5'lik bir fark yaratıyor. Jeoloji de bu büyüklük düzeninde bir fark yaratabilir . Muhtemelen bir oyun değiştirici değil ama kalibrasyonu ihmal etmeyin
Chris H

G küresinin yarıçapını konumunuza göre değiştirmeniz veya motoru çalıştırmadan önce ölçmeniz yeterlidir; bu bir sorun değil. Darbelere muhtemelen kızakların ve direksiyonun yanında ele alınması gerektiğine katılıyorum.
Brian Drummond

Motoru çalıştırmadan önce kalibre etmek düşündüğüm bir şey. Oluşturucu son kullanıcı değilse kalibrasyon hızlı olmuştu.
Chris H

9

Ana hatanız ivmeyi tek bir vektör olarak ele almamaktır. Araba hareketsizken, bu vektör her zaman 1 g yukarı doğru olacaktır. Ham ivmeölçer verilerinin sadece X bileşenine bakmayın. Gerçek vektör matematik yapın.

Ancak benim sorunum, cihaz eğimdeyken (eğim olmadığında 0g) hızlanmanın (aşağı) 0g -> - 1g veya (yukarı) 0g-> 1g arasında olmasıdır.

Hayır. Mesele bu. Söyledikleriniz ivmeölçer çıkışının X bileşeni için doğru olabilir, ancak araç hareketsizken hızlanma için doğru değildir.

İdeal ölçülen hızlanma her zaman otomobilin gerçek ivmesi (dünyaya göre) artı yerçekimi nedeniyle 1 g hızlanma olacaktır. İkincisi her zaman yukarı doğrudur. Arabanın yönünü biliyorsanız, aslında aradığınız ivmeyi bulmak için yerçekimi nedeniyle bu 1 g çıkarabilirsiniz.

Bu tür okumalarda, özellikle ucuz MEMS sensörlerinden önemli bir hata olduğunu unutmayın. Sert hızlanma veya sert frenleme gibi kısa vadeli olaylar hakkında iyi bir fikir edinebilmelisiniz, ancak bu veriler atalet navigasyonunu en iyi birkaç saniyeden fazla yapacak kadar iyi değildir.


Yerçekimi nedeniyle (ölçülen) ivme "yukarı" yönde olmaz mı? İçinde olduğu gibi, Dünya'nın yerçekimindeki dinlenme halindeki cihazdan alacağınız okuma, herhangi bir yerçekimi alanının dışına çıkacağınızla aynı olacaktır, ancak (cihaza göre) "yukarı" yönde hızlanıyor mu?
psmears

@psmears: Evet, haklısın. Kuvvet aşağı doğru, ancak görünen ivme yukarı doğru. Sabit.
Olin Lathrop

5

Diğer cevapların belirttiği gibi, ivmeölçer, motor, frenler veya arabaya etki eden diğer kuvvetler nedeniyle arabadaki yerçekimi ve diğer ivmenin toplamı olan üç boyutlu bir vektör sağlar. Bu durumda amacınız, kalan diğer kuvvetleri bulmak için yerçekimi ivmesini ivmeölçerin çıkışından çıkarmaktır.

En iyi doğruluk için, yerçekiminin ivmeölçere göre daima "aşağı" olduğunu varsayamazsınız. Örneğin, araba bir tepede olabilir. Tüm hesaplamalarınız üç boyutlu vektör matematiği ile yapılmalıdır ve çıkartılacak yerçekimi vektörünün yönünü bilmek için arabanın yönünü tahmin etmelisiniz.

Bir Kalman filtresi burada ortak bir yaklaşımdır. Fikir, arabanın yönünü değiştirebilecek tüm verilerinizi almak, daha sonra ölçümlerin ağırlıklı bir ortalamasını yapmak, arabaya etki eden fizik hakkında bildiklerinizle birleştirmek, aracın olasılıklı bir tahminine ulaşmaktır arabanın yeni yönünü ve hangi yönde "aşağı" olduğunu.

Ne kadar fazla veriye sahip olursanız ve aracın fiziğini o kadar doğru bir şekilde modelleyebilirsiniz, bu tahmin o kadar doğru olur.

Örneğin, bir jiroskopunuz varsa ve arabayı yukarı doğru ölçtüğünüzde, yerçekimi vektörünün arabanın arkasına doğru döneceğini tahmin edebilirsiniz. Kısa vadede, araba bir tepeye çıkmaya başladığında, bu yerçekimi vektörünün hızla doğru yönlendirmeyi almasına yardımcı olabilir.

Ayrıca, otomobilin ortalama olarak frenleme veya hızlanmadığını varsayabilirsiniz. Bu nedenle, ivmeölçerin düşük geçişli filtrelenmiş bir çıkışı, "aşağı" yönünün tahminine beslenebilir. Bu, ataletsel kaymaya tabi olmayan uzun süreli bir ölçüm sağlar.

Yerçekimi yönünü tahmin etmek için ivmeölçer ve jiroskoptaki verileri birleştirmek, böylece her iki ölçümden daha doğru bir tahmin sağlar.

Aracın olası çalışma zarfı hakkında bildiklerinizi daha fazla dahil edebilirsiniz. Örneğin, araç çok dik olan tepeleri yukarı veya aşağı süremez, bu nedenle ivmeölçer bu tür aşırı açıları gösterdiğinde, çıktının çoğunun yerçekimi değil frenlerden veya motordan kaynaklandığı varsayılarak daha az ağırlıklandırabilirsiniz.

Sürücünün frenlere çarpıp çarpmadığını bilirsiniz, bu hızlanma vektörünü hareket ettirir ve bunu tahmini "aşağı" bileşenden çıkarabilirsiniz.

Veya GPS ve harita verileriniz varsa, konuma göre otomobilin eğimi hakkında bir tahmin ekleyebilirsiniz. Yüksek doğruluk verileriniz varsa, aracın hangi tepede olduğunu tam olarak bilebilirsiniz. Yalnızca düşük doğrulukta verileriniz varsa, bu yine de yararlı olabilir. Örneğin, araba Kansas'ta ise tepeler düşüktür. Araba San Francisco'daysa, tepeler daha olasıdır ve ivmeölçere daha az ağırlık verebilirsiniz.

Yakıt tüketimi ve hızıyla ilgili veriler varsa, yokuş yukarı giderken daha fazla yakıt tüketildiğini bilerek, yakıt verimliliğine bağlı olarak aracın yukarı veya aşağı eğimli olduğunu tahmin etmek için bunu kullanabilirsiniz.

Ve bunun gibi. Ne kadar çok bilirseniz, tahmininiz o kadar iyi olabilir.


3

Bir füzyon algoritmasına ihtiyacınız olacak ve 3D-ivmeölçer, 3D-Gyro ve 3D-Manyetik sensörler kullanacaksınız. Bu füzyon algoritması ile tavır alırsınız, yerçekimi ufuk - eğim / sapma / yuvarlanma açılarını tespit etmek için referans olarak yardımcı olur. Diğer iki sensör mag / gyro, dinamik hareketi filtrelemeye yardımcı olur. Arabanız da sola / sağa döneceğinden, merkezkaç kuvveti eklenecektir. Tutuma sahip olduğunuzda, yerçekimi vektörünü çıkarabilir ve sonuçta ortaya çıkan ivmeyi üç eksende de sökebilirsiniz.


3

Çok temel bir yaklaşım olarak, ivmenin sabit kısmını (yer çekimine karşılık gelen) ortadan kaldırmak ve değişken parçasını araba dinamiğinden kaynaklanan tutmak için yüksek geçişli bir filtre kullanabilirsiniz. Diyelim ki rawX, Y ve Z ölçümlerinizi içeren bir vektör ve accyerçekimi olmadan otomobilin ivmesidir. Sonra

void correct_for_gravity(float *raw, float *acc)
{
   const float k = 0.9;
   static float gravity[3];

   gravity[0] = k * gravity[0] + (1 - k) * raw[0];
   gravity[1] = k * gravity[1] + (1 - k) * raw[1];
   gravity[2] = k * gravity[2] + (1 - k) * raw[2];

   acc[0] = raw[0] - gravity[0];
   acc[1] = raw[1] - gravity[1];
   acc[2] = raw[2] - gravity[2];
}

'İn tek tek bileşenleri acchala eğimden etkilenir, ancak vektör normu:

norm_acc = sqrt(acc[0]*acc[0] + acc[1]*acc[1] + acc[2]*acc[2]);

Elbette, özellikle eğim yüksek bir oranda değişiyorsa, bu yöntem çok kesin değildir. Bu naif matematik size ulaştığında. Daha iyi hassasiyete ihtiyacınız varsa, Kalman filtresini nasıl kullanacağınızı öğrenin.


1

Cevap, "yavaşlama" nın tam tanımında yatmaktadır .

Sorunuzdan:

Cihaz bir arabada bulunur ve araç yavaşladığında (fren) ivmeyi ölçmelidir.

Ancak yavaşlama , frenlemeye eşit değildir . İki olası tanım vardır:

  1. Otomobilin yere göre hızı azalıyor.
  2. Araba frenleri uygulanmaktadır.

Bu fark iniş ve çıkışlarda önemlidir. İnişlerde, frenler uygulanmazsa aracın hızı artar. Ve yokuş yukarı hareketlerde, fren yapmasanız bile hız düşebilir.

Algılama 1'in 2'den çok daha zor olduğu ortaya çıkıyor. Eksenleri araba yönüne göre tanımlayalım: X: ön-arka yön, Y: sol-sağ yön, Z: yukarı-aşağı yön. Tüm eksenler araca hizalanır.

Çözümler:

  1. Tanım 1 için, en iyi yaklaşım, otomobilin hızının sadece X yönünde değişebileceğini varsaymaktır. Daha sonra ölçülen ivme a = g + v, burada g yerçekimine karşı gelen kuvvetler nedeniyle ivmedir ve v hız değişikliğinden dolayı ivmedir. G uzunluğunun her zaman 9.8 m / s²'ye eşit olduğunu ve v'nin her zaman X yönünde olduğunu varsayabilirsiniz . Yani (g_x + v_x, g_y, g_z) = (a_x, a_y, a_z) , v_x = a_x - sqrt ((9.8m / s²) ² - g_y² - g_z²) verir . Bu yalnızca | v | az olduğunu | g |veya başka bir deyişle, motor veya frenlerden kaynaklanan hızlanma 1G'den azdır. Aracınızda bir roket güçlendirici olmadığı sürece oldukça güvenli bir varsayım olmalıdır.

  2. Tanım 2 için, sadece x ekseni okumasını doğrudan alabilirsiniz. Araç hızlanmıyor veya fren yapmıyorsa, üzerine etkiyen tek yerçekimi karşı kuvveti yol yüzeyinin normal kuvvetidir. Bu kuvvet her zaman araca göre z yönünde, bu nedenle x ekseni okumasını değiştirmez. Frenler ve motor sadece x yönünde hareket eder ve bu okumada doğrudan görülebilir.


0

Görünüşe göre uygulamanız için bir "taşma" cihazı kullanıyorsunuz. Sadece x & y hızını ölçen bir cihaz kullanmalısınız, bu şekilde eğimin ölçülebilir bir etkisi olmayacaktır. Her ne kadar toplam hızlanma eğim nedeniyle, daha küçük ya da daha büyük olabilir, cihazın x ve hızlanma y bileşenlerinin ölçecek düzlemde araç verildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.