# How the inverse kinematics is calculated The concept uses the following assumptions: * The degrees-of-freedom are limited to * Shoulder joint with 3dof and restrictive joint limits * The elbow with only 1dof * The wrist with 3dof and restrictive joint limits * for humans, within the reachable elbow positions, some areas are more likely to be used due to less muscle strain ## Proposal 1 for am pose estimate Input: * controller position * shoulder position estimate Output: * Elbow position * Shoulder backslash (required to improve shoulder position estimate) ### Step 1: Initial elbow position estimate We try to get a first good estimate using a very simple method: given * a vector *SpineShoulder*, going from the spine at approx. breast-hight to the shoulder position, and * a vector *ShoulderWrist*, going from the shoulder to the wrist position, which can be easily inferred from the controller position, * calculate the cross-product like this for the **right shoulder**: ```var elbow_dir = SpineShoulder.cross(ShoulderWrist)```. ### Step 2: Consider controller orientation ### Step 3: Consider shoulder orientation ### Step 4: Determine shoulder backslash for shoulder position estimation