# 执行器插件(Actuator plugins)
## PID
`mujoco.pid` 执行器插件实现了一个可配置的 [PID 控制器](https://en.wikipedia.org/wiki/Proportional%E2%80%93integral%E2%80%93derivative_controller):
$$f(t) = K_\text{p} e(t) + K_\text{i} \int_0^t e(\tau) \mathrm{d}\tau + K_\text{d} \frac{\mathrm{d}e(t)}{\mathrm{d}t},$$
其中 $e(t) = u(t) - \ell(t)$ 是控制量 $u$ 与执行器长度 $\ell$ 之间的差值。
使用示例如下:
```xml
```
可用配置选项如下:
|属性 | 默认值 | 含义 |
|----------|---------|---------|
|`kp` | 0 | 控制器的**比例(P)**增益。 |
|`ki` | 0 | 控制器的**积分(I)**增益。
若非零,将在 `mjData.act` 中添加一个激活变量,用于存储当前的积分项(以力为单位)。 |
|`kd` | 0 | 控制器的**微分(D)**增益。 |
|`imax` | 可选 | 若指定,积分项产生的力将被截断至 `[-imax, imax]` 范围内。 |
|`slewmax` | 可选 | PID 控制器设定点允许的最大变化速率(斜率限制)。若两个时间步之间请求了更大的变化,它将被截断至 `[ctrl - slewmax * dt, ctrl + slewmax * dt]` 范围。若指定,将在 `mjData.act` 中添加一个激活变量,用于存储上一个时间步的 `ctrl` 值。 |