飞飞小哥 发表于 2016-11-19 17:20:00

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]
查看完整版本: VEX IQ版自平衡小车