Chia sẻ Đọc dữ liệu từ cảm biến MPU6050 dùng bộ lọc Kalman (code for PIC)

Thảo luận trong 'Robot'

Đang xem chủ đề này ( Thành viên: 0, Khách: 1)

  1. lamtug0411

    lamtug0411 Kỹ sư

    Tham gia ngày:
    7/1/13
    Bài viết:
    101
    Đã được thích:
    42
    Điểm thành tích:
    28
    Giới tính:
    Nam
    e ko hiểu lắm về cách kết hợp accelerometer với gyro, ai có thể giải thích rõ hơn giúp e đc ko, thank!
     
  2. phamsang9x93

    phamsang9x93 Học sinh phổ thông

    Tham gia ngày:
    22/3/13
    Bài viết:
    4
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam

    chỗ float dt = (float)(looptime)/1000; thì giá trị looptime lấy ở đâu ra vậy bạn?
     
  3. yenninh86

    yenninh86 Học sinh phổ thông

    Tham gia ngày:
    1/3/14
    Bài viết:
    26
    Đã được thích:
    19
    Điểm thành tích:
    3
    Giới tính:
    Nam
    hihihi, nếu dùng bộ lọc kalman thì không thể tính dc trục z của con này đâu nha. pải dùng DMP mới tính dc. hơi rắc rối một chút nhưng chịu khó thì oke. up file tính toán sử dụng bộ lọc klman, chương trình của mình viết trên stm32f4 disc
     

    Các file đính kèm:

    Hungcoibkhn, ueiht22018051topic thích bài này.
  4. tam762410

    tam762410 Sinh viên đại học

    Tham gia ngày:
    20/2/13
    Bài viết:
    45
    Đã được thích:
    31
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Lấy matlab bụp một phát là xong khỏi cần tính toán chi cho mệt.. Chỉ cần xác định ma trận A, H,Q,R là được.... Trong simulink có hổ trợ cho ta một khối kalman filter lấy ra mà xài.
     
    yenninh86 thích bài này.
  5. yenninh86

    yenninh86 Học sinh phổ thông

    Tham gia ngày:
    1/3/14
    Bài viết:
    26
    Đã được thích:
    19
    Điểm thành tích:
    3
    Giới tính:
    Nam
    lí thuyết thì xám xịt còn cây đời mãi mãi xanh tươi
     
  6. 8051topic

    8051topic Sinh viên đại học

    Tham gia ngày:
    23/12/12
    Bài viết:
    84
    Đã được thích:
    54
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Hi bạn yenninh86 , bạn có thể cho mình 1 project demo thử đo góc có lọc Kalman được không a5h, mình không hiểu mấy cái P, Q, R lắm a5h! hihi

    Thank bạn!
     
  7. tam762410

    tam762410 Sinh viên đại học

    Tham gia ngày:
    20/2/13
    Bài viết:
    45
    Đã được thích:
    31
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Bạn đọc lại lý thuyết bộ lọc kalman thì sẽ hiểu.. Thông thường Q và R là tự mò.. Mò sao cho đáp ứng tốt thì lấy.... Nhưng nếu thấy nuốt khó trôi cái kalman này bạn cũng có thể sử dụng bộ lọc bù nó cũng cho thể cho kết quả tương tự..(
    MPU-6050 Data with a Complementary Filter - YouTube )..
    Thân chào bạn...
     
    8051topic thích bài này.
  8. tam762410

    tam762410 Sinh viên đại học

    Tham gia ngày:
    20/2/13
    Bài viết:
    45
    Đã được thích:
    31
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Tại sao phải kết hợp cả ACC và Gyro ?..
    Đơn giản đó là do đặc điểm tính chất của nó...
    Acc : anh này có đặc điểm là rất manh động.. Điều này thấy khá rõ khi bạn tính góc từ Acc. Bạn lắc mạnh cảm biến rồi sẽ thấy.. Bạn một góc chừng 20 độ nó có thể đưa ra cho bạn một góc là 7 8 chục.. Kinh hoàng. Đợt trước làm xe tự cân bằng muốn khóc vì em này...!!.. Nhưng bù lại góc tính từ Acc sẽ không bị trôi..!..
    Còn Gyro chị này thì không manh động như anh Acc... Quá tuyệt..!... Nhưng chị này có một điểm xấu là để chỉ nằm yên góc tính từ Gyro vẫn bị thay đổi.. Tăng hay giảm thì không biết.. Để em MPU nằm yên chừng 5 phút góc tính sẽ bị lệch một khúc.... Này mà đưa vào PID gì gì đó thì banh xác..
    Vì thế cần kết hợp cả Acc và Gyro để đưa ra góc chính xác nhất. Tránh hiện tượng trôi và manh động...
    Ví dụ trong code kalman của mấy sư huynh trên kia thì float newAngle: là góc tính từ Acc đó bạn....

    Theo mình là vậy, thân chào bạn...:D..
     
  9. chiefpro

    chiefpro Học sinh trung cấp

    Tham gia ngày:
    20/1/14
    Bài viết:
    30
    Đã được thích:
    1
    Điểm thành tích:
    8
    Giới tính:
    Nam
    Mấy bác cho em hỏi cách chống nhiễu khi đọc giá trị vận tốc và gia tốc góc, làm sao mình calib lại tín hiệu để khi để yên cảm biến thì vận tốc theo các trục đều bằng 0 ? Cảm ơn mấy bác nhiều.
     
  10. tam762410

    tam762410 Sinh viên đại học

    Tham gia ngày:
    20/2/13
    Bài viết:
    45
    Đã được thích:
    31
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Đơn giản lắm bạn ạ.. Nhưng giá trị Acc thì khỏi cần calib.. Chúng ta chi cần calib giá trị Gyro thôi...
    Để calib giá trị Gyro khởi tạo chương trình bạn để chị MPU nằm yên, cắm xâm phạm đến chỉ.... Bạn đọc giá trị Gyro của từng trục khoảng vài trăm lần sau đó lấy giá trị trung bình... Giá trị trung bình đó chính là Offset của từng trục..

    Mổi lần lấy giá trị về bạn chỉ cần - Offset đi là bạn đã calib được em MPU6050 xinh đẹp...
    Thân chào bạn....... :D...
     
    Học viên mớichiefpro thích bài này.

Chia sẻ trang này