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
 
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.
 

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 1203 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 1102 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 1165 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 1096 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 1143 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 1402 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 1249 of file KBMComponent.cpp.

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