Làm thế nào tôi có thể tự động điều chỉnh các tham số PID khi đang bay?


15

Tôi có một hệ thống servo đơn giản sử dụng bộ điều khiển PID được triển khai trong MCU để thực hiện phản hồi. Tuy nhiên, các thuộc tính của hệ thống thay đổi linh hoạt và do đó, các tham số PID không bao giờ có thể được điều chỉnh cho mọi trường hợp.

Robot của tôi là một cánh tay có trọng lượng nhẹ với động cơ điện có thể lái được, tương tự như cái này:

Cánh tay robot nhẹ

Cánh tay thực hiện một số nhiệm vụ, bao gồm nhặt các vật nặng, đẩy và kéo các vật qua bàn. Mỗi tác vụ này yêu cầu các tham số điều chỉnh PID khác nhau mà tôi không thể dễ dàng dự đoán.

Những gì tôi thực sự muốn là cho một số chức năng cấp cao hơn có thể điều chỉnh cẩn thận các tham số để đáp ứng với hành vi của cánh tay. Ví dụ: nếu thông báo rằng cánh tay đang dao động, nó có thể giảm P và tăng D. Hoặc nếu nhận thấy rằng cánh tay không đạt được mục tiêu, nó có thể tăng I.

Các thuật toán như vậy có tồn tại? Tôi sẽ rất vui ngay cả khi thuật toán không hoàn thiện các tham số ngay lập tức. EG cánh tay có thể dao động một vài lần trước khi các tham số được điều chỉnh theo giá trị mới của chúng.

Câu trả lời:


10

Một đồng nghiệp và tôi đã từng thực hiện một thuật toán đơn giản để điều chỉnh nhanh chóng các tham số PID của vòng điều khiển hiện tại cho động cơ. Về cơ bản, thuật toán sẽ sửa đổi một tham số tại một thời điểm và sau đó thu thập dữ liệu về một số tham số phản hồi đó là thước đo mức độ tốt của chúng tôi. Chúng tôi đã sai lệch phần trăm so với điểm đặt mục tiêu hiện tại. Dựa trên việc tham số phản hồi trở nên tốt hơn hay xấu đi, tham số tiếp theo đã được sửa đổi cho phù hợp.

Hoặc, trong Wikipedia nói:

Hãy để một chương trình tuyến tính được đưa ra bởi một tableau chính tắc. Thuật toán đơn giản tiến hành bằng cách thực hiện các hoạt động trục liên tiếp, mỗi hoạt động đưa ra một giải pháp khả thi cơ bản được cải thiện; sự lựa chọn của phần tử trục ở mỗi bước chủ yếu được xác định bởi yêu cầu rằng trục này không cải thiện giải pháp.

Về mặt kỹ thuật, chúng tôi đã sử dụng phương pháp Nelder-Mead là một loại đơn giản. Nó cũng có thể được mô tả như một thuật toán leo đồi cũng như nếu bạn xem cách nó sửa đổi các tham số đầu vào của nó khi nó tìm kiếm một tham số đầu ra tối ưu.

Hoạt hình Nelder-Mead

Nedler-Mead hoạt động tốt nhất trong trường hợp của chúng tôi bởi vì nó có thể đuổi theo một điểm đặt. Điều này rất quan trọng vì điểm đặt mục tiêu hiện tại của chúng tôi đã thay đổi khi nhu cầu mô-men xoắn tăng.

kỹ thuật Nelder của Mead Mead là một phương pháp tìm kiếm heuristic có thể hội tụ đến các điểm không cố định


bạn có thể liên kết cách tiếp cận và kết quả của bạn nếu chúng có sẵn?
XUÂN PHƯƠNG

@SPRajagopal Xin lỗi nhưng không. Tôi không còn làm việc cho công ty đó và không có quyền truy cập vào bất kỳ dữ liệu nào.
embedded.kyle

4

Một cách tiếp cận tốt cho một vấn đề như vậy được gọi là kiểm soát thích ứng. Nói tóm lại, đây là một phương pháp điều khiển giả định mô hình đã biết nhưng các tham số của mô hình (khối lượng, quán tính, v.v.) thì không. Nhiệm vụ của nó là ước tính các tham số chưa biết. Một giới thiệu ngắn gọn có thể được tìm thấy trên wikipedia . Văn bản Robotics: Mô hình hóa, lập kế hoạch và kiểm soát của Siciliano et al. bao quát chủ đề kỹ hơn.

Chỉnh sửa để đáp lại truy vấn @Rocketmagnets:

Nói tóm lại, bạn phải có một mô hình toán học của hệ thống của mình, tức là các phương trình mô tả cách hệ thống của bạn phát triển theo thời gian khi bị ép buộc hoặc bằng cách khác, nhưng bạn không cần phải biết các tham số động như khối lượng của các thành phần khác nhau, quán tính của chúng, v.v. .. Đây là công việc của bộ điều khiển thích ứng để ước tính các tham số này. Tuy nhiên, bạn phải đưa ra dự đoán ban đầu cho từng tham số chưa biết. Sau đó, khi hệ thống chạy, nó sử dụng các tín hiệu điều khiển, tín hiệu đầu ra và một phương thức như hồi quy tuyến tính hoặc giảm độ dốc để cập nhật các giá trị tham số chưa biết. Theo thời gian, các tham số sẽ hội tụ đến các giá trị sẽ dẫn đến trạng thái ổn định mặc dù chúng có thể không khớp với các tham số thực, nghĩa là nó có thể sai khối lượng, nhưng giá trị vẫn hoạt động.

Từ đây tôi sẽ khuyên bạn nên tham khảo một văn bản thảo luận về phương pháp. Ví dụ, tôi chỉ chú ý rằng Tiến sĩ Marc Bodson đang cung cấp một bản sao văn bản Điều khiển thích ứng: Ổn định, Mạnh mẽ và Hội tụ ở dạng PDF trên trang web của mình .


Bạn có thể đưa ra một lời giải thích về phương pháp?
Rocketmagnet

1
Tôi nghi ngờ tôi có thể làm điều đó công lý cho rằng tôi chỉ mới biết về phương pháp này gần đây. Furhtermore không phải là một phương pháp đơn lẻ mà là một tập hợp các kỹ thuật đã được phát triển trong hơn 50 năm qua. Tuy nhiên tôi sẽ chỉnh sửa phản hồi của mình để giải thích thêm một chút.
DaemonMaker

2

Quá trình bạn đang mô tả được gọi là PID thích ứng.

Có vẻ như quá mức cần thiết. Tôi đã tìm thấy PID khá mạnh mẽ khi xử lý các nhiễu loạn bên ngoài và các nhiệm vụ bạn mô tả dường như không vượt quá khả năng của một nhóm lợi nhuận duy nhất.


Đây không chỉ là những xáo trộn bên ngoài. Đây là những thay đổi trong đặc điểm của khớp. Nhân đôi khối lượng của robot chẳng hạn dẫn đến việc vượt quá.
Rocketmagnet
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.