General-purpose Systems such as Gain, Multiplexer, Integrator, and LinearSystem.
Classes | |
| class | Adder< T > |
| An adder for arbitrarily many inputs of equal size. More... | |
| class | TimeVaryingAffineSystem< T > |
| Base class for a discrete- or continuous-time, time-varying affine system, with potentially time-varying coefficients. More... | |
| class | AffineSystem< T > |
| A discrete OR continuous affine system (with constant coefficients). More... | |
| class | BusCreator< T > |
| This system packs values from heterogeneous input ports into a single output port of type BusValue. More... | |
| class | BusSelector< T > |
| This system unpacks values from a single input port of type BusValue onto heterogeneous output ports, where each output port's value comes from the same- named signal on the bus. More... | |
| class | ConstantValueSource< T > |
| A source block that always outputs a constant value. More... | |
| class | ConstantVectorSource< T > |
| A source block with a constant output port at all times. More... | |
| class | Demultiplexer< T > |
| This system splits a vector valued signal on its input into multiple outputs. More... | |
| class | DiscreteDerivative< T > |
| System that outputs the discrete-time derivative of its input: y(t) = (u[n] - u[n-1])/h, where n = floor(t/h), where h is the time period. More... | |
| class | StateInterpolatorWithDiscreteDerivative< T > |
| Supports the common pattern of combining a (feed-through) position with a velocity estimated with the DiscreteDerivative into a single output vector with positions and velocities stacked. More... | |
| class | DiscreteTimeDelay< T > |
| A discrete time delay block with input u, which is vector-valued (discrete or continuous) or abstract, and output delayed_u which is previously received input, delayed by the given amount. More... | |
| class | DiscreteTimeIntegrator< T > |
| A discrete-time integrator for a vector input, using explicit Euler integration. More... | |
| class | FirstOrderLowPassFilter< T > |
| An element-wise first order low pass filter system that filters the i-th input uᵢ into the i-th output zᵢ. More... | |
| class | Gain< T > |
An element-wise gain block with input u and output y = k * u with k a constant vector. More... | |
| class | Integrator< T > |
| A continuous-time integrator for a vector input. More... | |
| class | LinearSystem< T > |
| A discrete OR continuous linear system. More... | |
| class | TimeVaryingLinearSystem< T > |
| Base class for a discrete or continuous linear time-varying (LTV) system. More... | |
| class | LinearTransformDensity< T > |
| Performs linear transformation on the random signal w_in as w_out = A*w_in + b. More... | |
| class | MatrixGain< T > |
A system that specializes LinearSystem by setting coefficient matrices A, B, and C to all be zero. More... | |
| class | MultilayerPerceptron< T > |
| The MultilayerPerceptron (MLP) is one of the most common forms of neural networks used in reinforcement learning (RL) today. More... | |
| class | Multiplexer< T > |
| This system combines multiple vector-valued inputs into a vector-valued output. More... | |
| class | PassThrough< T > |
A pass through system with input u and output y = u. More... | |
| class | PortSwitch< T > |
| A simple system that passes through the value from just one of its input ports to the output. More... | |
| class | RandomSource< T > |
| A source block which generates random numbers at a fixed sampling interval, with a zero-order hold between samples. More... | |
| class | Saturation< T > |
An element-wise hard saturation block with inputs signal u, saturation values \( u_{min} \) and/or \( u_{max} \), and output y respectively as in: More... | |
| class | Selector< T > |
| This system combines multiple vector-valued inputs into multiple vector- valued outputs. More... | |
| class | Sine< T > |
A sine system which outputs y = a * sin(f * t + p) and first and second derivatives w.r.t. More... | |
| class | SparseMatrixGain< T > |
A variant of MatrixGain which supports multiplication by SparseMatrix, D. More... | |
| class | TrajectoryAffineSystem< T > |
| A continuous- or discrete-time Affine Time-Varying system with system matrices described by trajectories. More... | |
| class | TrajectoryLinearSystem< T > |
| A continuous- or discrete-time Linear Time-Varying system with system matrices described by trajectories. More... | |
| class | TrajectorySource< T > |
| Given a Trajectory, this System provides an output port with the value of the trajectory evaluated at the current time. More... | |
| class | VectorLogSink< T > |
| A discrete sink block which logs its vector-valued input to per-context memory. More... | |
| class | WrapToSystem< T > |
An element-wise wrapping block that transforms the specified indices of the input signal u into the interval [low, high). More... | |
| class | ZeroOrderHold< T > |
| A zero order hold block with input u, which may be vector-valued (discrete or continuous) or abstract, and discrete output y, where the y is sampled from u with a fixed period (and optional offset). More... | |
Functions | |
| std::unique_ptr< LinearSystem< double > > | Linearize (const System< double > &system, const Context< double > &context, std::variant< InputPortSelection, InputPortIndex > input_port_index=InputPortSelection::kUseFirstInputIfItExists, std::variant< OutputPortSelection, OutputPortIndex > output_port_index=OutputPortSelection::kUseFirstOutputIfItExists, double equilibrium_check_tolerance=1e-6) |
| Takes the first-order Taylor expansion of a System around a nominal operating point (defined by the Context). More... | |
| std::unique_ptr< AffineSystem< double > > | FirstOrderTaylorApproximation (const System< double > &system, const Context< double > &context, std::variant< InputPortSelection, InputPortIndex > input_port_index=InputPortSelection::kUseFirstInputIfItExists, std::variant< OutputPortSelection, OutputPortIndex > output_port_index=OutputPortSelection::kUseFirstOutputIfItExists) |
A first-order Taylor series approximation to a system in the neighborhood of an arbitrary point. More... | |
| std::unique_ptr<AffineSystem<double> > drake::systems::FirstOrderTaylorApproximation | ( | const System< double > & | system, |
| const Context< double > & | context, | ||
| std::variant< InputPortSelection, InputPortIndex > | input_port_index = InputPortSelection::kUseFirstInputIfItExists, |
||
| std::variant< OutputPortSelection, OutputPortIndex > | output_port_index = OutputPortSelection::kUseFirstOutputIfItExists |
||
| ) |
A first-order Taylor series approximation to a system in the neighborhood of an arbitrary point.
When Taylor-expanding a system at a non-equilibrium point, it may be represented either of the form:
\[ \dot{x} - \dot{x}_0 = A (x - x_0) + B (u - u_0), \]
for continuous time, or
\[ x[n+1] - x_0[n+1] = A (x[n] - x_0[n]) + B (u[n] - u_0[n]), \]
for discrete time. As above, we denote \( x_0, u_0 \) to be the nominal state and input at the provided context. The system description is affine when the terms \( \dot{x}_0 - A x_0 - B u_0 \) and \( x_0[n+1] - A x_0[n] - B u_0[n] \) are nonzero.
More precisely, let x be a state and u be an input. This function returns an AffineSystem of the form:
\[ \dot{x} = A x + B u + f_0, \]
(CT)
\[ x[n+1] = A x[n] + B u[n] + f_0, \]
(DT) where \( f_0 = \dot{x}_0 - A x_0 - B u_0 \) (CT) and \( f_0 = x_0[n+1] - A x[n] - B u[n] \) (DT).
This method currently supports approximating around at most a single vector input port and at most a single vector output port. For systems with more ports, use input_port_index and output_port_index to select the input for the newly constructed system. Any additional input ports will be treated as constants (fixed at the value specified in context).
| system | The system or subsystem to linearize. |
| context | Defines the nominal operating point about which the system should be linearized. |
| input_port_index | A valid input port index for system or InputPortSelection. Default: kUseFirstInputIfItExists. |
| output_port_index | A valid output port index for system or OutputPortSelection. Default: kUseFirstOutputIfItExists. |
| if | any abstract inputs are connected, if any vector-valued inputs are unconnected, if the system is not (only) continuous or not (only) discrete time with a single periodic update. |
system, since the terms involving \( x_0, u_0 \) reside in \( f_0 \).system. | std::unique_ptr<LinearSystem<double> > drake::systems::Linearize | ( | const System< double > & | system, |
| const Context< double > & | context, | ||
| std::variant< InputPortSelection, InputPortIndex > | input_port_index = InputPortSelection::kUseFirstInputIfItExists, |
||
| std::variant< OutputPortSelection, OutputPortIndex > | output_port_index = OutputPortSelection::kUseFirstOutputIfItExists, |
||
| double | equilibrium_check_tolerance = 1e-6 |
||
| ) |
Takes the first-order Taylor expansion of a System around a nominal operating point (defined by the Context).
This method currently supports linearizing around at most a single vector input port and at most a single vector output port. For systems with more ports, use input_port_index and output_port_index to select the input for the newly constructed system. Any additional vector input ports will be treated as constants (fixed at the value specified in context). Abstract-valued input ports must be unconnected (i.e., the system must treat the port as optional and it must be unused).
| system | The system or subsystem to linearize. |
| context | Defines the nominal operating point about which the system should be linearized. See note below. |
| input_port_index | A valid input port index for system or InputPortSelection. All other inputs are assumed to be fixed to the value described by the context. Default: kUseFirstInputIfItExists. |
| output_port_index | A valid output port index for system or an OutputPortSelection. Default: kUseFirstOutputIfItExists. |
| equilibrium_check_tolerance | Specifies the tolerance on ensuring that the derivative vector isZero at the nominal operating point. Default: 1e-6. |
| std::exception | if the operating point is not an equilibrium point of the system (within the specified tolerance) |
| std::exception | if the system is not (only) continuous or (only) discrete time with a single periodic update. |
port.FixValue(context, default_input). Any abstract inputs in the system must be unconnected (the port must be both optional and unused).system.