Các phương pháp để đối phó với độ trễ la bàn (độ trễ phụ thuộc tỷ lệ) là gì?


12

Tôi đã có một robot điều khiển bằng máy chạy bộ, với bộ mã hóa bánh xe có độ chính xác thấp để theo dõi khoảng cách và la bàn điện tử để xác định tiêu đề. La bàn có độ trễ đáng kể (> 1 giây) khi robot quay nhanh, ví dụ sau khi đạt đến điểm tham chiếu - xoay vòng tại chỗ để chỉ đến tiêu đề mới của nó.

Các cách để đối phó với độ trễ là gì? Tôi nghĩ người ta có thể thực hiện nhiều phép đo và mô hình hóa phản ứng la bàn. Tuy nhiên, điều này có vẻ có vấn đề vì nó phụ thuộc vào tỷ lệ và tôi không biết tỷ lệ tức thời.

Là một cách tiếp cận đơn giản nhưng chậm, tôi xoay robot cho đến khi nó rất gần đúng hướng, sau đó thực hiện các bước tăng rất nhỏ với các khoảng dừng đo ngắn cho đến khi nó đi đúng hướng. Có cách nào khác để đối phó với điều này?

Câu trả lời:


12

Độ trễ trong la bàn là do bộ lọc thông thấp, để khử nhiễu tần số cao.

  • Có tồn tại từ kế đắt tiền hơn mà ít tiếng ồn hơn, và do đó, độ trễ ít hơn.
  • Cũng có thể sử dụng con quay hồi chuyển để cải thiện độ chính xác. Trên thực tế, đây là những gì Đơn vị đo lường quán tính (IMU) làm. Điều này có thể được thực hiện bằng cách sử dụng bộ lọc Kalman. Cải thiện độ chính xác giúp giảm độ trễ, bởi vì độ chính xác tăng làm giảm sự phụ thuộc vào bộ lọc thông thấp để khử nhiễu. Bộ lọc Kalman hợp nhất dữ liệu từ từ kế, và cả con quay hồi chuyển (đo tốc độ thay đổi trong tiêu đề).

Nếu bạn gắn bó với la bàn hiện tại của mình, có hai giải pháp khả thi (Cảnh báo, điều này ngày càng tiến bộ hơn, nhưng hầu hết mọi người có thể truy cập tùy chọn 1 mà không cần quá nhiều công việc).

  1. Bạn có thể thử hủy bỏ bộ lọc. Điều này có thể loại bỏ độ trễ, nhưng cũng làm tăng tiếng ồn tần số cao. Sau khi làm điều này, bạn có thể cố gắng điều khiển robot dựa trên ước tính mới của tiêu đề. Để làm điều này, bạn phải thử nghiệm để tìm ra các tham số bộ lọc thông thấp. Ví dụ: trong thời gian riêng biệt, bạn có thể tìm thấy:

    nơi θ (t)là tiêu đề ước tính (la bàn đầu ra) lúct,θlà tiêu đề thực tế (đất thật) vào thời điểmt

    θ^(t)=a0θ(t)+a1θ(t1)++akθ(tk)
    θ^(t)tθt .

    Bạn có thể tìm thấy các thông số bằng cách thực hiện một thí nghiệm nơi bạn đo thực địa sử dụng một số phương tiện bên ngoài khác. Với n + k + 1 mẫu, bạn có phương trình này: [ θ ( k ) θ ( k + n ) ] = [ θ ( k ) θ ( k - 1 ) θ ( 0 ) ain+k+1

    [θ^(k)θ^(k+n)]=[θ(k)θ(k1)θ(0)θ(k+n)θ(k+n1)θ(n)][a0a1ak]

    Và bạn có thể giải quyết bằng cách tìm: nơiM+là ma trận giả nghịch đảo củaM. Không có cách nào dứt khoát để làm việc rak

    [a0a1ak]=[θ(k)θ(k1)θ(0)θ(k+n)θ(k+n1)θ(n)]+[θ^(k)θ^(k+n)]
    M+Mk, vì vậy bạn có thể sẽ chỉ đoán. Đối với các điểm thưởng, điều này giả định rằng nhiễu là màu trắng và độc lập, nhưng bạn có thể làm trắng nó trước để loại bỏ sai lệch, và do đó cải thiện ước tính của bạn về các tham số.

    Bạn có thể chuyển đổi hàm này thành hàm truyền (còn được gọi là biến đổi Z trong miền thời gian riêng biệt):

    Θ^(z)Θ(z)=a0+a1z1+...+akzk

    θ¯(t)

    Θ¯(z)Θ^(z)=1a0+a1z1++akzk

    Chuyển đổi trở lại miền thời gian:

    a0θ¯(t)+a1θ¯(t1)++akθ¯(tk)=θ^(t)

    θ¯(t)=θ^(t)a1θ¯(t1)akθ¯(tk)a0

    θ¯

    θ¯

  2. Giải pháp trên vẫn chưa phải là cách tốt nhất. Ước tính ồn ào có thể không hữu ích lắm. Nếu chúng ta đặt điều này vào một phương trình không gian trạng thái, chúng ta có thể thiết kế bộ lọc Kalman và bộ điều khiển phản hồi trạng thái đầy đủ bằng LQR (bộ điều chỉnh bậc hai tuyến tính). Sự kết hợp giữa bộ lọc Kalman và bộ điều khiển LQR còn được gọi là bộ điều khiển LQG (gaussian bậc hai tuyến tính) và sử dụng phục hồi chuyển vòng để có được bộ điều khiển tốt.

    Để làm điều này, hãy đưa ra các phương trình không gian trạng thái (thời gian rời rạc):

    x(t)=Ax(t1)+Bu(t1)y(t)=Cx(t)

    hoặc là:

    x(t)=[θ(t)θ(t1)θ(tk)]=[A1A200010000010000010000010]x(t1)+[B0B1000]u(t1)

    y(t)=[θ^(t)]=[a0a1ak]x(t)

    u(t1)A0A1B0B1BMột

    QoRo

    QcRcQc= =[100000000000]Rc= =[1]J= =Σ(xTQx+bạnTRbạn)

    Sau đó, bạn chỉ cần đặt nó thông qua phương trình đại số Riccati thời gian rời rạc:

    P= =Q+MộtT(P-PB(R+BTPB)-1BTP)Một

    P

    Do đó, luật kiểm soát của bạn có thể được đưa ra bởi:

    bạn(t)= =-K(x(t)-xref(t))

    K= =(R+BTPB)-1(BTPMột)

    θ¯

    Qo=Q0+q2BVBTQ0QVV=IqqQo ma trận trở nên điều chỉnh, có nghĩa là nó trở nên kém tối ưu hơn.

    qRcQc

Các khái niệm trong bài viết này khá tiên tiến, nhưng nếu bạn cần giải những thứ như phương trình Riccati, bạn có thể sử dụng MATLAB hoặc phần mềm khác để làm điều này. Cũng có thể có các thư viện đã triển khai bộ lọc Kalman (một lần nữa, tôi tin MATLAB cũng thực hiện điều này).

Đối với một ứng dụng nhúng, bạn có thể cần phải tự thực hiện bộ lọc Kalman, mặc dù có thể có triển khai C.


Cảm ơn bạn câu trả lời tuyệt vời và sâu sắc. Tôi làm theo ý chính của giải pháp đầu tiên của bạn và tôi chắc chắn rằng tôi có thể làm việc thông qua nó. Cái thứ hai, như bạn nói, khó khăn hơn và tôi sẽ phải làm việc để xem liệu tôi có thể làm theo tất cả không.
ViennaMike

4

Một con quay hồi chuyển là câu trả lời đơn giản. Tôi đã luôn nghe thấy, con quay cho các phép đo ngắn, la bàn trong thời gian dài. Và thực tế một tách bộ lọc kallman giữa hai phần lớn thời gian. Giá của một bảng con quay hồi chuyển / acc 6DOF hiện nay chưa đến 20 đô la, quá rẻ để không sử dụng.

Có một lần, tôi đã làm việc thông qua bộ lọc Kallman của người khác . và làm cho nó hoạt động. Một bộ lọc kallman thực sự là một cách tiếp cận, không phải là một triển khai chính xác và trong trường hợp con quay hồi chuyển, kết quả cuối cùng không cần sử dụng ma trận toán học. Nó làm cho mã đơn giản hơn nhiều.

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.