Eryk Halicki Devlog Art

Zima arm kinematics (pt. 2)

Zima · 2025-12-07 · 10 hours

Goal: Complete second iteration of zima arm kinematic solver

What I did:
- wrote a kd tree and gradient descent based ik solver for zima's arm

What worked:
- Gained a much better understanding of forward kinematics and homogenous transformation matrices
- Evaluated inverse kinematic solving performance of kd tree approach (visualized below)
- ik evaluation
- algorithm performance improves logarithimically with the amount of points sampled for the kd_tree
- Even without coordinate descent, the algorithm is able to find good solutions (see below). I evaluated this by generating random joint states, then calculating their end effector pose, and passing that into the ik algorithm
- Random arm pose (arm 1) vs ik solution (arm 2)
- Pasted image 20251207200432
- Tested finding ik solutions for various realistic end effector poses
- Pasted image 20251207212237
- Implemented Jacobian based solver, improving smoothness of solution space and reducing requirement for large pre generated estimates
- Pasted image 20251208001126

What failed:
- Accidentally only generated angles from 0-pi causing weird solutions once i started testing solving arbitrary xyzrpy coordinates
- fixed by generating within correct angle constraints

Key learning:
- Became much more familiar with kinematic chains
- potential future experiment: how well does this simple ik method hold up in under-constrained spaces (eg. 7dof arm)
- Cyclical Coordinate Descent is an alternative to gradient descent
- Jacobian based solver is not as complicated as i expected

Next session:
- Concrete next step
- Specific thing to try

Time spent: 10 hours