---
# System prepended metadata

title: '[KINNECT CONTROLS] PID Advanced'
tags: [Kinect Controls]

---

<!-- > Ở phần tiếp theo của bài viết, ta tiếp tục tìm hiểu về thành phần Proportional (`P`) trong thuật toán PID và cách nó ảnh hưởng đến việc cân bằng của drone -->
# <center>PID Advanced</center>

Trong phần này, chúng ta sẽ cùng nhau tìm hiểu về sâu hơn về thuật toán **Bộ điều khiển PID**. Bộ điều khiển PID liên tục theo dõi giá trị sai số và sử dụng giá trị này để tính toán ra ba giá trị chính: `tỷ lệ (proportional)`,` tích phân (integral)` và `đạo hàm (derivative)`. Sau đó, bộ điều khiển tổng hợp ba giá trị này lại với nhau để tạo ra tín hiệu điều khiển cuối cùng.

Hãy cùng chúng mình tìm hiểu chi tiết về phương trình tỷ lệ, tích phân và đạo hàm qua ba phương trình riêng biệt. Sau đó, chúng ta sẽ kết hợp chúng lại để tạo thành đầu ra cuối cùng.

## **Proportional (tỉ lệ):**
Ở thành phần này, ta sẽ sử dụng `hằng số P (do người dùng nhập) nhân với e[i] (sai số)` để tính toán cánh quạt cần tăng tốc hoặc giảm tốc bao nhiêu để đưa chiếc drone đạt góc nghiêng cân bằng (~0 độ). Đây là thành phần quan trọng giúp drone đạt sự cân bằng. Tính chất của tỷ lệ P:
- Khi P cao, drone phản ứng nhanh hơn, nhưng có khả năng "phản ứng quá mức" (overshoot) dẫn đến lắc lư (oscillation) và thời gian cân bằng kéo dài.
- Khi P thấp, drone phản ứng chậm.
- Nếu chỉ sử dụng P mà không kết hợp các thành phần khác, drone sẽ bị lệch so với góc nghiêng cân bằng mong muốn.

## **Derivative (đạo hàm):**

Đạo hàm, thường ký hiệu là D, liên quan đến tốc độ thay đổi của một đại lượng. Nó giúp kiểm soát hiệu ứng `overshoot` và `oscillation` của [tỷ lệ P](#Proportional-tỉ-lệ).

Nói một cách dễ hiểu hơn, D có vai trò bổ trợ cho Proportional bằng cách giảm hiệu ứng overshoot và sự lắc lư (oscillation) của P.

**Công thức tính D:**

$$D * (e[i] - e[i-1]) \over elapsed Time$$
:::info
Trong đó:
- `D` là hằng số đạo hàm người dùng nhập.
- `e[i]` và `e[i-1]` là sai số hiện tại và trước đó.
- `elapsed Time` là khoảng thời gian giữa hai vòng lặp.
:::

Tuy nhiên, việc thiết lập hằng số D cần cẩn trọng. Khi D quá cao, những dao động nhỏ được tạo ra từ các bộ phận chuyển động của drone sẽ khiến giá trị PID bị tăng lên hơn mức cần thiết. Còn khi D quá thấp, tác động của D sẽ không đủ lớn để bù trừ cho P.

## **Integral (tích phân):**
Thành phần tích phân tượng trưng cho độ ổn định khi drone cân bằng. Trong một số loại drone FPV hay drone chuyên dụng để thi đấu, chỉ số này thường không quan trọng bằng tỷ lệ P và thành phần đạo hàm D.

Tuy nhiên, với Kinect Controls và các loại drone cần đạt sự cân bằng ổn định hơn, thành phần I có vai trò quan trọng không kém P và D. Thành phần này giúp loại bỏ vấn đề offset của tỷ lệ P và giúp drone duy trì trạng thái cần đạt một cách ổn định hơn.

**Công thức tính I:**
$$ Iterm  ⩲ {I * (e[i] + e[i-1]) \over 2 * elapsedTime}$$
:::info
Trong đó:
- `Iterm` là giá trị tích phân.
- `I` là hằng số tích phân do người dùng nhập.
- `e[i]` và `e[i-1]` là sai số hiện tại và sai số ở vòng lặp trước.
- `elapsedTime` có ý nghĩa tương tự phần đạo hàm.
:::


Dấu `⩲` trong công thức có thể hiểu là cộng dồn, tức là thành phần I sẽ liên tục cộng thêm giá trị ở vế bên phải của biểu thức.

Tuy nhiên, điều này có thể dẫn đến vấn đề. Hãy cùng xem một ví dụ để dễ dàng hình dung hơn:

Khi drone cần bay lên độ cao 40m, nhưng chúng ta lại giữ nó ở mức độ xuống thấp, thành phần I sẽ tiếp tục cộng dồn, tăng tốc độ cánh quạt để đạt độ cao mà drone mong muốn. Khi chúng ta thả drone ra, nó sẽ bay lên với tốc độ cực kỳ nhanh, không ổn định. Khi bộ xử lý trung tâm nhận ra rằng drone đã bay vượt qua độ cao đã định sẵn, nó sẽ phải mất thời gian dài để đưa nó trở lại độ cao mong muốn.

## **Tổng kết**
Tóm gọn lại, khi sử dụng thuật toán Bộ Điều Khiển PID cho từng hệ thống cơ học khác nhau, các hằng số P, I và D sẽ khác nhau tùy thuộc vào tính chất và mục đích của hệ thống. Việc thiết lập các thông số này thường đòi hỏi hàng chục hoặc hàng trăm lần thử nghiệm để đạt được hiệu suất tốt nhất.

Đối với các kỹ sư và chuyên gia, để tiết kiệm thời gian trong việc tìm kiếm ba thông số này, họ thường xây dựng các mô hình toán học (mathematical model) dựa trên việc đo lường và mô phỏng (simulation) hệ thống. Nhờ đó, họ có thể xác định các giá trị tối ưu cho P, I và D một cách hiệu quả hơn.


---

> [color=#2b8e01]
> 
> [Part 1 THUẬT TOÁN PID](
https://hackmd.io/@RMGN4WPeQI-pbCBlc2mI9A/SJbfNY13n)
> [time=Wed, Aug 9, 2023 9:07 AM]