@@ -470,6 +470,30 @@ closed loop systems `clsys`, both as I/O systems. The input to the
470470controller is the vector of desired states :math: `x_\text {d}`, desired
471471inputs :math: `u_\text {d}`, and system states :math: `x`.
472472
473+ The above design pattern is referred to as the "trajectory generation"
474+ ('trajgen') pattern, since it assumes that the input to the controller is a
475+ feasible trajectory :math: `(x_\text {d}, u_\text {d})`. Alternatively, a
476+ controller using the "reference gain" pattern can be created, which
477+ implements a state feedback controller of the form
478+
479+ .. math ::
480+
481+ u = k_\text {f}\, r - K x,
482+
483+ where :math: `r` is the reference input and :math: `k_\text {f}` is the
484+ feedforward gain (normally chosen so that the steady state output
485+ :math: `y_\text {ss}` will be equal to :math: `r`.
486+
487+ A reference gain controller can be created with the command::
488+
489+ ctrl, clsys = ct.create_statefbk_iosystem(
490+ sys, K, feedfwd_gain=kf, feedfwd_pattern='refgain')
491+
492+ This reference gain design pattern is described in more detail in Section
493+ 7.2 of FBS2e (Stabilization by State Feedback) and the trajectory
494+ generation design pattern is described in Section 8.5 (State Space
495+ Controller Design).
496+
473497If the full system state is not available, the output of a state
474498estimator can be used to construct the controller using the command::
475499
@@ -507,10 +531,11 @@ must match the number of additional columns in the `K` matrix. If an
507531estimator is specified, :math: `\hat x` will be used in place of
508532:math: `x`.
509533
510- Finally, gain scheduling on the desired state, desired input, or
511- system state can be implemented by setting the gain to a 2-tuple
512- consisting of a list of gains and a list of points at which the gains
513- were computed, as well as a description of the scheduling variables::
534+ Finally, for the trajectory generation design pattern, gain scheduling on
535+ the desired state, desired input, or system state can be implemented by
536+ setting the gain to a 2-tuple consisting of a list of gains and a list of
537+ points at which the gains were computed, as well as a description of the
538+ scheduling variables::
514539
515540 ctrl, clsys = ct.create_statefbk_iosystem(
516541 sys, ([g1, ..., gN], [p1, ..., pN]), gainsched_indices=[s1, ..., sq])
0 commit comments