Hiệu chuẩn từ kế


19

Tôi đang làm việc trên Magnetometer AK8975 là một phần của IMU. Mà dường như là rất khó khăn cho tôi. Con chip này cung cấp một vectơ 3D dưới dạng đầu ra mô tả từ trường của trái đất tại bất kỳ nơi nào trên trái đất hoặc gần nó.

Tôi đã thử hai loại thuật toán tính toán tiêu đề: Một loại đơn giản arctan(-y/x)và một loại khác là nghiêng (sân) và ngân hàng (cuộn) toán học bị hủy như được đề cập dưới đây. Cả về độ nghiêng và ngân hàng đều cho đầu ra sai.

Tôi có thể có được tiêu đề chính xác khi viết trái đất (sử dụng các tài nguyên nghiên cứu mở có sẵn đơn giản) khi nó được xoay giữ cho kế hoạch mặt đất nằm ngang bằng cách sử dụng bất kỳ thuật toán nào trong hai thuật toán.

Tôi đã thử hiệu chuẩn cho các lỗi sắt mềm và cứng. Tôi có thể vẽ nó trong 3D và hiển thị một hình cầu 3D hoàn hảo. Vẫn không làm việc về độ nghiêng hoặc giảm.

Bất kỳ con trỏ sẽ hữu ích.

Mã và các triển khai của nó như sau:

void Compass_Heading()
{
  double MAG_X;
  double MAG_Y;
  double cos_roll;
  double sin_roll;
  double cos_pitch;
  double sin_pitch;

  cos_roll = cos(roll);
  sin_roll = sin(roll);
  cos_pitch = cos(pitch);
  sin_pitch = sin(pitch); 

  //// Tilt compensated Magnetic filed X:
  MAG_X = magnetom_x*cos_pitch + magnetom_y*sin_roll*sin_pitch + magnetom_z*cos_roll*sin_pitch;
  //// Tilt compensated Magnetic filed Y:
  MAG_Y = magnetom_y*cos_roll-magnetom_z*sin_roll;
  //// Magnetic Heading


  MAG_Heading = atan2(-MAG_Y, MAG_X) ;

}

Trong đó magnetom_x, #_y#_zlà thành phần của một vectơ 3D thực sự là các giá trị RAW từ Từ kế. cuộncao độ là từ một đầu ra bộ lọc Kalman bí ẩn từ gia tốc kế và con quay hồi chuyển trên tàu. Ba cảm biến này nằm trong ATAVRSBIN1 . Các cuộn và cao độ là ok cho đến giai đoạn này.

Bây giờ, một phép tính tiêu đề đơn giản theo tạp chí_of_sensors_renaudin et al_2010c.pdf nên có MAG_Heading = atan2(-magnetom_y, magnetom_x) ;và với mức bồi thường như trên.

Mã tổng thể chỉ đơn giản là từ MỞ AHRS .


Dữ liệu ở định dạng Roll, Pitch và Yaw. Tôi chỉ xoay thiết bị bằng tay. Ba người đầu tiên chỉ tập trung vào Roll, Pitch và Yaw tương ứng. Hai phần còn lại trước tiên được xoay thiết bị quanh 45 độ dọc theo X (Được cuộn) sau đó xoay dọc theo Z cục bộ của Magnetomet. Sau đó, điều tương tự đã được lặp lại với xoay 45 độ dọc theo Y (được đặt) sau đó xoay dọc theo Z cục bộ của Magnetomet.

Các biểu đồ được vẽ trong phạm vi từ -180 đến 180 độ.

Cuộn Các góc độ trong một tệp Các đặc điểm YAW trên Roll.

Sân cỏ Các góc độ trong một tệp Các đặc điểm YAW trên Sân.

Ngáp Các góc độ trong một tệp Các đặc điểm YAW trên chính Yaw.

Yaw wrt nghiêng 45 độ (cuộn) Các góc độ trong một tệp Các đặc điểm YAW trên Yaw với 45 độ cuộn.

Yaw wrt 45 độ nghiêng (ném) Các góc độ trong một tệp Các đặc điểm YAW trên Yaw với độ nghiêng 45 độ.

Lưu ý: Đối với 2 hình ảnh cuối cùng: Đầu tiên được giữ ở vị trí nhà, điều này giống nhau cho tất cả (tham khảo các tệp txt). Sau đó, cuộn 45 độ sau đó sử dụng thiết bị máy bay (có từ kế) đã được xoay dọc theo trục Z của Magnetomet.

Tương tự như vậy đối với hình ảnh cuối cùng, thiết bị đã được đặt 45 độ sau đó dọc theo trục Z của Magnetomet.

Tôi hy vọng những điều này sẽ giúp giải quyết vấn đề của tôi.


Những phát triển mới như sau:

Tôi đã làm việc một số trên Heading. Tôi đã nhận đầu ra sau. Cuộn csv

Sân cỏ csv

Ngáp csv



chưa có câu trả lời nào !!

4
Tôi nghĩ bạn sẽ nhận được nhiều phản hồi hơn nếu bạn hiển thị các phép toán mà bạn đang cố thực hiện và mã bạn đã sử dụng để triển khai nó. Có rất ít để chúng ta tiếp tục, ngoài việc "nó không hoạt động, giúp đỡ" - đó là cách câu hỏi của bạn đọc. Lấy làm tiếc!
Martin Thompson

Sử dụng từ kế là một lĩnh vực rất chuyên biệt mà tương đối ít người sẽ có chuyên môn. Đọc qua câu hỏi của bạn một vài lần, tôi vẫn không chắc chính xác những gì sai. Bạn nói rằng nó cho "đầu ra sai" nhưng điều đó khá mơ hồ. Có thể một số ví dụ số?
Jason R

1
Đây có phải là một câu hỏi về cách diễn giải các đầu ra cảm biến hoặc làm thế nào để tính toán các biện pháp hữu ích điều hướng từ vectơ x, y, z mà cảm biến cung cấp? Các phép đo của bạn có thể lặp lại với một thể hiện khác của cùng một cảm biến không?
Abbeyatcu

1
@Rahul - Tôi ngạc nhiên vì điều này không được chú ý nhiều hơn!
Kevin Vermeer

Câu trả lời:


8

Tôi thích đồ thị của bạn. Họ rõ ràng cho thấy rằng cuộn, cao độ và ngáp dường như đang làm việc. Xin chúc mừng! Điều đó đã tiến bộ hơn hầu hết mọi người.

Tôi đoán rằng mã bạn đã trình bày đang tính toán giá trị MAG_Head "sai", khác với giá trị MAG_Head mà bạn mong đợi.

Chúng tôi sẽ giúp bạn dễ dàng hơn rất nhiều nếu bạn đưa cho chúng tôi: (Đây là phần "mô tả các triệu chứng" trong "Cách đặt câu hỏi theo cách thông minh" )

  • các AK8975 từ kế giá trị sản lượng m_x, m_y, và m_z tại một số thời điểm duy nhất.
  • Các giá trị cao độ và cuộn cùng một lúc
  • giá trị đầu ra MAG_Head bị cáo buộc sai được tính từ các giá trị đó
  • những gì bạn mong đợi MAG_Head chính xác sẽ là

Vì vậy, tôi còn lại để suy đoán rằng có lẽ bạn đang gặp phải những vấn đề tương tự mà tôi tự tạo ra cho mình :-).

  • Định dạng góc nào mà các hàm sin () và cos () và atan2 () của bạn mong đợi? Bạn có cần thực hiện một số loại chuyển đổi giữa định dạng và cuộn định dạng được lưu trữ ở định dạng đó không? Bạn có cần chuyển đổi từ định dạng đó sang những gì bạn cần MAG_heading không? (brads, độ, hoặc radian? điểm nổi hoặc điểm cố định?)
  • Có một phần bù trong các giá trị m_x, m_y, m_z thô cần được trừ đi không?
  • Có phải tất cả các phần được xếp theo cách được giả định bởi mã? Cụ thể, là trục sân và trục cuộn được xếp thẳng hàng với trục từ kế? (Có phải m_x sẽ chỉ về phía trước, dọc theo trục cuộn không? M_y có phải chỉ về bên phải, dọc theo trục sân không?)
  • Có thể một số giá trị cảm biến hoặc giá trị khác - có lẽ là m_z - cần được phủ định trước khi đưa vào mã này?
  • Có thể mã này bị gián đoạn bởi một ngắt hoặc một mã khác làm hỏng các giá trị bên trong của nó? Tôi dường như nhớ lại một dự án khác rằng, sau khi ai đó đặt "chia" trong một thói quen gián đoạn, mọi phép tính hàm trig ở mọi nơi khác trong chương trình thường sẽ cho kết quả sai.
  • Có thể làm gián đoạn bắn thường xuyên đến mức mã này không bao giờ thực sự kết thúc chạy?

Dường như có những người khác đang thảo luận về mã rất giống nhau ở nơi khác: http://diydrones.com/forum/topics/heading-from-3d-magnetometer ; http://diydrones.ning.com/profiles/bloss/dcm-imu-theory-first-draft ; http://aeroquad.com/showthread.php?1138-REVOLNING!!!-New-IMU !!! ; http://www.rcgroups.com/forums/showthread.php?t=1436742&page=6 ; http://aeroquad.com/showthread.php?691-Hold-your-heading-with-HMC5843-Magnetometer ; v.v.


Tôi đã nhìn thấy nó bây giờ .. Tôi sẽ quay lại.
Rick2047

\ 1 / Tôi đang tạo tệp csv cho [Roll, pitch, yaw và (Mx, My, Mz)]. \ 2 / Tôi hy vọng rằng MAG_Head không nên thay đổi khi thay đổi cuộn và cao độ ít nhất cho đến hai góc phần tư liên tiếp. Tiêu đề có nghĩa là, nếu nó đang hướng NE thì nên tiếp tục chỉ NE cho đến khi nó vượt qua 90 độ từ đường chân trời theo hướng xoay lên hoặc xuống để nghiêng và nên giống nhau trong trường hợp ngân hàng hoặc kết hợp.
Rick2047

\ 3 / Tất cả các tính toán bên trong đã được thực hiện bằng radian và tất cả các hàm lãnh sự chỉ mong đợi radian. Để hiển thị chỉ các giá trị được sao chép và chuyển đổi sang độ. \ 4 / Điểm nổi. \ 5 / Tất cả các cảm biến được căn chỉnh và tất cả các kết hợp có liên quan có thể đã được thử để căn chỉnh bằng SENSOR_SIGN [9]. \ 6 / Tôi đang thực hiện việc bỏ phiếu nên việc gián đoạn dựa trên tất cả các vấn đề sẽ không có ở đây.
Rick2047

Đối với quan điểm của tôi \ 1 / ở đây cho tất cả các biểu đồ tôi cũng đã đính kèm các tệp csv tương ứng. Hoặc bạn yêu cầu một cái gì đó khác. Cảm ơn vì phản ứng tốt này. :) Tôi sẽ triển khai "Cách đặt câu hỏi theo cách thông minh" nhiều như nỗ lực và thời gian của tôi cho phép. :)
Rick2047

\ 1 / Tôi sẽ làm việc cho [Roll, pitch, yaw và (Mx, My, Mz) (tiêu đề, từ chối)].
Rick2047

1

Các lưu ý áp dụng cho LSM303 có một cẩm nang hữu ích để đo đạc một la bàn để tính toán và đó là áp dụng đối với vấn đề của bạn. Nó khá chi tiết, nếu không tôi sẽ viết lại các tính toán ở đây. Lưu ý rằng các giá trị gia tốc là cần thiết cho các phép tính toàn độ, cuộn và ngáp khi xoay quanh trục của các đường sức từ dẫn đến không có thay đổi trong các giá trị từ kế. Tương tự như vậy đối với trọng lực với gia tốc kế.


Các liên kết cho thấy dấu hiệu khác nhau trong cùng một phương trình. Tôi sẽ thử tất cả các kết hợp khác.
Rick2047
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.