|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objecthmi.elckerlyc.animationengine.mixed.MixedSystem
public class MixedSystem
A system that contains a group of physically steered joints and 0 or more groups of kinematically steered groups, connected to the physical group with a @see{Connector}. Each frame, the torques and forces calculated from the movement of the kinematically steered part are applied to the physically steered group of joints
| Field Summary | |
|---|---|
private float[] |
aVel
|
private float[] |
aVelPrev
|
private ArrayList<Branch> |
branches
|
private float[] |
com
|
private float[] |
connectorTransform
|
private float[] |
f
|
private float[] |
gravity
|
private static org.slf4j.Logger |
logger
|
private float |
mass
|
private PhysicalHumanoid |
pHuman
|
private float[] |
qTemp
|
private float[] |
spatialA0
|
private float[] |
spatialV0
|
private SkeletonPose |
startPose
|
private float[] |
tempM1
|
private float[] |
tempM2
|
private float[] |
velPrev
|
private float[] |
vTemp
|
private float[] |
vTemp2
|
| Constructor Summary | |
|---|---|
MixedSystem(float[] g,
PhysicalHumanoid p)
Constructor |
|
| Method Summary | |
|---|---|
void |
addBranch(IDBranch idb,
Connector con)
Adds a kinematic branch |
IDSegment |
createIDSegment()
Creates a IDSegment, overwrite in subclasses to create a specific subclass of IDSegment |
ArrayList<Branch> |
getBranches()
|
PhysicalHumanoid |
getPHuman()
|
int |
getRots(VJoint vj,
IDSegment seg,
int i,
float[] q)
|
void |
reset(VJoint vj)
Resets the velocity and acceleration of the connectors |
void |
set(MixedSystem s,
float[] q,
float[] w)
Sets the system to s. |
void |
setFeedbackRatio(float k)
Set the feedback ratio for all connectors |
private void |
setIDFromID(ArrayList<Branch> srcBranches)
|
private void |
setIDFromPHuman(PhysicalHumanoid p)
Set the state of the idbranches to match the state of a PhysicalHumanoid |
void |
setMassOffset(float[] q)
set mass offset to the physical humanoid based on joint rotations of kinematicly controlled joints |
void |
setMassOffset(VJoint vj)
|
private void |
setPHumanFromID(ArrayList<Branch> bs,
float[] q,
float[] w)
|
void |
setResetPose(VJoint v)
Sets the startup pose of the physical human, that is the pose to return to on reset |
void |
setup()
Should be called once the Physical human is fully created, automatically called in MixedSystemAssembler |
void |
time(float timeDiff,
float[] q,
float[] w,
float[] wDiff)
Solves ID for kinematically steered objects Applies reactive torques to the physical part and sets the CoM on the physical part. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private static final org.slf4j.Logger logger
private ArrayList<Branch> branches
private float[] spatialV0
private float[] spatialA0
private float[] f
private float[] gravity
private float mass
private float[] com
private float[] tempM1
private float[] tempM2
private float[] qTemp
private float[] vTemp
private float[] vTemp2
private float[] connectorTransform
private PhysicalHumanoid pHuman
private SkeletonPose startPose
private float[] aVel
private float[] aVelPrev
private float[] velPrev
| Constructor Detail |
|---|
public MixedSystem(float[] g,
PhysicalHumanoid p)
g - Vec3f of gravity accelerationp - physical humanoid used for this system| Method Detail |
|---|
public void setup()
public void setResetPose(VJoint v)
private void setIDFromPHuman(PhysicalHumanoid p)
p -
private void setPHumanFromID(ArrayList<Branch> bs,
float[] q,
float[] w)
private void setIDFromID(ArrayList<Branch> srcBranches)
public void set(MixedSystem s,
float[] q,
float[] w)
public void reset(VJoint vj)
vj - next joint, will contain start pose
public void addBranch(IDBranch idb,
Connector con)
ch - the chain to addcon - the connectorpublic void setFeedbackRatio(float k)
k - the new feedback ratio
public int getRots(VJoint vj,
IDSegment seg,
int i,
float[] q)
public void setMassOffset(VJoint vj)
public void setMassOffset(float[] q)
public void time(float timeDiff,
float[] q,
float[] w,
float[] wDiff)
timeDiff - time since last updateq - rotations of the joints in the branchesw - angular velocity of the joints in the brancheswDiff - angular acceleration of the joints in the branchespublic ArrayList<Branch> getBranches()
public IDSegment createIDSegment()
public PhysicalHumanoid getPHuman()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||