Skip to content

Repository files navigation

PID Go

PkgGoDevGoReportCardCodecov

logo

PID controllers for Go.

Examples

pid.Controller

A basic PID controller.

import (
"fmt""time""go.einride.tech/pid"
)
funcExampleController() {
// Create a PID controller.c:= pid.Controller{
Config: pid.ControllerConfig{
ProportionalGain: 2.0,
IntegralGain: 1.0,
DerivativeGain: 1.0,
},
}
// Update the PID controller.c.Update(pid.ControllerInput{
ReferenceSignal: 10,
ActualSignal: 0,
SamplingInterval: 100*time.Millisecond,
})
fmt.Printf("%+v\n", c.State)
// Reset the PID controller.c.Reset()
fmt.Printf("%+v\n", c.State)
// Output:// {ControlError:10 ControlErrorIntegral:1 ControlErrorDerivative:100 ControlSignal:121}// {ControlError:0 ControlErrorIntegral:0 ControlErrorDerivative:0 ControlSignal:0}
}

_Reference ≫_

pid.AntiWindupController

A PID-controller with low-pass filtering of the derivative term, feed forward term, a saturated control output and anti-windup.

Reference ≫

pid.TrackingController

a PID-controller with low-pass filtering of the derivative term, feed forward term, anti-windup and bumpless transfer using tracking mode control.

Reference ≫

About

PID controllers for Go.

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages