# <center>Kinect Controls: Problems</center> <style> *{ text-align: justify; text-justify: inter-word; } </style> :::info :bulb: Trước khi bắt đầu bài viết hãy để mình nhắc lại một chút về thuật toán PID PID bao gồm 3 thông số riêng biệt đó là các giá trị tỉ lệ, tích phân và đạo hàm, viết tắt là `P, I, và D`. Trong bài viết hôm nay chúng ta sẽ nói rõ hơn về tầm quan trọng của thành phần `D (Derivative)` trong thuật toán điều kiểu drone > [color=#2b8e01] > [Part 1 THUẬT TOÁN PID]( https://hackmd.io/@RMGN4WPeQI-pbCBlc2mI9A/SJbfNY13n) > [time=Wed, Aug 9, 2023 9:07 AM] ::: # I. Tình hình dự án Sau khi chúng mình cài đặt thuật toán PID và thực hiện hàng loạt lần thử nghiệm bay, chúng mình bắt đầu nhận thấy một vấn đề quan trọng. Mặc dù bộ ba chỉ số `P, I và D` đã tiệm cận đến giá trị phù hợp nhất, nhưng chiếc drone của chúng mình vẫn gặp nhiều khó khăn trong việc duy trì sự ổn định của lực nâng được tạo ra bởi cả 4 cánh quạt. <div style="text-align: center;"> <p>Video bay thử</p> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdTFxamI4dHZhNzJtZG5xNDJzaHNieW85ZWVyZ2E5Yjd4ejI0dDZpaiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/tKABNJcbX7Fj9ddq8K/giphy.gif" alt="Alt Text" /> </div> # II. Phát hiện vấn đề **A. Sai lệch giữa tính toán và đo lường** Như chúng tôi đã đề cập ở phần trước, thành phần Derivative trong thuật toán PID được tính toán để cung cấp thông tin về vận tốc góc của chiếc drone tại mỗi thời điểm. Tuy nhiên, khi chúng tôi so sánh kết quả này với dữ liệu đo lường từ cảm biến MPU6050 (dùng để đo vận tốc góc trên mỗi trục), chúng tôi đã phát hiện ra sự chênh lệch đáng kể giữa hai giá trị này. ![](https://hackmd.io/_uploads/BkvmKjm6n.png) Dưới đây là một biểu đồ minh họa, trong đó chúng tôi đã thực hiện một thử nghiệm nhằm nâng phần mũi của chiếc drone và sau đó đưa nó trở lại vị trí ban đầu. :::success <div style="text-align: center;"> <img src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdnF2NTgwaDZ5ZmtkamQyeTM1M3Jua2J2dTVwa2Jwb3FyemVza29kNSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/R8Slj0a3OVyzSleYNr/giphy.gif" alt="Alt Text" /> </div> * **Đường màu vàng:** biểu thị giá trị vận tốc góc thực tế từ cảm biến gyroscope. * **Đường màu xanh:** biểu thị giá trị tính toán từ thành phần Derivative. ::: Rõ ràng, đường màu vàng có sự ổn định tốt hơn và thậm chí còn có tốc độ phản ứng nhanh hơn so với giá trị tính toán từ thành phần Derivative. **B. Sự phụ thuộc vào quá trình tinh chỉnh ban đầu** Trước khi mỗi lần bay, chiếc drone phải được hiệu chỉnh để xác định góc nghiêng ban đầu (trước khi cất cánh) là 0 độ. Tuy nhiên, vấn đề nảy ra là không phải lúc nào chiếc drone cũng có thể được hiệu chỉnh ở điều kiện hoàn hảo, tức là trên một bề mặt hoàn toàn phẳng (vuông góc với trọng lực của Trái Đất). Hơn nữa, các phần của chiếc drone có thể được tháo lắp linh hoạt, dẫn đến sai số trong việc xác định góc nghiêng của mạch MPU6050, điều này không thể tránh khỏi. Một khi góc nghiêng ban đầu bị lệch khỏi giá trị lý thuyết, chiếc drone sẽ nhanh chóng mất sự ổn định và không thể kiểm soát. # III. Kết luận Sau khi nghiên cứu và thử nghiệm, chúng tôi đã rút ra một số kết luận quan trọng: * Cân bằng dựa trên góc nghiêng không phải lúc nào cũng là giải pháp hiệu quả, do sự phức tạp trong tính toán, điều này có thể dẫn đến sai số lớn. * Điều kiện thử nghiệm không phải lúc nào cũng đạt tiêu chuẩn # IV. Giải pháp đề xuất Dựa trên kết quả thu được từ quá trình thử nghiệm và kết luận, chúng mình có một số hướng tiềm năng để tối ưu hóa khả năng điều khiển của chiếc drone và đảm bảo tính ổn định trong quá trình bay như sau: 1. **Sử dụng đại lượng vật lý thay vì góc nghiêng:** Thay vì dựa vào thông số góc nghiêng, chúng tôi đề xuất sử dụng một đại lượng vật lý khác, có thể là gia tốc góc (angular acceleration) hoặc tỉ lệ biến thiên vận tốc góc (rate of change of angular velocity) để làm nền tảng cho việc tính toán các thông số PID 2. **Chọn đại lượng không ảnh hưởng tới quá trình Calibrate** 2. **Đại lượng được chọn là mục tiêu để chiếc drone hướng đến sự cân bằng**