Drake
|
A Cascade is a concrete SystemDiagram containing exactly two compatible subsystems with the output of the first serving as input to the second. More...
#include <drake/systems/framework/primitives/cascade3.h>
Public Member Functions | |
Cascade3 (const std::string &name, std::unique_ptr< System3< T >> first, std::unique_ptr< System3< T >> second) | |
Takes over ownership of the two System objects and connects the outputs of first to the inputs of second . More... | |
Public Member Functions inherited from Diagram3< T > | |
Diagram3 (const std::string &name) | |
Default constructor creates a diagram with no subsystems and no input or output ports. More... | |
Public Member Functions inherited from System3< T > | |
std::unique_ptr< Context3< T > > | CreateDefaultContext () const |
Get a default Context<T> compatible with this System<T> . More... | |
const VectorInterface< T > & | EvalVectorOutputPort (const Context3< T > &context, int port_num) const |
Convenience method for obtaining the up-to-date value for an output port which is known to be vector valued. More... | |
const T & | EvalPotentialEnergy (const Context3< T > &context) const |
Returns the potential energy currently stored in the configuration provided in the given Context3. More... | |
const T & | EvalKineticEnergy (const Context3< T > &context) const |
Return the kinetic energy currently present in the motion provided in the given Context3. More... | |
void | UpdateDiscreteVariables (Context3< T > &context, int sample_key) const |
TODO: update discrete variables. More... | |
std::pair< double, int > | GetNextSampleTime (const Context3< T > &context) const |
Returns the next sample time required by any subsystem of this System. More... | |
Eigen::VectorBlock< const VectorX< T > > | EvalTimeDerivatives (const Context3< T > &context, DerivativeBlock block) const |
Returns time derivatives of one or all of the continuous state variable groups. More... | |
const T & | EvalConservativePower (const Context3< T > &context) const |
For continuous, physical systems only, returns the rate at which energy is being converted from potential energy to kinetic energy by this system in the given Context3. More... | |
const T & | EvalNonConservativePower (const Context3< T > &context) const |
For continuous, physical systems only, returns the rate at which energy is being added to (positive) or dissipated from (negative) this sytem other than* by conversion between potential and kinetic energy (in the given Context3). More... | |
void | MapVelocityToConfigurationDerivatives (const Context3< T > &context, const Eigen::Ref< const VectorX< T >> &generalized_velocity, Eigen::Ref< VectorX< T >> *configuration_derivatives) const |
Transforms a given generalized velocity v into qdot, the time derivative of the generalized configuration q. More... | |
void | MapAccelerationToConfigurationSecondDerivatives (const Context3< T > &context, const Eigen::Ref< const VectorX< T >> &generalized_acceleration, Eigen::Ref< VectorX< T >> *configuration_second_derivatives) const |
Transforms a given generalized acceleration vdot into qdotdot, the second time derivative of the generalized configuration q. More... | |
Public Member Functions inherited from AbstractSystem3 | |
virtual | ~AbstractSystem3 () |
std::string | get_name () const |
Returns the name of this system. More... | |
DRAKESYSTEMFRAMEWORK_EXPORT std::unique_ptr< AbstractContext3 > | CreateDefaultContext () const |
Returns a default context, initialized with run time mutable memory for the correct number and type of InputPort3, OutputPort3, and state variable objects, as well as time, parameters, and basic computations. More... | |
DRAKESYSTEMFRAMEWORK_EXPORT const AbstractValue & | EvalOutputPort (const AbstractContext3 &context, int port_num) const |
Obtain an up-to-date value for one of this system's output ports. More... | |
const InputPortFinder & | get_input_port_finder (int port_num) const |
const OutputPortFinder & | get_output_port_finder (int port_num) const |
CacheEntry::Calculator | get_output_port_calculator (int port_num) const |
Given an output port number, return a function that knows how to calculate the value of that port when given a system and context. More... | |
void | CalcOutputPort (const AbstractContext3 &context, int port_num, AbstractValue *result) const |
Unconditionally calculate what would be the output port value into an already-allocated appropriate result object. More... | |
int | AddInputPort (std::unique_ptr< InputPort3 > port) |
Add an input port that is to be owned by this system. More... | |
int | AddOutputPort (std::unique_ptr< OutputPort3 > port) |
Add an output port that is to be owned by this System. More... | |
int | get_num_input_ports () const |
Returns the current number of input ports in this system. More... | |
const InputPort3 & | get_input_port (int port_num) const |
Returns a const reference to the InputPort3 with the given port number. More... | |
InputPort3 * | get_mutable_input_port (int port_num) |
Returns a mutable pointer to the InputPort3 with the given port number. More... | |
int | get_num_output_ports () const |
Returns the current number of output ports in this system. More... | |
const OutputPort3 & | get_output_port (int port_num) const |
Returns a const reference to the OutputPort3 with the given port number. More... | |
OutputPort3 * | get_mutable_output_port (int port_num) |
Returns a mutable pointer to the OutputPort3 with the given port number. More... | |
template<class ConcreteSystem > | |
ConcreteSystem * | AddSubsystem (std::unique_ptr< ConcreteSystem > subsystem) |
Takes ownership of the given system and returns an unowned, raw pointer to the concrete type for convenient access. More... | |
int | InheritInputPort (AbstractSystem3 *child_subsystem, int input_port_num) |
The given subsystem's InputPort3 becomes the next InputPort3 of this system diagram. More... | |
int | InheritOutputPort (AbstractSystem3 *child_subsystem, int output_port_num) |
The given subsystem's OutputPort3 becomes the next OutputPort3 of this system diagram. More... | |
void | Connect (AbstractSystem3 *source_subsystem, int output_port_num, AbstractSystem3 *sink_subsystem, int input_port_num) |
Connect the given output port of subsystem 1 into the given input port of subsystem 2. More... | |
int | get_num_subsystems () const |
Returns the current number of subsystems contained in this system diagram. More... | |
const AbstractSystem3 & | get_subsystem (int index) const |
Returns a const reference to one of the contained subsystems, using the index reflecting the order in which it was added. More... | |
AbstractSystem3 * | get_mutable_subsystem (int index) |
Returns a mutable pointer to one of the contained subsystems, using the index reflecting the order in which it was added. More... | |
const AbstractSystem3 * | get_parent_system () const |
Returns a const pointer to the parent system that owns this one, or nullptr if this is a root system. More... | |
AbstractSystem3 * | get_mutable_parent_system () |
Returns a mutable pointer to the parent system that owns this one, or nullptr if this is a root system. More... | |
int | get_subsystem_num () const |
If this system is a subsystem of a parent system, return the subsystem number by which that parent knows us. More... | |
std::string | GetSubsystemPathName () const |
Determine the full path name of this subsystem in a form like /rootname/parentname/myname . More... | |
const AbstractContext3 & | find_my_subcontext (const AbstractContext3 &some_subcontext) const |
Get const access to this subsystem's subcontext given const access to any other subsystem's subcontext in the same context diagram. More... | |
AbstractContext3 * | find_my_mutable_subcontext (AbstractContext3 *some_subcontext) const |
Get mutable access to this subsystem's subcontext given mutable access to any other subsystem's subcontext in the same context diagram. More... | |
const AbstractSystem3 & | get_root_system () const |
Find the root system of the tree of which this subsystem is a member. More... | |
AbstractSystem3 * | get_mutable_root_system () |
Get a mutable pointer to the root system of the tree of which this subsystem is a member. More... | |
Additional Inherited Members | |
Public Types inherited from System3< T > | |
enum | DerivativeBlock { kQdot = 0, kVdot = 1, kZdot = 2, kQdotDot = 3 } |
Protected Member Functions inherited from System3< T > | |
System3 (const std::string &name) | |
Creates a System3 with no ports. More... | |
const VectorInterface< T > & | EvalVectorInputPort (const Context3< T > &context, int port_num) const |
Convenience method for obtaining the up-to-date value for an input port which is known to be vector valued. More... | |
virtual const T & | DoEvalPotentialEnergy (const Context3< T > &context) const |
If your system is capable of storing energy, implement this method to return the potential energy currently stored in the configuration provided in the given Context3. More... | |
virtual const T & | DoEvalKineticEnergy (const Context3< T > &context) const |
If your system models energy of motion, implement this method to return the kinetic energy currently present in the motion provided in the given Context3. More... | |
void | DoMapVelocityToConfigurationDerivatives (const Context3< T > &context, const Eigen::Ref< const VectorX< T >> &generalized_velocity, Eigen::Ref< VectorX< T >> *configuration_derivatives) const |
If your system has configuration and velocity variables, and the mapping from velocity v to configuration derivatives q is not identity, then you must implement this method. More... | |
void | DoMapAccelerationToConfigurationSecondDerivatives (const Context3< T > &context, const Eigen::Ref< const VectorX< T >> &generalized_acceleration, Eigen::Ref< VectorX< T >> *configuration_second_derivatives) const |
See above for when you have to implement this method. More... | |
virtual const T & | DoEvalConservativePower (const Context3< T > &context) const |
Return the rate at which mechanical energy is being converted from potential energy to kinetic energy by this system in the given Context3. More... | |
virtual const T & | DoEvalNonConservativePower (const Context3< T > &context) const |
Return the rate at which mechanical energy is being generated (positive) or dissipated (negative) other than by conversion between potential and kinetic energy (in the given Context3). More... | |
Protected Member Functions inherited from AbstractSystem3 | |
AbstractSystem3 (const std::string &name) | |
DRAKESYSTEMFRAMEWORK_EXPORT const AbstractValue & | EvalInputPort (const AbstractContext3 &context, int port_num) const |
Obtain an up-to-date value for one of this system's input ports. More... | |
virtual void | DoAcquireContextResources (AbstractContext3 *context) const |
Acquire any private Context resources your concrete System needs, and assign them default values. More... | |
A Cascade is a concrete SystemDiagram containing exactly two compatible subsystems with the output of the first serving as input to the second.
The input of the first subsystem is also the input of the Cascade, and the output of the second subsystem is also the output of the Cascade.
T | The type of numerical values in this system diagram. Must be a valid Eigen scalar. |
|
inline |
Takes over ownership of the two System objects and connects the outputs of first
to the inputs of second
.
The number and types of output and input ports must match. The input of first
becomes the overall input of the Cascade, and the output of second
becomes the overall output of Cascade. Neither system may be empty.
std::logic_error | One or both System arguments was empty. |
std::logic_error | Number of output and input ports didn't match. |