armarx::KBMDifferentialIK Namespace Reference

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 More...
 
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 More...
 
bool checkProprioceptionLimits (const memoryx::KBM::Vector &solution, const memoryx::KBM::Vector &lowerProprioceptionLimits, const memoryx::KBM::Vector &upperProprioceptionLimits)
 check if solution is within the limits More...
 
float randomFloat (float LO, float HI)
 randomFloat creates a random float between LO and HI More...
 
memoryx::KBM::Vector randomProprioception (const memoryx::KBM::Vector &lowerProprioceptionLimits, const memoryx::KBM::Vector &upperProprioceptionLimits)
 Creates a vector of random values between the limits. More...
 
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 More...
 
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. More...
 

Function Documentation

◆ applyProprioceptionLimits()

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

Definition at line 1084 of file KBMComponent.cpp.

+ Here is the caller graph for this function:

◆ calculateJointDeltas()

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

Definition at line 987 of file KBMComponent.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkProprioceptionLimits()

bool checkProprioceptionLimits ( const memoryx::KBM::Vector solution,
const memoryx::KBM::Vector lowerProprioceptionLimits,
const memoryx::KBM::Vector upperProprioceptionLimits 
)

check if solution is within the limits

Definition at line 1050 of file KBMComponent.cpp.

+ Here is the caller graph for this function:

◆ randomFloat()

float randomFloat ( float  LO,
float  HI 
)

randomFloat creates a random float between LO and HI

Definition at line 982 of file KBMComponent.cpp.

+ Here is the caller graph for this function:

◆ randomProprioception()

memoryx::KBM::Vector randomProprioception ( const memoryx::KBM::Vector lowerProprioceptionLimits,
const memoryx::KBM::Vector upperProprioceptionLimits 
)

Creates a vector of random values between the limits.

Definition at line 1028 of file KBMComponent.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ solve()

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

Parameters
kbmthe learned KBM
targetPositionthe target position
currentPositionthe current position
currentProprioceptionthe current proprioception
solutionwill contain the joint values that solve the inverse kinematics
Returns
true, if a good approximation has been found, false otherwise

Definition at line 1261 of file KBMComponent.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ solveMany()

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.

Parameters
kbm
targetPosition
currentProprioception
lowerProprioceptionLimits
upperProprioceptionLimits
solution
maxSolvesmaximum number of times solve() should be called
positionTolerance
minimumDelta
requireImprovment
maxSteps
stepSizeFactor
maxStepSize
Returns

Definition at line 1127 of file KBMComponent.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function: