KBMComponent.h File Reference
#include <ArmarXCore/core/Component.h>
#include <ArmarXCore/util/variants/eigen3/MatrixVariant.h>
#include <MemoryX/interface/components/KBMComponentInterface.h>
#include <MemoryX/interface/components/LongtermMemoryInterface.h>
#include <cfloat>
#include <MemoryX/libraries/helpers/KinematicBezierMaps/kbm.h>
+ Include dependency graph for KBMComponent.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  KBMComponent
 Wrapper for the KBM class. More...
 
class  KBMComponentPropertyDefinitions
 

Namespaces

namespace  armarx
 This file offers overloads of toIce() and fromIce() functions for STL container types.
 
namespace  armarx::KBMDifferentialIK
 

Functions

bool applyProprioceptionLimits (Eigen::Map< memoryx::KBM::Vector > &solution, const memoryx::KBM::Vector &lowerProprioceptionLimits, const memoryx::KBM::Vector &upperProprioceptionLimits)
 apply limits to solution and return true, if solution has been changed = solution was not in limits
 
memoryx::KBM::Vector calculateJointDeltas (const memoryx::KBM::Models::KBM &kbm, const memoryx::KBM::Vector &target, const memoryx::KBM::Vector &position, const memoryx::KBM::Vector &proprioception, float stepSizeFactor, float maxStepSize)
 calculateJointDeltas is in internal function called by solve
 
bool checkProprioceptionLimits (const memoryx::KBM::Vector &solution, const memoryx::KBM::Vector &lowerProprioceptionLimits, const memoryx::KBM::Vector &upperProprioceptionLimits)
 check if solution is within the limits
 
float randomFloat (float LO, float HI)
 randomFloat creates a random float between LO and HI
 
memoryx::KBM::Vector randomProprioception (const memoryx::KBM::Vector &lowerProprioceptionLimits, const memoryx::KBM::Vector &upperProprioceptionLimits)
 Creates a vector of random values between the limits.
 
bool solve (const memoryx::KBM::Models::KBM &kbm, const memoryx::KBM::Vector &targetPosition, const memoryx::KBM::Vector &currentPostion, const memoryx::KBM::Vector &currentProprioception, Eigen::Map< memoryx::KBM::Vector > &solution, float positionTolerance=5.0f, float minimumDelta=0.0f, bool requireImprovment=false, int maxSteps=50, float stepSizeFactor=0.2f, float maxStepSize=FLT_MAX)
 solves the inverse kinematics
 
bool solveMany (const memoryx::KBM::Models::KBM &kbm, const memoryx::KBM::Vector &targetPosition, const memoryx::KBM::Vector &currentPosition, const memoryx::KBM::Vector &currentProprioception, const memoryx::KBM::Vector &lowerProprioceptionLimits, const memoryx::KBM::Vector &upperProprioceptionLimits, Eigen::Map< memoryx::KBM::Vector > &solution, bool applyLimits=true, int maxSolves=25, float positionTolerance=5.0f, float minimumDelta=0.0f, bool requireImprovment=false, int maxSteps=50, float stepSizeFactor=0.2f, float maxStepSize=FLT_MAX)
 KBMDifferentialIK::solveMany runs solve many times.