2010-05-04 24 views
5

Tôi cần tạo la bàn cho ứng dụng của mình.Sự tiến thoái lưỡng nan về độ chính xác của Compass

Từ đọc các tài liệu có vẻ như có hai cách hợp lý để làm điều này:

  • phương pháp Sensor.TYPE_ORIENTATION: Đây là cách dễ dàng để làm việc đó. Vấn đề với điều này là nó không chính xác. Khi tôi so sánh đọc của tôi với Snaptic Compass nó là khoảng 10-15 degress off cho mục đích của tôi là không thể chấp nhận.
  • Cảm biến.TYPE_ACCELEROMETER, Sensor.TYPE_MAGNETIC_FIELD và getRotationMatrix() kết hợp với phương thức remapCoordinateSystem() và getOrientation(): Tài liệu cho biết "thường chính xác hơn". Vấn đề là bất kể sự chậm trễ tôi đăng ký với người nghe la bàn đi điên ngay cả khi thiết bị là văn phòng phẩm trên bề mặt phẳng.

Bất kỳ đề xuất nào để giải quyết vấn đề này sẽ được đánh giá cao.

Trả lời

8

Hình như mob1lejunkie đã figured này ra đã có, nhưng chỉ là để tham khảo trong tương lai, hãy để tôi kể rằng vấn đề ở đây là magnetic declination (chênh lệch giữa bắc từ trường và bắc true). Bạn có thể thử an online model from NOAA để hiểu được sự khác biệt ở phần nào của bạn trên thế giới.

Android bao gồm một kiểu gọi là GeomagneticField có thể được sử dụng để tính toán độ lệch gần đúng cho vĩ độ, kinh độ và độ cao. Vì vậy, những gì tôi tin rằng bạn cần phải làm để tính toán phía bắc thực sự là đọc ra các azimuth value từ Sensor.TYPE_ORIENTATION và sau đó thêm vào đó GeomagneticField.getDeclination().

+0

Có điều này chính xác là vấn đề. – mob1lejunkie

1

Đó là nhược điểm của các bộ phận nhỏ gọn dành cho điện thoại. Một IMU $ 5000 mà chúng tôi đang sử dụng ngay bây giờ có lỗi là +/- 2 độ và trong phạm vi đó có vẻ như cũng phát điên.

Hãy thử tránh xa sự can thiệp, bề mặt kim loại và xem nó có cải thiện không. Nếu không, tôi ghét phá vỡ những tin xấu, nhưng đó là phần cứng.

Bạn đã thấy những điều này chưa?

http://developer.android.com/reference/android/hardware/SensorManager.html

http://groups.google.com/group/android-developers/browse_thread/thread/bbb0e8b97c673cf9/5c16bc2e49f6e972?lnk=raot

+0

Những gì tôi đang cố gắng nói là trên cùng một điện thoại (Nexus One) ở vị trí chính xác giống hệt nhau trên bàn ăn Snaptic Compass, ứng dụng của bên thứ ba từ Android Market, chính xác hơn khi đọc. Tôi tự hỏi những gì Snaptic lừa đang sử dụng để có được đọc chính xác và đáng tin cậy hơn. – mob1lejunkie

+0

Xem các liên kết tôi đã thêm vào để trả lời. –

+0

Sau khi đặt xung quanh trong cài đặt Snaptic Compass, tôi nhận thấy nó sử dụng đúng hướng bắc trong khi tôi đang sử dụng từ phía bắc. Bây giờ tôi cũng sử dụng đúng phía bắc ứng dụng của tôi và Snaptic Compass có cùng một đọc. Tất nhiên việc đọc không hoàn hảo nhưng đó là do phần cứng Nexus One không phải là lỗi của việc triển khai la bàn của tôi. pinnacler cảm ơn sự giúp đỡ của bạn! – mob1lejunkie

Các vấn đề liên quan