@@ -470,6 +470,29 @@ 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(sys, K, kf, feedfwd_pattern='refgain')
490+
491+ This reference gain design pattern is described in more detail in Section
492+ 7.2 of FBS2e (Stabilization by State Feedback) and the trajectory
493+ generation design pattern is described in Section 8.5 (State Space
494+ Controller Design).
495+
473496If the full system state is not available, the output of a state
474497estimator can be used to construct the controller using the command::
475498
@@ -507,10 +530,11 @@ must match the number of additional columns in the `K` matrix. If an
507530estimator is specified, :math: `\hat x` will be used in place of
508531:math: `x`.
509532
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::
533+ Finally, for the trajectory generation design pattern, gain scheduling on
534+ the desired state, desired input, or system state can be implemented by
535+ setting the gain to a 2-tuple consisting of a list of gains and a list of
536+ points at which the gains were computed, as well as a description of the
537+ scheduling variables::
514538
515539 ctrl, clsys = ct.create_statefbk_iosystem(
516540 sys, ([g1, ..., gN], [p1, ..., pN]), gainsched_indices=[s1, ..., sq])
0 commit comments