SCL  1.0
Standard Control Library : Control, dynamics, physics, and simulation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
scl::SForceContact Struct Reference

#include <SForce.hpp>

Inheritance diagram for scl::SForceContact:
Inheritance graph
[legend]
Collaboration diagram for scl::SForceContact:
Collaboration graph
[legend]

Public Member Functions

 SForceContact ()
 
virtual ~SForceContact ()
 
virtual const std::string & getType () const
 
virtual const std::string & getName () const
 
virtual bool hasBeenInit () const
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW
const SRobotParsed
other_robot_
 
std::string other_link_name_
 
const SRigidBodyDynother_rbd_
 
Eigen::MatrixXd other_J_
 
Eigen::Vector6d p_pre_
 
Eigen::Vector6d other_p_pre_
 
Eigen::Vector6d p_curr_
 
Eigen::Vector6d other_p_curr_
 
sFloat coeff_restitution_
 
sFloat time_impulse_
 
sFloat energy_collision_
 
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
const SRobotParsed
robot_
 
std::string link_name_
 
const SRigidBodyDynrbd_
 
Eigen::Vector6d force_
 
Eigen::Vector3d pos_
 
Eigen::Vector3d direction_
 
Eigen::MatrixXd J_
 
std::string name_
 
sBool has_been_init_
 

Protected Member Functions

 SForceContact (std::string arg_subclass_type)
 

Protected Attributes

std::string type_
 

Detailed Description

In addition to a simple force, a contact force also describes potential force impulses during a collision and stores references to the object that is in contact.

NOTE : In the event of a contact with the ground (an object of infinite inertia) the "other" data types will be set to NULL and ignored. This is because it makes no sense for the "other" object to move.

WARNING : In case of a plastic (energy dissipating) collision with an object of infinite inertia, it is not feasible to resolve the conservation of momentum requirements with the information contained in this object. Instead: Fixed manipulator: You may assume that the ground was part of the object itself. As such, all collision forces are internal and things are ok. Floating manipulator : This is not rigidly connected to the ground. As such it must use some form of propulsion to stabilize its base. The propulsion mechanism must then conserve momentum.

Constructor & Destructor Documentation

scl::SForceContact::SForceContact ( )
inline

Default constructor. Sets stuff to zero

virtual scl::SForceContact::~SForceContact ( )
inlinevirtual

Default destructor. Does nothing

scl::SForceContact::SForceContact ( std::string  arg_subclass_type)
inlineprotected

Typed constructor (called by subclasses). Sets stuff to zero

Member Function Documentation

virtual const std::string& scl::SObject::getName ( ) const
inlinevirtualinherited

Get the object's type

virtual const std::string& scl::SObject::getType ( ) const
inlinevirtualinherited

Get the object's type

virtual bool scl::SObject::hasBeenInit ( ) const
inlinevirtualinherited

Get the object's type

Member Data Documentation

sFloat scl::SForceContact::coeff_restitution_

The coefficient of restitution of the collision. This will determine how much energy is lost. 0 ==> No energy is lost (to non-conservative forces) 1 ==> All energy is lost

Eigen::Vector3d scl::SForce::direction_
inherited

The direction along which the force is applied.

sFloat scl::SForceContact::energy_collision_

Energy lost in the collision impulse so far

Eigen::Vector6d scl::SForce::force_
inherited

The force vector [fx, fy, fz, fwx, fwy, fwz]

sBool scl::SObject::has_been_init_
inherited

Whether the object is ready for use

Eigen::MatrixXd scl::SForce::J_
inherited

The Jacobian of the point. Useful for converting the applied force into a set of generalized forces. Ie. J' * f

NOTE : This must be an [ndof x 6] sized Matrix to translate an [fx, fy, fz, fwx, fwy, fwz] force vector into joint torques.

std::string scl::SForce::link_name_
inherited

The link on which this force acts

std::string scl::SObject::name_
inherited

The object's name

Eigen::MatrixXd scl::SForceContact::other_J_

The Jacobian of the contact point for the other robot. Useful for converting the applied force into a set of generalized forces. Ie. J' * f

NOTE : This must be an [ndof x 6] sized Matrix to translate an [fx, fy, fz, fwx, fwy, fwz] force vector into joint torques.

std::string scl::SForceContact::other_link_name_

The link of the other robot at which contact is make

const SRigidBodyDyn* scl::SForceContact::other_rbd_

A pointer to the dynamic engine's object for this link

EIGEN_MAKE_ALIGNED_OPERATOR_NEW const SRobotParsed* scl::SForceContact::other_robot_

The other object that the robot makes contact with

Eigen::Vector6d scl::SForceContact::p_curr_

The operational point momentum of the objects at the current time. NOTE : Momentum is conserved during a collision.

Eigen::Vector6d scl::SForceContact::p_pre_

The operational point momentum of the objects before the contact/collision event. NOTE : Momentum is conserved during a collision.

Eigen::Vector3d scl::SForce::pos_
inherited

The point (wrt the link's coordinate frame) where the force acts

const SRigidBodyDyn* scl::SForce::rbd_
inherited

A pointer to the dynamic engine's object for this link

EIGEN_MAKE_ALIGNED_OPERATOR_NEW const SRobotParsed* scl::SForce::robot_
inherited

Its parent robot

sFloat scl::SForceContact::time_impulse_

The duration of the collision impulse force (typically the time since the start of the collision)

std::string scl::SObject::type_
protectedinherited

The object's type. Should only be set by the constructor


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