在PD控制中,P值和D值分别对小车循迹效果有不同的影响。

  1. P值(比例控制):P值决定了响应误差的速度和力度。较大的P值会使小车更快地对误差做出响应,但可能会导致过冲和震荡。较小的P值则会导致响应较慢。

  2. D值(微分控制):D值决定了响应误差的变化率。较大的D值可以减小过冲和震荡,但可能会导致响应过度,使小车变得不稳定。较小的D值可能导致过冲和震荡问题。

因此,选择合适的P和D值是很重要的,需要根据具体情况进行调试和优化,以达到稳定而快速的循迹效果。

以下是一个使用PD控制算法的小车循迹程序示例:

function run(P,D)
    data2={}
    PD=0
    error=0
    for i=1,5,1 do
        res,data=sim.readVisionSensor(floorSensorHandles[i])
        if(res>=0)then
            data2[i]=data[11]
        end
    end
    if(data2[4]<0.73) then
        data2[3]=0
    end
    if(data2[2]<0.73) then
        data2[1]=0
    end
    if(data2[2]<data2[4]) then
        if(data2[3]<data2[1]) then
            error=math.abs(data2[5]-0.095)+math.abs(data2[3]-0.85)+math.abs(data2[2]-0.85)
        else
            error=math.abs(data2[5]-0.095)+math.abs(data2[1]-0.85)+math.abs(data2[2]-0.85)
        end
    else
        if(data2[3]<data2[1]) then
            error=math.abs(data2[5]-0.095)+math.abs(data2[3]-0.85)+math.abs(data2[4]-0.85)
        else
            error=math.abs(data2[5]-0.095)+math.abs(data2[1]-0.85)+math.abs(data2[4]-0.85)
        end
    end
    PD=P*error+D*(error-previousError)
    previousError=error
    previousdata=data2
    
    if error<0.2 then
        rightV=speed
        leftV=speed
        previousError=0
    elseif data2[3]<0.75 or data2[4]<0.75 then
        rightV=speed+PD*speed
        leftV=speed-PD*speed
    elseif data2[1]<0.75 or data2[2]<0.75 then
        rightV=speed-PD*speed
        leftV=speed+PD*speed
    end
    sim.setJointTargetVelocity(leftmotor,leftV)
    sim.setJointTargetVelocity(rightmotor,rightV)
end

通过调整P和D的值,可以优化小车的循迹性能,使其更加稳定和快速。

PD控制算法在小车循迹中的应用 - P值和D值的影响

原文地址: https://www.cveoy.top/t/topic/pAvV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录