PID コントローラーを使用して、水平方向に移動中にクワッドコプターを特定の場所で停止しようとしていますが、現在、最大速度に応じてオーバーシュート/アンダーシュートします。P、I、および D ゲインを手動で調整しようとしましたが、成功は限られていました。基本的に、飛行経路の最後で速度を maxSpeed から 0 にする必要があります。
0.1 秒ごとに実行されるループを実行します。クアッドコプターへのピッチ入力は m/s 単位で、繰り返しごとにターゲットまでの距離を再計算します。
いくつかの擬似コード
kP = 0.25
kI = 0.50
kD = 90
timeStep = 0.1
maxSpeed = 10
currentError = initialDistanceToLocation - currentDistanceToLocation
derivativeError = (currentError - previousError) / timeStep
previousError = currentError
output = kP * currentError + kI * integralError + kD * derivativeError
integralError = integralError + currentError * timeStep
if >= maxSpeed {
output = maxSpeed
} else if output <= 0 {
output = 0
}
return output
この PID コントローラーを、さまざまな最大速度で機能するこのシステムに確実に調整する方法はありますか、および/または考慮する必要がある他の要因はありますか?