平衡车串级pid
时间: 2025-06-01 07:20:46 浏览: 25
### 平衡车串级PID控制的实现与调参方法
#### 1. 串级PID控制的基本原理
串级PID控制系统是一种多回路控制系统,通常用于复杂动态系统的控制。对于平衡车而言,串级PID控制分为三个主要控制环:直立环(内环)、速度环(外环)和转向环。直立环主要用于保持小车的平衡,速度环用于控制小车的速度,而转向环则负责调整小车的方向[^2]。
#### 2. 直立环(内环)PID参数整定
直立环是平衡车的核心控制环,其目标是使小车维持在机械中值附近,防止倾倒。以下是具体的参数整定步骤:
- **机械中值确定**
确定小车的机械中值是调参的第一步。通过将小车从后往前倾倒至临界状态,记录角度值1;再反向操作得到角度值2,取两者的平均值作为机械中值[^3]。
- **比例参数(Kp)调整**
首先清零所有PID参数,设置Kp为正值(如+1),观察小车的反应。如果小车向前倾时车轮向前转,则说明Kp极性正确。然后逐渐增大Kp,直到小车能够较好地矫正角度偏差但不出现大幅晃动。继续增大Kp,直至小车出现低频大幅抖动,记录此时的Kp值(如550)[^3]。
- **微分参数(Kd)调整**
清零其他参数,设置Kd为正值(如+0.5),验证其极性是否正确。接着恢复之前设定的Kp值,并从小到大调整Kd,直至小车出现高频震荡。此时的Kd值(如2.5)可用于进一步优化。根据工程经验,最终可将Kp和Kd分别乘以0.6作为实际使用值[^3]。
#### 3. 速度环(外环)PID参数整定
速度环的目标是使小车在稳定状态下保持零速度或指定速度。以下为具体调参步骤:
- **比例参数(Kp)调整**
清零其他参数,设置Kp为正值并逐步增大,观察小车对速度变化的响应。当小车能够快速响应速度指令且无明显超调时,记录此时的Kp值。
- **积分参数(Ki)调整**
在确定Kp的基础上,引入Ki以消除稳态误差。逐步增大Ki,直至小车能够在长时间运行中保持恒定速度而不偏离目标值。注意避免因Ki过大导致系统不稳定。
#### 4. 转向环PID参数整定
转向环负责调整小车的方向,确保其在无转向命令时沿直线行驶。以下是具体调参步骤:
- **比例参数(Kp)调整**
清零其他参数,设置Kp为正值并逐步增大,观察小车在转向过程中的响应。当小车能够准确跟随转向指令且无明显振荡时,记录此时的Kp值[^4]。
#### 5. 实现代码示例
以下是一个简化的串级PID控制算法实现代码示例,适用于平衡车:
```python
class PIDController:
def __init__(self, kp, ki, kd):
self.kp = kp
self.ki = ki
self.kd = kd
self.integral = 0
self.previous_error = 0
def compute(self, setpoint, feedback, dt):
error = setpoint - feedback
self.integral += error * dt
derivative = (error - self.previous_error) / dt
output = self.kp * error + self.ki * self.integral + self.kd * derivative
self.previous_error = error
return output
# 示例:直立环PID控制
kp_upright = 330
ki_upright = 0 # 直立环通常不需要积分调节
kd_upright = 1.5
upright_pid = PIDController(kp_upright, ki_upright, kd_upright)
def upright_control(target_angle, current_angle, dt):
return upright_pid.compute(target_angle, current_angle, dt)
```
###
阅读全文
相关推荐


















