Pusulayı çevirmeye devam ettiğimde 360ın üstüne eklesin yani 2 turda 720?

Başlatan zengdai, 13 Temmuz 2014, 03:38:59

zengdai

Merhaba arkadaşlar,
Pusulayı 0 ra sabitleyip saat yönünde çevirmeye devam ettiğimde 360 dan 0 geçmesin. Eklemeye devam etsin istiyorum. Bunu nasıl yapıcam bir türlü çözemedim. :-\  Yardım ederseniz sevinirim!
Selametle.

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

zengdai


Kabil ATICI

Değerlendirme programı 360 derece için yapıldığı için, ek bir tampon bellek açıyorsun. Yani bir değişken. Pusulanda 360-0 geçişini veya 0-360 geçişini kontrol edeceksin. 360-0 geçişinde değişkeninin değerini 1 artıracaksın.

Buna göre

bunu basitçe
pusula_sonuç;=0;
pusula_değer =0;
pusula_değer_yeni=0;
donus=20; //normalde sıfır yapmak gerekir ama ters yön olayı nedeni ile değeri 20 yaptık.(artırılabilir)


if (pusula_değer==360)
if (pusula_değer_yeni==0)
{
donus++;
}
if (pusula_değer==0)
if (pusula_değer_yeni==360)
{
donus--;
}

pusula_değer=pusula_değer_yeni;
if (donus==20)
{
pusula_sonuc=pusula_değer;
}

if (donus==21)
{
pusula_sonuc=pusula_değer+360;
}

//ters yöndeki hesabı kendin halledersin. Gördüğün gibi 360-0 geçişi olduğu gibi 0-360 geçişide var.(ters yön)
ambar7

mufitsozen

nicin boyle bir sey yapmak istiyorsunuz?

Amacinizi yazarsaniz sizin akliniza gelmemis bir cozumde onerebiliriz.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

zengdai

Hocam takıldıgım noktayı alt konularda sormuştum ama herhalde derdimi tam anlatamadım ki yanıt veren olmadı.
Pusulanin çıktıklarına kalman filtresi uygulayıp öyle kullanıyorum. Bunu bir otopilot uygulamasında kullanıyorum. varış noktası açısı 0 veya 360 dereceye yakın olduğu zaman değer arası atlamalarda kalman filtresi bunu aradaki bir değer olarak atıyor buda aracın etrafında dönmesi ne sebep oluyor. Allah tan test aşamasında programın açığının olduğunu farkettim yoksa yanardım.

Kabil ATICI

Önce-sonraki değer uygulaması yap 360->0 geçişinde özel şart olarak incele ve ne yapması gerektiğini sen belirle. Hatta bunu bir değer aralığı olarak tanımla. Program sadece senin verdiğin duruma göre hareket ediyor. Yani aralık olarak 300->0 olabilirse (300:360)->(0:50)  olarak ele alınabilir.

Programını bilmiyorum, büyük ihtimalle büyük küçük karşılaştırmasına göre ele alıyorsun, özel şart olarak bu geçişi sen belirlersen çarkı tamamlarsın.
ambar7

zengdai

Ambar hocam, bu yöntemi uyguladım çok şık sonuçlar vermiyor. Biraz bilimsel yayınları taradım grafiklerinde  eksi 70 gibi değerler var. Yani başta bahsettigimiz yöntem. Ama elimde bir gyro olsaydı  problemi rahatlıkla atlatırdık. Yanlış mıyım?

muhittin_kaplan

Ucaklara bas verirken ucagin o anki durumu 0 kabul edilir. Ornegin grcek kuzeyde olan cihazimiza 15der bas verdigimizde ucak dondugunde orasi 0 dir. Siz 180 den kucukse cw 180den buyukse ccw yapacaksiniz

zengdai