[KINECT CONTROLS] THUẬT TOÁN PID === ----- ###### 📋 Content: [TOC] ----- ## Lời mở đầu 🚁 Chào mọi người! Chúng ta đã cùng nhau tìm hiểu về những nguyên lý vận hành drone trong post Basic Controls Guide. 💡Trong tuần này, chúng ta sẽ cùng khám phá sự thú vị của thuật toán PID và hiểu rõ mục tiêu chính của nó. PID (Proportional-Integral-Derivative) là một thuật toán quan trọng được sử dụng để điều khiển hệ thống và đạt được trạng thái mong muốn. Trên thực tế, PID xuất hiện ở khắp mọi nơi xung quanh chúng ta. ## Ứng dụng ### Ván trượt cân bằng (Hoverboard) <img src ='https://cdn.baogiaothong.vn/upload/images/2021-3/article_social_image/2021-07-04/img-bgt-2021-img-bgt-2021-3e0fb96b92d33e42bcdf733b1e6d82cb-1625393049-width1200height630-1625393227-width1200height630.jpg'> <sup> Nguồn: Báo Giao Thông</sup> - Chắc hẳn mỗi người trong chúng ta đều đã một lần cảm thấy thán phục trước những màn trình diễn đi ván trượt thăng bằng như hình bên cạnh: - Thực tế là một số loại của các ván trượt này cũng đã được cài đặt thuật toán PID để người dùng giữ thăng bằng dễ hơn đó! ### Tủ lạnh <img src = 'https://darlingvietnam.net/wp-content/uploads/tu-lanh-darling-nad1580wx-02.jpg'> <sup> Nguồn: Tủ lạnh Darling</sup> - PID còn được cài đặt từ trong các chương trình của tủ lạnh và máy lạnh để kiểm soát nhiệt độ của môi trường. Ngoài ra thuật toán này còn điều khiển mức nước trong các hệ thống nước thông minh nữa đó. ## PID trong Drone Quay lại với drone của chúng ta, $PID$ đảm bảo sự cân bằng của drone trong quá trình bay. Nói cách khác, với sự giúp đỡ của thuật toán này, trừ khi drone hết năng lượng, nó sẽ không bao giờ ngừng hoạt động và rơi xuống đất khi những cơn gió thổi qua. Nhờ vậy, drone sẽ được an toàn khi hoành tẩu trên bầu trời và giải quyết được rất nhiều các vấn đề quan trọng của các hệ thống IoT ở hiện tại và tương lai. ![](https://hackmd.io/_uploads/ryfNDtJn3.png) <sup> Bộ điều khiển PID Nguồn: Wikipedia</sup> - Công thức $PID$: ***pid_value*** = $(P * e[i]) + (I * ∫e[i]*di) + (K * de[i]/di)$. - Trong đó: - ***pid_value*** đại diện cho "giá trị cần thay đổi," và giá trị này: - Được tính toán dựa trên "sai số" e[i] xác định ở bước 2. - Sẽ được sử dụng để điều chỉnh ở bước 4. - Bao gồm ba thành phần riêng biệt: $P$, $I$, và $D$. - Bây giờ, chúng ta sẽ đi vào từng thành phần toán học của thuật toán: - ***Proportional - Tỉ lệ***: Thành phần này thu hẹp sự khác biệt giữa "góc nghiêng hiện tại" và "góc nghiêng cần đạt" $e[i]$: $e[i] = angle[i] - desiredAngle$ ($P$ thay đổi theo tỷ lệ với độ lớn của sai số này.) - ***Integral - Tích phân***: Thành phần này quản lý tất cả các $e[i]$ tích lũy trong quá khứ và loại bỏ những sai số dư thừa có thể tích tụ theo thời gian. - ***Derivative - Đạo hàm***: Thành phần xem xét tốc độ thay đổi của sai số. Nó đóng vai trò như một "dự đoán" về các sai số trong tương lai dựa vào tốc độ thay đổi của sai số hiện tại. - Cuối cùng, các giá trị $P$, $I$, và $D$ là các hằng số mà ta tự đặt cho hệ thống drone. Tìm các giá trị thích hợp cho các hằng số này đòi hỏi việc điều chỉnh và thử nghiệm, nhưng một khi đã cài đặt đúng, thuật toán $PID$ sẽ hoạt động kỳ diệu trong việc đạt được điều khiển ổn định và chính xác.