Üçgenlere iBeacons için örnek
Birden fazla iBeacons bir 'kaba' kapalı konumu. yapmak için kullanma imkanı araştırıyorum Bu uygulama bir tür 'müze' ayarı, ve olur daha kolay yapabilmek için bir ızgara şeklinde olan yerler için farklı nesneleri daha sonra tek tek işaretleri (gerçi o olmayabilir de imkansız).
Örnekler, deneyimler, birden fazla yer işaretleri içine Üçgen çizmek için kullanarak, ya da yolda kendim yazmak için yardımcı olmak için bazı mantık var mı?
CEVAP
Bazı deneyler hassas bir pozisyon üç işaretleri kullanarak yapıyordum.
Trilateration sonuçları
Ne yazık ki, sonuçlar kalite açısından çok hayal kırıklığı. Ağırlıklı olarak iki konu vardı:
- İçinde olmayan kontrollü ortamlarda, nerede bulacağını metaller ve diğer nesneleri etkileyen sinyal alınan sinyal gücü fenerleri değişiklikleri çok sık görünen o ki imkansız olsun hata aralığı 5 metre aşağıda.
- Kullanıcı alıcı cihaz işleme şekline bağlı olarak, okuma bir çok şey de değişebilir. Eğer kullanıcı bluetooth anteni üzerine elini koyar, sonra algoritma düşük sinyalleri olarak girdi sağlayacak ve böylece işaretleri cihazdan çok uzak olması gerekiyor. this image Bluetooth tam yerini anten görüyoruz.
Olası çözümler
Aktif olarak benden aşağı gitmeye cesareti olan bir Apple Mühendisi ile konuştuktan sonra bu yol, şu anda kullanmaya daha fazla meyilli hissediyorum seçeneği kaba kuvvet. Denemek için kurulmuş bir işaret her X metre (X olmak en fazla hata tolere sistemi) böylece yolda bu işaretleri kılavuz konumunu verilen bir cihaz tarafından hesaplanarak hangi beacon üzerinde kılavuz, en yakın cihaz ve varsayarsak, cihazın üzerinde aynı pozisyonda.
Trilateration algoritması
Ancak, bütünlüğü uğruna, trilateration algoritması temel işlevi aşağıda paylaşıyorum. Paragraf 3 ("Üç mesafeleri bilinen") *3.*
- (CGPoint)getCoordinateWithBeaconA:(CGPoint)a beaconB:(CGPoint)b beaconC:(CGPoint)c distanceA:(CGFloat)dA distanceB:(CGFloat)dB distanceC:(CGFloat)dC {
CGFloat W, Z, x, y, y2;
W = dA*dA - dB*dB - a.x*a.x - a.y*a.y b.x*b.x b.y*b.y;
Z = dB*dB - dC*dC - b.x*b.x - b.y*b.y c.x*c.x c.y*c.y;
x = (W*(c.y-b.y) - Z*(b.y-a.y)) / (2 * ((b.x-a.x)*(c.y-b.y) - (c.x-b.x)*(b.y-a.y)));
y = (W - 2*x*(b.x-a.x)) / (2*(b.y-a.y));
//y2 is a second measure of y to mitigate errors
y2 = (Z - 2*x*(c.x-b.x)) / (2*(c.y-b.y));
y = (y y2) / 2;
return CGPointMake(x, y);
}
Tek örnek bir uygulama oluşturmak için...
&; Alıcı tipi " 'CALayer' ör...
MVVM Şablon için iyi bir örnek...
Hızlı-ve-kirli bir kabuk sadece bir ör...
hata: Hiçbir kaynak tanımlayıcısı özni...