VEX IQ版自平衡小车
最近入手玩VEX IQ的机器人套件,打算做一款自平衡小车,目前搭建了一个平衡车底盘,如图编程主体今天写了个简单版的,只用到了角度环,PID的参数粗粗调试了下,效果还成,但是小车时间稍微长一些以后会朝一个方向偏过去,最后倒地。在网上看到说是需要加入速度环控制,小机器人就能够定点了,于是引入了编码器的PID进入,但是输出叠加之后小车稳定度大大降低,估计是速度环PID的参数没有调试正确。主要的代码如下
now = time1;
float TimeCh = (now - lastTime) / 1000.0;
float Kp = 4.5, Ki = 19.5, Kd = 0.02;
float Kps = 0.0, Kis = 0.0, Kds = 0.0;
float SampleTime = 0.01;
float Setpoint = 0.0;
if(TimeCh >= SampleTime)
{
float Input = f_angle;
float Inputs = encoder;
float error = Setpoint - Input;
float errors = 0-Inputs;
ITerm+= (Ki * error * TimeCh);
ITerms+=(Kis*errors*TimeCh);
float DTerm = Kd * (Input - lastInput) / TimeCh;
float DTerms = Kds*(Inputs-lastInputs) / TimeCh;
Outputs = Kps*errors+ITerms-DTerms;
Output = Kp * error + ITerm - DTerm-Outputs;
}
Kps这些速度环控制的目前重新改成了0。打算重新调试。还有一个问题就是这个电机的最大速度只有127,因此output的值不能超过127,我看很多资料都是将积分项设置一个区域,不知道整体设置限制和积分项设置有何区别。
页:
[1]