mc_rtc  2.14.0
mc_tvm::CollisionFunction Class Reference

#include <mc_tvm/CollisionFunction.h>

Inheritance diagram for mc_tvm::CollisionFunction:
Collaboration diagram for mc_tvm::CollisionFunction:

Classes

struct  ObjectData
 

Public Member Functions

 CollisionFunction (Convex &c1, Convex &c2, const Eigen::VectorXd &r1Selector, const Eigen::VectorXd &r2Selector, double dt)
 
void tick ()
 
double distance () const noexcept
 
const Convexc1 () const noexcept
 
const Eigen::Vector3d & p1 () const noexcept
 
const Convexc2 () const noexcept
 
const Eigen::Vector3d & p2 () const noexcept
 
- Public Member Functions inherited from tvm::function::abstract::Function
virtual const Eigen::VectorXd & velocity () const
 
virtual const Eigen::VectorXd & normalAcceleration () const
 
virtual MatrixConstRef JDot (const Variable &x) const
 
- Public Member Functions inherited from tvm::internal::FirstOrderProvider
virtual const Eigen::VectorXd & value () const
 
virtual MatrixConstRefWithProperties jacobian (const Variable &x) const
 
bool linearIn (const Variable &x) const
 
const SpaceimageSpace () const
 
int size () const
 
int rSize () const
 
int tSize () const
 
const VariableVectorvariables () const
 
- Public Member Functions inherited from tvm::graph::internal::AbstractNode
bool isUpdateEnabled (EnumT e) const
 
virtual bool isUpdateStaticallyEnabled (int) const
 
virtual bool isUpdateCustomEnabled (int) const
 
virtual ~AbstractNode ()=default
 
void update (int i)
 
- Public Member Functions inherited from tvm::graph::internal::Inputs
virtual ~Inputs ()=default
 
void addInput (std::shared_ptr< T > source, EnumI i, Args... args)
 
void addInput (T &source, EnumI i, Args... args)
 
void removeInput (T *source)
 
void removeInput (T *source, Args... args)
 
Iterator getInput (T *source)
 
Iterator getInput (const std::shared_ptr< T > &source)
 
- Public Member Functions inherited from tvm::graph::abstract::Outputs
virtual ~Outputs ()=default
 
bool isOutputEnabled (EnumT e) const
 
bool isOutputEnabled (int i) const
 
virtual bool isOutputStaticallyEnabled (int) const
 
virtual bool isOutputCustomEnabled (int) const
 

Protected Member Functions

void updateValue ()
 
void updateVelocity ()
 
void updateJacobian ()
 
void updateNormalAcceleration ()
 
- Protected Member Functions inherited from tvm::function::abstract::Function
 Function (int m=0)
 
 Function (Space image)
 
void resizeCache () override
 
void resizeVelocityCache ()
 
void resizeNormalAccelerationCache ()
 
void resizeJDotCache ()
 
void addVariable_ (VariablePtr v) override
 
void removeVariable_ (VariablePtr v) override
 
- Protected Member Functions inherited from tvm::internal::FirstOrderProvider
 FirstOrderProvider (int m)
 
 FirstOrderProvider (Space image)
 
void resizeValueCache ()
 
void resizeJacobianCache ()
 
void addVariable (VariablePtr v, bool linear)
 
void removeVariable (VariablePtr v)
 
void addVariable (const VariableVector &v, bool linear)
 
void splitJacobian (const MatrixConstRef &J, const std::vector< VariablePtr > &vars, bool keepProperties=false)
 
void splitJacobian (const MatrixConstRef &J, const VariableVector &vars, bool keepProperties=false)
 
void resize (int m)
 
- Protected Member Functions inherited from Node< FirstOrderProvider >
void registerUpdates (EnumT u, void(U::*fn)(), Args... args)
 
void registerUpdates (EnumT u, void(U::*fn)())
 
void addOutputDependency (EnumO o, EnumU u)
 
void addOutputDependency (std::initializer_list< EnumO > os, EnumU u)
 
void addInternalDependency (EnumU1 uDependent, EnumU2 u)
 
void addInputDependency (EnumU u, std::shared_ptr< S > source, EnumO i, Args... args)
 
void addInputDependency (EnumU u, S &source, EnumO i, Args... args)
 
void addDirectDependency (EnumO o, std::shared_ptr< S > source, EnumI i)
 
void addDirectDependency (EnumO o, S &source, EnumI i)
 

Protected Attributes

uint64_t iter_ = 0
 
uint64_t prevIter_ = 0
 
Convexc1_
 
Convexc2_
 
double dt_
 
Eigen::Vector3d p1_ = Eigen::Vector3d::Zero()
 
Eigen::Vector3d p2_ = Eigen::Vector3d::Zero()
 
sch::CD_Pair pair_
 
std::vector< ObjectDatadata_
 
Eigen::Vector3d normVecDist_ = Eigen::Vector3d::Zero()
 
Eigen::Vector3d prevNormVecDist_ = Eigen::Vector3d::Zero()
 
Eigen::Vector3d speedVec_ = Eigen::Vector3d::Zero()
 
Eigen::MatrixXd fullJac_
 
Eigen::MatrixXd distJac_
 
- Protected Attributes inherited from tvm::function::abstract::Function
Eigen::VectorXd velocity_
 
Eigen::VectorXd normalAcceleration_
 
utils::internal::MapWithVariableAsKey< Eigen::MatrixXd, slice_jdotJDot_
 
- Protected Attributes inherited from tvm::internal::FirstOrderProvider
Eigen::VectorXd value_
 
utils::internal::MapWithVariableAsKey< MatrixWithProperties, slice_matrix, true > jacobian_
 
Space imageSpace_
 
VariableVector variables_
 
utils::internal::MapWithVariableAsKey< bool, slice_linearlinear_
 
- Protected Attributes inherited from tvm::graph::internal::AbstractNode
std::map< int, std::function< void(AbstractNode &)> > updates_
 
std::map< int, std::vector< int > > outputDependencies_
 
std::map< int, std::vector< int > > internalDependencies_
 
std::map< int, input_dependency_tinputDependencies_
 
std::map< int, std::pair< Outputs *, int > > directDependencies_
 
- Protected Attributes inherited from tvm::graph::abstract::Outputs
bool is_node_
 

Additional Inherited Members

- Public Types inherited from tvm::graph::internal::AbstractNode
enum  Update_
 
typedef AbstractNode UpdateParent
 
typedef AbstractNode UpdateBase
 
- Public Types inherited from tvm::graph::internal::Inputs
typedef std::unordered_map< abstract::Outputs *, std::set< int > > inputs_t
 
typedef std::unordered_set< std::shared_ptr< abstract::Outputs > > store_t
 
- Public Types inherited from tvm::graph::abstract::Outputs
enum  Output_
 
typedef Outputs OutputParent
 
typedef Outputs OutputBase
 
- Static Public Member Functions inherited from tvm::graph::internal::AbstractNode
static constexpr const char * UpdateName (Update_)
 
static constexpr bool UpdateStaticallyEnabled (EnumT)
 
- Static Public Member Functions inherited from tvm::graph::abstract::Outputs
static constexpr const char * OutputName (Output_)
 
static constexpr bool OutputStaticallyEnabled (EnumT)
 
- Static Public Attributes inherited from tvm::graph::internal::AbstractNode
static constexpr unsigned int UpdateSize
 
static constexpr auto UpdateBaseName
 
- Static Public Attributes inherited from tvm::graph::abstract::Outputs
static constexpr unsigned int OutputSize
 
static constexpr auto OutputBaseName
 
- Protected Types inherited from tvm::graph::internal::AbstractNode
typedef std::map< Outputs *, std::set< int > > input_dependency_t
 

Detailed Description

This class implements a collision function for two given objects

Constructor & Destructor Documentation

◆ CollisionFunction()

mc_tvm::CollisionFunction::CollisionFunction ( Convex c1,
Convex c2,
const Eigen::VectorXd &  r1Selector,
const Eigen::VectorXd &  r2Selector,
double  dt 
)

Constructor

Parameters
c1First collision object
c2Second collision object
r1SelectorJoint selector for the first robot
r2SelectorJoint selector for the second robot
dtTimestep

Member Function Documentation

◆ c1()

const Convex& mc_tvm::CollisionFunction::c1 ( ) const
inlinenoexcept

First convex involved in the collision

◆ c2()

const Convex& mc_tvm::CollisionFunction::c2 ( ) const
inlinenoexcept

Second convex involved in the collision

◆ distance()

double mc_tvm::CollisionFunction::distance ( ) const
inlinenoexcept

Distance between the two objects

◆ p1()

const Eigen::Vector3d& mc_tvm::CollisionFunction::p1 ( ) const
inlinenoexcept

Closest point on c1 in inertial frame coordinates

◆ p2()

const Eigen::Vector3d& mc_tvm::CollisionFunction::p2 ( ) const
inlinenoexcept

Closest point on c2 in inertial frame coordinates

◆ tick()

void mc_tvm::CollisionFunction::tick ( )

Called once every iteration to advance the iteration counter

◆ updateJacobian()

void mc_tvm::CollisionFunction::updateJacobian ( )
protected

◆ updateNormalAcceleration()

void mc_tvm::CollisionFunction::updateNormalAcceleration ( )
protected

◆ updateValue()

void mc_tvm::CollisionFunction::updateValue ( )
protected

◆ updateVelocity()

void mc_tvm::CollisionFunction::updateVelocity ( )
protected

Member Data Documentation

◆ c1_

Convex* mc_tvm::CollisionFunction::c1_
protected

◆ c2_

Convex* mc_tvm::CollisionFunction::c2_
protected

◆ data_

std::vector<ObjectData> mc_tvm::CollisionFunction::data_
protected

◆ distJac_

Eigen::MatrixXd mc_tvm::CollisionFunction::distJac_
protected

◆ dt_

double mc_tvm::CollisionFunction::dt_
protected

◆ fullJac_

Eigen::MatrixXd mc_tvm::CollisionFunction::fullJac_
protected

Intermediate computation

◆ iter_

uint64_t mc_tvm::CollisionFunction::iter_ = 0
protected

◆ normVecDist_

Eigen::Vector3d mc_tvm::CollisionFunction::normVecDist_ = Eigen::Vector3d::Zero()
protected

◆ p1_

Eigen::Vector3d mc_tvm::CollisionFunction::p1_ = Eigen::Vector3d::Zero()
protected

◆ p2_

Eigen::Vector3d mc_tvm::CollisionFunction::p2_ = Eigen::Vector3d::Zero()
protected

◆ pair_

sch::CD_Pair mc_tvm::CollisionFunction::pair_
protected

◆ prevIter_

uint64_t mc_tvm::CollisionFunction::prevIter_ = 0
protected

◆ prevNormVecDist_

Eigen::Vector3d mc_tvm::CollisionFunction::prevNormVecDist_ = Eigen::Vector3d::Zero()
protected

◆ speedVec_

Eigen::Vector3d mc_tvm::CollisionFunction::speedVec_ = Eigen::Vector3d::Zero()
protected

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