ocra-recipes
Doxygen documentation for the ocra-recipes repository
Public Types | Public Member Functions | Protected Attributes | Static Protected Attributes | List of all members
ocra::LinearizedCoulombFunction Class Reference

LinearizedCoulombFunction class. More...

#include <LinearizedCoulombFunction.h>

Inheritance diagram for ocra::LinearizedCoulombFunction:
[legend]
Collaboration diagram for ocra::LinearizedCoulombFunction:
[legend]

Public Types

typedef LinearFunction functionType_t
 
- Public Types inherited from ocra::LinearFunction
typedef Function functionType_t
 

Public Member Functions

 LinearizedCoulombFunction (Variable &f, double frictionCoeff, int numberOfFaces=4, double margin=0)
 
double getFrictionCoeff () const
 
double getMargin () const
 
void setFrictionCoeff (double coeff)
 
void setMargin (double margin)
 
void setConeOrientation (const Matrix3d &R)
 
const Matrix3d & getConeOrientation () const
 
- Public Member Functions inherited from ocra::LinearFunction
template<class Derived , class VectorBase >
 LinearFunction (Variable &x, const MatrixBase< Derived > &A, const VectorBase &b)
 
 ~LinearFunction ()
 
void invalidateb (int timestamp)
 
const MatrixXd & getA () const
 
const VectorXd & getb () const
 
void changeA (const MatrixXd &A)
 
void changeb (const VectorXd &b)
 
- Public Member Functions inherited from ocra::Function
virtual ~Function ()
 
int getDimension () const
 
virtual void updateFdot () const
 
virtual void updateFddot () const
 
virtual void updateJdotXdot () const
 
const VariablegetVariable () const
 
VariablegetVariable ()
 
template<eFunctionAbility Ability>
void invalidate ()
 
void invalidateAll (int timestamp)
 
void invalidateAll ()
 
template<eFunctionAbility Ability>
bool isValid () const
 
template<eFunctionAbility Ability>
bool canCompute () const
 
template<eFunctionAbility Ability>
const IFunction< Ability >::return_type & get () const
 
template<eFunctionAbility Ability>
IFunction< Ability >::return_sub_type get (int index) const
 
const VectorXd & getValue () const
 
double getValue (int index) const
 
const MatrixXd & getJacobian () const
 
MatrixXdRow getJacobian (int index) const
 
- Public Member Functions inherited from ocra::ObserverSubject
 ObserverSubject ()
 
virtual ~ObserverSubject ()
 
- Public Member Functions inherited from ocra::Observer
virtual ~Observer ()
 
template<int EVT>
void bind (SubjectBase< EVT > &subject)
 Call this method to automatically propagate observed events to observers connected to the subject given in argument. More...
 
template<int EVT>
void stopPropagation ()
 
- Public Member Functions inherited from ocra::ObserverBase< EVT_RESIZE >
void bind (subject_type &subject)
 Call this method to automatically propagate observed events to observers connected to the subject given in argument. More...
 
- Public Member Functions inherited from ocra::ObserverBase< EVT_CHANGE_DEPENDENCIES >
void bind (subject_type &subject)
 Call this method to automatically propagate observed events to observers connected to the subject given in argument. More...
 
- Public Member Functions inherited from ocra::ObserverBase< EVT_CHANGE_VALUE >
void bind (subject_type &subject)
 Call this method to automatically propagate observed events to observers connected to the subject given in argument. More...
 
- Public Member Functions inherited from ocra::Subject
virtual ~Subject ()
 
template<int EVT, class Derived , class Base >
void connect (Derived &object, void(Base::*newCallback)(int)) const
 Call this method to register a non-static method as a callback. More...
 
template<int EVT>
void connect (void(*newCallback)(int)) const
 Call this method to register a free function as a callback. More...
 
template<int EVT, class Derived , class Base >
void disconnect (Derived &object, void(Base::*callbackToErase)(int)) const
 Disconnect non-static method. More...
 
template<int EVT>
void disconnect (void(*callbackToErase)(int)) const
 Disconnect free function. More...
 
template<int EVT>
void propagate () const
 
template<int EVT>
void propagate (int timestamp) const
 
- Public Member Functions inherited from ocra::SubjectBase< EVT_RESIZE >
void connect (T &object, typename SubjectBaseTraits< EVT, T >::callback_type newCallback) const
 Call this method to register a non-static method as a callback. More...
 
void connect (typename SubjectBaseTraits< EVT, void >::callback_type newCallback) const
 Call this method to register a free function as a callback. More...
 
void disconnect (T &object, typename SubjectBaseTraits< EVT, T >::callback_type callback) const
 Disconnect non-static method. More...
 
void disconnect (typename SubjectBaseTraits< EVT, void >::callback_type callbackToErase) const
 Disconnect free function. More...
 
void propagate (int timestamp) const
 
void propagate () const
 
- Public Member Functions inherited from ocra::SubjectBase< EVT_CHANGE_DEPENDENCIES >
void connect (T &object, typename SubjectBaseTraits< EVT, T >::callback_type newCallback) const
 Call this method to register a non-static method as a callback. More...
 
void connect (typename SubjectBaseTraits< EVT, void >::callback_type newCallback) const
 Call this method to register a free function as a callback. More...
 
void disconnect (T &object, typename SubjectBaseTraits< EVT, T >::callback_type callback) const
 Disconnect non-static method. More...
 
void disconnect (typename SubjectBaseTraits< EVT, void >::callback_type callbackToErase) const
 Disconnect free function. More...
 
void propagate (int timestamp) const
 
void propagate () const
 
- Public Member Functions inherited from ocra::SubjectBase< EVT_CHANGE_VALUE >
void connect (T &object, typename SubjectBaseTraits< EVT, T >::callback_type newCallback) const
 Call this method to register a non-static method as a callback. More...
 
void connect (typename SubjectBaseTraits< EVT, void >::callback_type newCallback) const
 Call this method to register a free function as a callback. More...
 
void disconnect (T &object, typename SubjectBaseTraits< EVT, T >::callback_type callback) const
 Disconnect non-static method. More...
 
void disconnect (typename SubjectBaseTraits< EVT, void >::callback_type callbackToErase) const
 Disconnect free function. More...
 
void propagate (int timestamp) const
 
void propagate () const
 
- Public Member Functions inherited from ocra::IFunctionProperties
bool hasSeparableTimeDependancy (void) const
 
eFunctionLinearity getType (void) const
 
eFunctionConvexity getConvexityProperty (void) const
 
int getContinuityProperty (void) const
 
const std::string & getProperty (int i) const
 
int getNumberOfProperties (void) const
 
bool hasProperty (const std::string &functionProperty) const
 
bool isExplicitlyTimeDependant (void) const
 
- Public Member Functions inherited from ocra::NamedInstance
 NamedInstance (const std::string &name)
 
const std::string & getName () const
 
virtual ~NamedInstance ()
 
- Public Member Functions inherited from ocra::AbilitySet
AbilitySetadd (eFunctionAbility prop)
 
AbilitySetremove (eFunctionAbility prop)
 

Protected Attributes

double _mu
 
double _margin
 
Matrix3d _R_cone
 
MatrixXd _J_cache
 
- Protected Attributes inherited from ocra::LinearFunction
VectorXd _b
 
bool _bIsUpToDate
 
- Protected Attributes inherited from ocra::Function
Variablex
 
VectorXd & _value
 
MatrixXd & _jacobian
 
const int & _dim
 

Static Protected Attributes

static const double ANGLE_OFFSET = 0
 

Additional Inherited Members

- Protected Types inherited from ocra::ObserverBase< EVT_RESIZE >
typedef SubjectBase< EVT > subject_type
 
typedef InvokerBase< EVT > invoker_type
 
- Protected Types inherited from ocra::ObserverBase< EVT_CHANGE_DEPENDENCIES >
typedef SubjectBase< EVT > subject_type
 
typedef InvokerBase< EVT > invoker_type
 
- Protected Types inherited from ocra::ObserverBase< EVT_CHANGE_VALUE >
typedef SubjectBase< EVT > subject_type
 
typedef InvokerBase< EVT > invoker_type
 
- Protected Member Functions inherited from ocra::LinearFunction
 LinearFunction (Variable &x, int dimension)
 
virtual void updateb () const
 
virtual void doUpdateInputSizeEnd ()
 
virtual void updateValue () const
 
virtual void updateJacobian () const
 
virtual void doChangeA (const MatrixXd &A)
 
virtual void doChangeb (const VectorXd &b)
 
void inhibitPropagationFromb () const
 
void desinhibitPropagationFromb () const
 
- Protected Member Functions inherited from ocra::Function
 Function (Variable &x, int dimension, eFunctionLinearity linearity=LINEARITY_UNDEFINED, eFunctionConvexity convexity=CONVEXITY_UNDEFINED, int continuity=CONTINUITY_UNKNOWN, bool explicitlyTimeDependant=false, bool separableTimeDependancy=true)
 Function Constructor. More...
 
void disconnectVariable ()
 
void changeFunctionDimension (int newDimension)
 
void updateInputSize (int timestamp)
 
void resize ()
 
virtual int computeDimensionFromInputSize () const
 
virtual void doUpdateInputSizeBegin ()
 
virtual void doUpdateDimensionBegin (int newDimension)
 
virtual void doUpdateDimensionEnd (int oldDimension)
 
- Protected Member Functions inherited from ocra::ObserverBase< EVT_RESIZE >
void stopPropagation ()
 Call this method from your callbacks to avoid propagation to the bound subject (if any). More...
 
 ObserverBase ()
 
 ~ObserverBase ()
 
- Protected Member Functions inherited from ocra::ObserverBase< EVT_CHANGE_DEPENDENCIES >
void stopPropagation ()
 Call this method from your callbacks to avoid propagation to the bound subject (if any). More...
 
 ObserverBase ()
 
 ~ObserverBase ()
 
- Protected Member Functions inherited from ocra::ObserverBase< EVT_CHANGE_VALUE >
void stopPropagation ()
 Call this method from your callbacks to avoid propagation to the bound subject (if any). More...
 
 ObserverBase ()
 
 ~ObserverBase ()
 
- Protected Member Functions inherited from ocra::SubjectBase< EVT_RESIZE >
 SubjectBase ()
 
 ~SubjectBase ()
 
- Protected Member Functions inherited from ocra::SubjectBase< EVT_CHANGE_DEPENDENCIES >
 SubjectBase ()
 
 ~SubjectBase ()
 
- Protected Member Functions inherited from ocra::SubjectBase< EVT_CHANGE_VALUE >
 SubjectBase ()
 
 ~SubjectBase ()
 
- Protected Member Functions inherited from ocra::IFunctionProperties
 IFunctionProperties (eFunctionLinearity linearity=LINEARITY_UNDEFINED, eFunctionConvexity convexity=CONVEXITY_UNDEFINED, int continuity=CONTINUITY_UNKNOWN, bool explicitlyTimeDependant=false, bool separableTimeDependancy=true)
 IFunctionProperties Constructor. More...
 
void changeType (eFunctionLinearity newType)
 
void changeConvexityProperty (eFunctionConvexity newProperty)
 
void changeContinuityProperty (int newProperty)
 
void addProperty (const std::string &functionProperty)
 
void removeProperty (const std::string &functionProperty)
 
void changeExplicitTimeDependancy (bool b)
 
void changeSeparableTimeDependancy (bool b)
 
- Protected Member Functions inherited from ocra::AbilitySet
 AbilitySet (const std::vector< bool > &usageSet)
 
const std::vector< bool > & getUsageSet () const
 
 AbilitySet (eFunctionAbility prop0=FUN_VALUE, eFunctionAbility prop1=FUN_VALUE)
 
 AbilitySet (eFunctionAbility prop0, eFunctionAbility prop1, eFunctionAbility prop2, eFunctionAbility prop3=FUN_VALUE, eFunctionAbility prop4=FUN_VALUE)
 
 AbilitySet (eFunctionAbility prop0, eFunctionAbility prop1, eFunctionAbility prop2, eFunctionAbility prop3, eFunctionAbility prop4, eFunctionAbility prop5, eFunctionAbility prop6=FUN_VALUE, eFunctionAbility prop7=FUN_VALUE, eFunctionAbility prop8=FUN_VALUE, eFunctionAbility prop9=FUN_VALUE)
 
- Protected Member Functions inherited from ocra::CoupledInputOutputSize
 CoupledInputOutputSize (bool coupledInputOutputSize)
 
bool inputAndOutputSizesAreCoupled () const
 

Detailed Description

LinearizedCoulombFunction class.

Warning
None

Implementation of $ \left\|f_t\right\| - \mu f_n $ discretized and linearized. The function is thus a linear function Af+b with b normally equal to 0 and A built so that f is in the cone if $ Af+b \le 0 $. b can however be given a constant non-zero value to account for a (possibly negative) margin.

Definition at line 34 of file LinearizedCoulombFunction.h.

Member Typedef Documentation

Definition at line 38 of file LinearizedCoulombFunction.h.

Constructor & Destructor Documentation

ocra::LinearizedCoulombFunction::LinearizedCoulombFunction ( Variable f,
double  frictionCoeff,
int  numberOfFaces = 4,
double  margin = 0 
)

Constructor Build a linear function Af+b such as Af+b<=0 is a discretized cone with numberOfFaces conservatively representing a Coulomb friction cone with friction coefficient frictionCoeff. f is supposed to represent a 3-dimensionnal force in a local frame whose z-axis is the normal vector at the contact point (so that it is the axis of the cone). b should therefore be equal to zero (which is its default value, but could have its components set to another value to account for a (possibly negative) margin.

By default, the first edge of the cone will be in the xz plane. This can however be changed by setting the static parameter ANGLE_OFFSET to a non-zero value.

Precondition
f.getSize() == 3
numberOfFaces >= 3
frictionCoeff > 0

Definition at line 11 of file LinearizedCoulombFunction.cpp.

Member Function Documentation

const Matrix3d & ocra::LinearizedCoulombFunction::getConeOrientation ( ) const

Definition at line 67 of file LinearizedCoulombFunction.cpp.

real ocra::LinearizedCoulombFunction::getFrictionCoeff ( ) const

getters/setters

Definition at line 38 of file LinearizedCoulombFunction.cpp.

real ocra::LinearizedCoulombFunction::getMargin ( ) const

Definition at line 43 of file LinearizedCoulombFunction.cpp.

void ocra::LinearizedCoulombFunction::setConeOrientation ( const Matrix3d &  R)

Definition at line 61 of file LinearizedCoulombFunction.cpp.

void ocra::LinearizedCoulombFunction::setFrictionCoeff ( double  coeff)

Definition at line 48 of file LinearizedCoulombFunction.cpp.

void ocra::LinearizedCoulombFunction::setMargin ( double  margin)

Definition at line 55 of file LinearizedCoulombFunction.cpp.

Member Data Documentation

MatrixXd ocra::LinearizedCoulombFunction::_J_cache
protected

Definition at line 91 of file LinearizedCoulombFunction.h.

double ocra::LinearizedCoulombFunction::_margin
protected

Definition at line 89 of file LinearizedCoulombFunction.h.

double ocra::LinearizedCoulombFunction::_mu
protected

Definition at line 88 of file LinearizedCoulombFunction.h.

Matrix3d ocra::LinearizedCoulombFunction::_R_cone
protected

Definition at line 90 of file LinearizedCoulombFunction.h.

const double ocra::LinearizedCoulombFunction::ANGLE_OFFSET = 0
staticprotected

Definition at line 95 of file LinearizedCoulombFunction.h.


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