Describe algorithm in whitepaper

This commit is contained in:
Dion committed 2024-01-24 02:45:33 +01:00
1 parent 9080963600
commit 454b947bd9
7 files changed
+82 -2

No files matched your search

View File
Whitespace-only changes.
@@ -0,0 +1,30 @@
[remap]
importer="texture"
type="StreamTexture"
valid=false
[deps]
source_file="res://docs/ik_arm.drawio.png"
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
+37
View File
@@ -0,0 +1,37 @@
# 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