|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objecthmi.physics.featherstone.RNEASolver
public class RNEASolver
Recursive Newton-Euler inverse dynamics solver, based on Rigid Body Dynamics Algorithms Roy Featherstone 2007 Solves for a branch of ball joints, does not handle external forces (yet) TODO (contributions are welcome): - support for hinge/universal joints - support for external forces
| Field Summary | |
|---|---|
private float[] |
ai
|
private float[] |
cwi
|
private float[] |
F
|
private float[] |
I
|
private float[] |
iX0
|
private int[] |
lambda
|
private float[] |
r
|
private int |
size
|
private float[] |
tempq
|
private float[] |
tempv
|
private float[] |
tempv2
|
private float[] |
vi
|
private float[] |
X
|
| Constructor Summary | |
|---|---|
RNEASolver(int joints,
float[] translations,
float[] spatialI)
Constructor |
|
RNEASolver(int joints,
float[] translations,
float[] spatialI,
int[] parent)
Constructor Convention: joint 0 is always the root joint |
|
| Method Summary | |
|---|---|
void |
solve(float[] f,
float[] v0,
float[] a0,
float[] qi,
float[] wi,
float[] diffwi)
Solves for the forces on each joint |
void |
solveChain(float[] f,
float[] v0,
float[] a0,
float[] qi,
float[] wi,
float[] diffwi)
Solves for the forces on each joint |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private float[] vi
private float[] ai
private float[] X
private float[] r
private float[] iX0
private int size
private float[] tempv
private float[] tempv2
private float[] cwi
private float[] I
private float[] F
private float[] tempq
private int[] lambda
| Constructor Detail |
|---|
public RNEASolver(int joints,
float[] translations,
float[] spatialI,
int[] parent)
joints - number of jointstranslations - joint-to-joint translation vectors (an array of at least joint*3 length)spatialI - spatial inertia tensors (an array of at least joint*13 length)parent - the parent array, providing the parent of each joint, -1 for root
public RNEASolver(int joints,
float[] translations,
float[] spatialI)
joints - number of jointstranslations - joint-to-joint translation vectors (an array of at least joint*3 length)spatialI - spatial inertia tensors (an array of at least joint*13 length)| Method Detail |
|---|
public void solve(float[] f,
float[] v0,
float[] a0,
float[] qi,
float[] wi,
float[] diffwi)
f - output: spatial force on each jointv0 - spatial velocity of the base framea0 - spatial acceleration of the base frameqi - quaternion joint rotationswi - local joint angular velocitiesdiffwi - local joint angular accelerations
public void solveChain(float[] f,
float[] v0,
float[] a0,
float[] qi,
float[] wi,
float[] diffwi)
f - output: spatial force on each jointv0 - spatial velocity of the base framea0 - spatial acceleration of the base frameqi - quaternion joint rotationswi - local joint angular velocitiesdiffwi - local joint angular accelerations
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||