Rosetta  2020.37
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
core::kinematics::jacobian::ModuleType1 Class Reference

The ModuleType1 class covers the Jacobian analysis at the lower-level for type-1 systems, which have internal DoFs that can be organized as three sets of two torsion angles with intersecting axes. More...

#include <ModuleType1.hh>

Inheritance diagram for core::kinematics::jacobian::ModuleType1:
Inheritance graph
[legend]

Classes

struct  jacobian_struct
 Struct to pass around all variations of Jacobian matrices fw_dofs is the Jacobian matrix that maps differential torsion angles [rad/s] or [delta rad] on Cartesian reference frame fw_cons is the 6x6 Jacobian matrix that maps virtual (helper, constrained) torsion angles [rad/s] or [delta rad] on Cartesian reference frame fw_all is the 6x6 Jacobian matrix that maps all six torsion angles (real and virtual) [rad/s] or [delta rad] on Cartesian reference frame inv_dofs is the 6x6 Jacobian matrix that maps twist from Cartesian ref. frame onto torsion angles inv_cons is the 6x6 Jacobian matrix that maps twist from Cartesian ref. frame onto virtual torsion angles that represent the modules constraints inv_all is the 6x6 Jacobian matrix that maps twist from Cartesian ref. frame onto all torsion angles (real and virtual) More...
 
struct  screw_construct_struct
 struct with the different linear algebra objects that are needed to express the twists and wrenches to calculate the instantaneous Jacobian matrices of the module More...
 

Public Types

typedef std::pair
< numeric::xyzVector
< core::Real >
, numeric::xyzVector
< core::Real > > 
Screw
 typedef of a screw as a pair of xyzVectors More...
 

Public Member Functions

 ModuleType1 ()=delete
 No default constructor because modules are not used on their own, but always as part of a SeriesJacobian. More...
 
 ModuleType1 (core::Size const &dofs_module, utility::vector1< core::Size > const &res_numbers, core::id::AtomID const &ref_atom)
 Constructor for module with 1, 2 or 3 sets of two AtomIDs whose X-axes represent intersecting torsion axes. More...
 
 ModuleType1 (ModuleType1 const &src)
 Copy constructor. More...
 
 ~ModuleType1 () override
 Destructor. More...
 
ModuleType1OP clone () const
 Clone operation: make a copy of this object, and return an owning pointer to the copy. More...
 
utility::vector1< core::Sizeget_residues ()
 Returns the residues that make up the Jacobian module. More...
 
core::Size get_number_dofs_ ()
 Returns the number of DoFs of which this module represents the differential equations. More...
 
core::id::AtomID const & get_ref_atom_ID ()
 Returns the AtomID of the atom whose reference frame (expressed by its stub) is used to express all vectors and matrices of the module. More...
 
ModuleType1::jacobian_struct update_jacobian_matrices (core::conformation::Conformation const &conformation)
 calculate all Jacobian matrices for the instantaneous conformation More...
 
void apply_delta_torsions_angles (core::conformation::Conformation &conformation, numeric::MathVector< core::Real > const &dq)
 apply vector of delta angles to the torsion angles that are associated to this instance More...
 

Private Member Functions

ModuleType1::screw_construct_struct update_screw_vectors (core::conformation::Conformation const &conformation)
 Updates the screw axes and moment arm vectors of the object. More...
 
utility::vector1< Screwget_orthogonal_wrenches_from_twists (Screw const &twist_1, Screw const &twist_2, numeric::HomogeneousTransform< core::Real > const &H_CA0_CAa, numeric::HomogeneousTransform< core::Real > const &H_CAa_Ca, numeric::HomogeneousTransform< core::Real > const &H_Ca_CAb, numeric::HomogeneousTransform< core::Real > const &H_CAb_Cb)
 Returns the two wrenches that are dual to the input twists, which is used in Jacobian analysis. More...
 

Private Attributes

core::Size number_dofs_
 number of dofs of the module More...
 
utility::vector1< core::Sizeres_numbers_
 residue numbers of the module More...
 
core::id::AtomID ref_atom_ID_
 the atom which acts as the reference frame for all vectors More...
 

Static Private Attributes

static constexpr core::Real denom_singular_bound_ = 1e-2
 bound to check for singularity in Jacobian denominator More...
 
static constexpr core::Real denom_orthogonal_bound_ = 1e-6
 bound to check for screw orthogonality More...
 
static constexpr core::Real pos_singular_bound_ = 1e-10
 bound to check for singularity in atom position More...
 

Detailed Description

The ModuleType1 class covers the Jacobian analysis at the lower-level for type-1 systems, which have internal DoFs that can be organized as three sets of two torsion angles with intersecting axes.

Author
teunhoevenaars (teunh.nosp@m.oeve.nosp@m.naars.nosp@m.@gma.nosp@m.il.co.nosp@m.m)

Member Typedef Documentation

typedef std::pair< numeric::xyzVector<core::Real>, numeric::xyzVector<core::Real> > core::kinematics::jacobian::ModuleType1::Screw

typedef of a screw as a pair of xyzVectors

Constructor & Destructor Documentation

core::kinematics::jacobian::ModuleType1::ModuleType1 ( )
delete

No default constructor because modules are not used on their own, but always as part of a SeriesJacobian.

core::kinematics::jacobian::ModuleType1::ModuleType1 ( core::Size const &  dofs_module,
utility::vector1< core::Size > const &  res_numbers,
core::id::AtomID const &  ref_atom 
)

Constructor for module with 1, 2 or 3 sets of two AtomIDs whose X-axes represent intersecting torsion axes.

Stores the basic information needed to perform the Jacobian analysis for this module for any conformation

Parameters
[in]key_atomsMust have exactly six AtomIDs, whose associated stubs' X-axes identify the torsion axes

References number_dofs_, ref_atom_ID_, and res_numbers_.

core::kinematics::jacobian::ModuleType1::ModuleType1 ( ModuleType1 const &  src)
default

Copy constructor.

Copy constructor. Keep default unless deep copying is needed (and in that case, consider using DeepCopyOPs.)

core::kinematics::jacobian::ModuleType1::~ModuleType1 ( )
override

Destructor.

Member Function Documentation

void core::kinematics::jacobian::ModuleType1::apply_delta_torsions_angles ( core::conformation::Conformation conformation,
numeric::MathVector< core::Real > const &  dq 
)

apply vector of delta angles to the torsion angles that are associated to this instance

Apply vector of delta angles to the torsion angles that are associated to this instance.

Parameters
[in]vectordq must have dimension 6 and all delta angles must be in radians

References core::id::BB, number_dofs_, res_numbers_, core::conformation::Conformation::set_torsion(), and core::conformation::Conformation::torsion().

ModuleType1OP core::kinematics::jacobian::ModuleType1::clone ( ) const

Clone operation: make a copy of this object, and return an owning pointer to the copy.

core::Size core::kinematics::jacobian::ModuleType1::get_number_dofs_ ( )
inline

Returns the number of DoFs of which this module represents the differential equations.

References number_dofs_.

utility::vector1< ModuleType1::Screw > core::kinematics::jacobian::ModuleType1::get_orthogonal_wrenches_from_twists ( Screw const &  twist_1,
Screw const &  twist_2,
numeric::HomogeneousTransform< core::Real > const &  H_CA0_CAa,
numeric::HomogeneousTransform< core::Real > const &  H_CAa_Ca,
numeric::HomogeneousTransform< core::Real > const &  H_Ca_CAb,
numeric::HomogeneousTransform< core::Real > const &  H_CAb_Cb 
)
private

Returns the two wrenches that are dual to the input twists, which is used in Jacobian analysis.

References pos_singular_bound_, res_numbers_, and core::kinematics::TR().

Referenced by update_jacobian_matrices().

core::id::AtomID const& core::kinematics::jacobian::ModuleType1::get_ref_atom_ID ( )
inline

Returns the AtomID of the atom whose reference frame (expressed by its stub) is used to express all vectors and matrices of the module.

References ref_atom_ID_.

utility::vector1< core::Size > core::kinematics::jacobian::ModuleType1::get_residues ( )
inline

Returns the residues that make up the Jacobian module.

References res_numbers_.

ModuleType1::jacobian_struct core::kinematics::jacobian::ModuleType1::update_jacobian_matrices ( core::conformation::Conformation const &  conformation)

calculate all Jacobian matrices for the instantaneous conformation

Calculates all Jacobian matrices for the instantaneous conformation.

Based on the definition of the torsion axes (provided by means of AtomIDs), this function calculates the set of six twists and wrenches for this module. A twist is a dual Cartesian vector: one xyzVector expresses the differential Cartesian rotational vector, and another expresses the differential Cartesian linear vector. See Huang et al. (2011) Generalized Jacobian analysis of lower mobility manipulators for details on the definition of twists and wrenches and their relations.

References denom_orthogonal_bound_, denom_singular_bound_, core::kinematics::jacobian::ModuleType1::jacobian_struct::fw_all, core::kinematics::jacobian::ModuleType1::jacobian_struct::fw_cons, core::kinematics::jacobian::ModuleType1::jacobian_struct::fw_dofs, get_orthogonal_wrenches_from_twists(), core::kinematics::jacobian::ModuleType1::screw_construct_struct::Hmatrices, core::kinematics::jacobian::ModuleType1::jacobian_struct::inv_all, core::kinematics::jacobian::ModuleType1::jacobian_struct::inv_cons, core::kinematics::jacobian::ModuleType1::jacobian_struct::inv_dofs, number_dofs_, core::kinematics::jacobian::ModuleType1::screw_construct_struct::r_vectors, res_numbers_, core::kinematics::jacobian::ModuleType1::screw_construct_struct::s_vectors, core::chemical::element::Ta, core::chemical::element::Tc, core::kinematics::TR(), and update_screw_vectors().

ModuleType1::screw_construct_struct core::kinematics::jacobian::ModuleType1::update_screw_vectors ( core::conformation::Conformation const &  conformation)
private

Updates the screw axes and moment arm vectors of the object.

Updates the screw axes and moment arm vectors of the object For the Jacobian analysis axis vectors and arm vectors are required Handles to the six torsion axes are provided by means of AtomIDs. AtomID uniquely points to a Stub, whose X-axes correspond to torsion axes. Thus, to identify the axes of the phi and psi torsions the stubs associated to respectively the mainchain CA- and C-atoms needs to be provided.

References core::kinematics::AtomTree::atom(), core::conformation::Conformation::atom_tree(), core::kinematics::RT::get_rotation(), core::kinematics::tree::Atom::get_stub(), core::kinematics::RT::get_translation(), core::kinematics::jacobian::ModuleType1::screw_construct_struct::Hmatrices, core::conformation::Residue::mainchain_atom(), core::kinematics::jacobian::ModuleType1::screw_construct_struct::r_vectors, ref_atom_ID_, res_numbers_, core::conformation::Conformation::residue(), and core::kinematics::jacobian::ModuleType1::screw_construct_struct::s_vectors.

Referenced by update_jacobian_matrices().

Member Data Documentation

constexpr core::Real core::kinematics::jacobian::ModuleType1::denom_orthogonal_bound_ = 1e-6
staticprivate

bound to check for screw orthogonality

Referenced by update_jacobian_matrices().

constexpr core::Real core::kinematics::jacobian::ModuleType1::denom_singular_bound_ = 1e-2
staticprivate

bound to check for singularity in Jacobian denominator

Referenced by update_jacobian_matrices().

core::Size core::kinematics::jacobian::ModuleType1::number_dofs_
private
constexpr core::Real core::kinematics::jacobian::ModuleType1::pos_singular_bound_ = 1e-10
staticprivate

bound to check for singularity in atom position

Referenced by get_orthogonal_wrenches_from_twists().

core::id::AtomID core::kinematics::jacobian::ModuleType1::ref_atom_ID_
private

the atom which acts as the reference frame for all vectors

Referenced by get_ref_atom_ID(), ModuleType1(), and update_screw_vectors().

utility::vector1<core::Size> core::kinematics::jacobian::ModuleType1::res_numbers_
private

The documentation for this class was generated from the following files: