平衡车之速度环分析及调试

平衡车为什么只有角度环不够,还需要速度环:

因为当角度环有偏差的时候,根据角度环的pid是可以给小车输出pwm波维持小车平衡的,但是小车要以什么样的速度维持平衡角度环是做不到的,加上速度环的目的就是于此。


速度环PI: PI是一种线性控制器
根据众多大神所说的平衡小车速度环的调试ki=kp/200来调试,

/************************************************************************/
速度环:
int velocity(int encoder_left,int encoder_right)
{
static float Velocity,Encoder_Least,Encoder,Movement;
static float Encoder_Integral,Target_Velocity;
Encoder_Least =(Encoder_Left+Encoder_Right)-0; //===获取最新速度偏差==测量速度(左右编码器之和)-目标速度(此处为零)
Encoder *= 0.8; //===一阶低通滤波器
Encoder += Encoder_Least*0.2; //===一阶低通滤波器 * Encoder_Integral +=Encoder; //===积分出位移 积分时间:10ms
Encoder_Integral=Encoder_Integral- Movement ;
if(Encoder_Integral>10000) Encoder_Integral=10000; //===积分限幅
if(Encoder_Integral<-10000) Encoder_Integral=-10000; //===积分限幅 * Velocity=Encoder*Vkp+Encoder_Integral*Vki; //===速度控制
if(Turn_Off(Angle_Balance,Voltage)==1||Flag_Stop==1) Encoder_Integral=0; //===电机关闭后清除积分
return Velocity;
}
首先明确速度环的pid也是位置式pid
(1)首先kp ki乘的参数选择:
kp*速度:既然是速度控制,那当然是速度作为比例被乘参数,来使速度维持在一个稳定状态
ki*位移 :KI是积分环节,速度的积分就是位移了,所以选取了位移控制参数

(2)然后先不要纠结算速度的时候为什么不除以2,为什么不初以中断时间
原因:1我们想要的只是一个变化量,如果除以2的话会舍去误差
2.至于为什么不除以中断时间 同样在最后速度还pwm的式子中kp乘的参数是速度,但他只是一个变化量 他没有和别的变量乘除,他只是自己在加减,需要的只是一个变化量。

(3)为什么要进行低通滤波:
低通滤波就是上次速度差值占80% + 这次速度差占20% =此次速度差值;
这样是为了减缓速度差值,对直立的干扰

(3)最后说说调参数
用PI控制器是因为PI组合是线性控制,平衡车最主要的还是直立环,其他都是对他的干扰(除了速度环速度设为0的时候是帮助平衡车直立):
首先明确速度环控制的原理是正反馈,就是小车在直立环的时候,小车往一个方向加速,速度环的作用就是用一个同方向更快的速度使小车平衡,这就是所谓的正反馈。

由前辈总结的工程经验ki=kp/200 所以在确定了kp ki的极性的时候,直接给kp算出ki打开直立环测试
首先确定速度环kp和ki的极性:

如何速度控制是正反馈还是负反馈呢
根据之前的估计, 先设定 kp=-50,ki=kp/200,当我们拿起小车,旋转其中一个小车轮胎的时候,根 据我们设定的速度偏差
Encoder_Least =(Encoder_Left+Encoder_Right)-0;
另外一个车轮会反向转动,让偏差趋向于零。这就是常规的速度控制里面的 负反馈,不是我们需要的效果。接下来设定 kp=50,ki=kp/200,此时,当我们旋 转其中一个小车轮胎的时候,两个轮胎会往相同的方向加速,直至电机的最大速 度,这是典型的正反馈效果,也是我们期望看到的。至此,我们可以确定 kp,ki 的符号应该是正的。

kp ki太小现象:平衡车还是直立一两秒向一个方向加速
kp ki太大现象:平衡车高频抖动这时候要关电机避免烧坏电机


让小车以一定的速度前进:
怎么控制小车前进:给速度闭环设置一个偏差,该偏差就是控制小车的速度,至于前后的话就是速度偏差的正负了。
怎么控制加速跑:这是我从一个大神里面看到的,觉得写得很好,就是给角度环里面的角速度一个偏差,这里可以用在竞速比赛中起跑时候以及弯道加减速的地方




速度环用什么参数控制速度合适:
这里有两个选择:(1)Encoder_Least =(Encoder_Left+Encoder_Right)- 0 ;
(2)Encoder_Integral=Encoder_Integral- Movement ;
没错,这两个参数就是红色标出来的,第一个0是目标速度,第二个是积分出来的位移,方法都是给偏差从而达到控制目的。我们选择后者是因为直接给速度偏差,对直立造成的干扰太大了,实际实验的时候也很不稳,而积分出来的位移给他位移偏差变化缓慢,对直立影响不大。所以我们选择后者的方案。 而控制速度的本质就是改变倾角,我们可以发现当速度给的越大,车子启动的时候倾角就越大,这是因为,你给的速度偏差越大,相比于小车平衡的时候,速度环给的pwm差值就越大,最后角度环和速度环相加后与原来平衡时候总的pwm就有差值,所以小车就不平衡了在刚开始,会倾斜一个角度。又因为有速度环控制着以稳定的速度向平衡位置输送pwm,这个速度状态就在角度环和速度环的双重闭环的反馈下就一直保持直立并以这个速度下去了。
movement决定速度的大小。
积分的限幅决定速度的最大上限
movemennt决定速度大小可以很好理解,,至于速度的积分限幅决定速度最大上限是因为:首先这个积分是每次加起来的或者每次减下去的,这要看前进还是后退,我以前就是这里想不通,现在想一想,积分控制的是静差,当movement越大,积分出来的静差就越大,大于实际平衡时候的pwm,但是积分最大值给了1000,所以就是静差最大值就是1000,如果要改变最大速度上限,就要更改这个上限。


蓝色就是静差 黑色是平衡位置 红色是目标位置

<think>好,用户想了解平衡的角速度环应该调成什么样。首先,我需要回顾一下平衡控制系统的基本结构。通常,平衡有三个主要控制环:直立环、速度环和转向环。而角速度环可能是指直立环的一部分,或者是与陀螺仪相关的控制环。 用户提到的是角速度环,可能指的是使用陀螺仪测量的角速度反馈来控制小平衡。这时候需要明确角速度环的作用。在平衡中,直立环通常使用角度反馈(来自加速度计或传感器融合),而角速度反馈可能用于提高系统的响应速度和稳定性,尤其是在动态过程中抑制抖动。 接下来,我需要考虑角速度环的调参目标。一般来说,控制系统希望快速响应扰动,同时避免超调和振荡。对于PID控制器来说,参数整定是关键。角速度环可能需要调节比例(P)和微分(D)参数,积分(I)可能用得少,因为角速度的稳态误差可能较小,或者由外环处理。 用户可能需要知道具体的参数调整方法,比如先调P,再调D,或者使用试凑法、临界比例度法等。需要解释如何判断是否调好:比如小能快速恢复平衡,没有持续振荡,响应迅速但不过于敏感。 还要注意角速度环和直立环的关系。如果角速度环是内环,直立环是外环,那么两者的参数需要协调。内环需要更快响应,外环处理更宏观的角度控制。可能需要分开调整,先调内环再调外环。 实际调试中,可能需要通过实验观察小的反应。例如,增大P会导致更快的响应,但过大可能引起振荡;增大D可以抑制振荡,但过大会导致响应迟缓。需要找到平衡点。 另外,可能涉及滤波问题。陀螺仪的角速度信号可能有噪声,需要合适的滤波处理,避免高频噪声被放大,影响控制效果。 总结来说,调好的角速度环应使小在受到扰动时能迅速调整电机输出,稳定平衡,无明显抖动或延迟。参数需要根据实际硬件和传感器特性调整,没有通用的数值,但调试方法和评估标准是通用的。</think>平衡的角速度环调试需要满足**快速响应扰动、稳定无振荡、动态收敛**的特性。以下是具体调试目标与步骤分析: --- ### 一、角速度环的作用 角速度环(通常为内环)通过陀螺仪测量体倾斜角速度,与直立环(角度环)共同作用: - **快速抑制抖动**:抵消外力导致的瞬间倾斜加速度 - **提升动态响应**:弥补直立环的延迟,增强系统阻尼 --- ### 二、调试目标 1. **稳态表现** - 静止时电机无高频抖动 - 外力轻推后能平滑恢复平衡(无超调或振荡) 2. **动态表现** - 阶跃响应上升时间 ≤ 0.1秒 - 调节时间 ≤ 0.3秒 - 超调量 ≤ 5% --- ### 三、调试步骤(以PID为例) #### 步骤1:确定控制结构 ``` 直立环输出 → 角速度环设定值 → 电机输出 ↘ 角速度反馈(陀螺仪) ``` #### 步骤2:初始化参数 - 比例系数(P):从较小值开始(如0.5) - 微分系数(D):初始设为0 - 积分系数(I):通常不需要(角速度无静差) #### 步骤3:调试P参数 1. 逐步增大P值,直到小出现高频抖动 2. 回调P至抖动消失的临界值(如临界值1.2 → 实际取0.8-1.0) #### 步骤4:加入D参数 1. 逐步增大D值,观察抖动抑制效果 2. 典型比例:D ≈ 0.2×P(如P=1.0时D=0.2) 3. 过度增大会导致响应延迟 #### 步骤5:验证指标 - **斜坡测试**:缓慢倾斜小,观察电机输出是否线性变化 - **敲击测试**:轻敲体,恢复过程应呈阻尼振荡(≤2次震荡) --- ### 四、典型参数范围(参考) | 参数 | 作用 | 典型值范围 | |------|---------------|------------| | P | 响应速度 | 0.8~2.0 | | D | 抑制振荡 | 0.1~0.5 | | 滤波 | 降噪(关键!)| 低通20-50Hz| --- ### 五、调试技巧 1. **先开环测试**:断开控制环,手动倾斜观察电机响应是否正常 2. **分阶段验证**:先调直立环再调角速度环 3. **数据可视化**:通过串口波形观察角速度误差曲线 4. **温度补偿**:陀螺仪零飘可能随温度变化,需实时校准 调试完成的角速度环应使小具备类似"弹簧+阻尼器"的特性:快速抵抗扰动,又能平滑回归平衡位置。最终参数需结合具体机械结构(如重心高度、轮径)通过实验确定。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值