hmi.physics.controller
Class HingeJointController

java.lang.Object
  extended by hmi.physics.controller.HingeJointController
All Implemented Interfaces:
PhysicalController

public class HingeJointController
extends Object
implements PhysicalController

A PD-controller that guides a hinge joint (or one angle of a joint with more DoF) to a certain desired angle and (optionally) desired avelocity torque = ks * (desiredangle-currentangle) + ds * (desiredavelocity - currentavelocity) with ks the spring gain, ds the damper gain


Field Summary
private  float angle
           
private  float aprev
           
private  float avel
           
private  int axis
           
private  String[] desJointIDs
           
private  float ds
           
private static float DS_DEFAULT
           
private  boolean firstRun
           
private  PhysicalJoint joint
           
private  String jointId
           
private  String[] jointIDs
           
private  float ks
           
private static float KS_DEFAULT
           
private  PhysicalHumanoid pHuman
           
 
Constructor Summary
HingeJointController()
           
HingeJointController(PhysicalJoint j, float a)
          Sets up a PD-controller with 0 velocity and default gain values
HingeJointController(PhysicalJoint j, float a, float av, float k, float d, int ax)
          Constructor
 
Method Summary
 PhysicalController copy(PhysicalHumanoid ph)
          Creates a copy of the controller
 String[] getDesiredJointIDs()
          Gets the ids of joints the controller would like to steer if available
 String getParameterValue(String name)
          Get the parameter value of parameter name, return null if not found
 String[] getRequiredJointIDs()
          Gets the ids of controlled joints
 void reset()
          Clears out all previous time dependen variables
 void setDamper(float d)
          Sets the damper gain
 void setParameterValue(String name, float value)
           
 void setParameterValue(String name, String value)
           
 void setPhysicalHumanoid(PhysicalHumanoid ph)
          Links the controller to a new set of physical joints
 void setSpring(float k)
          Set the spring gain
 void update(double timeDiff)
          Updates the controller
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

joint

private PhysicalJoint joint

jointId

private String jointId

angle

private float angle

aprev

private float aprev

KS_DEFAULT

private static final float KS_DEFAULT
See Also:
Constant Field Values

DS_DEFAULT

private static final float DS_DEFAULT
See Also:
Constant Field Values

ks

private float ks

ds

private float ds

avel

private float avel

axis

private int axis

firstRun

private boolean firstRun

pHuman

private PhysicalHumanoid pHuman

jointIDs

private String[] jointIDs

desJointIDs

private String[] desJointIDs
Constructor Detail

HingeJointController

public HingeJointController(PhysicalJoint j,
                            float a,
                            float av,
                            float k,
                            float d,
                            int ax)
Constructor

Parameters:
j - controlled joint
a - desired joint angle
av - desired angular velocity
k - spring gain
d - damper gain
ax - joint axis to control (0..2)

HingeJointController

public HingeJointController()

HingeJointController

public HingeJointController(PhysicalJoint j,
                            float a)
Sets up a PD-controller with 0 velocity and default gain values

Parameters:
j - controlled joint
a - desired joint angle Default spring and damper gains set up a controller that loosely keeps an elbow hanging down
Method Detail

setDamper

public void setDamper(float d)
Sets the damper gain

Parameters:
d - damper gain

setSpring

public void setSpring(float k)
Set the spring gain

Parameters:
k - spring gain

reset

public void reset()
Description copied from interface: PhysicalController
Clears out all previous time dependen variables

Specified by:
reset in interface PhysicalController

update

public void update(double timeDiff)
Description copied from interface: PhysicalController
Updates the controller

Specified by:
update in interface PhysicalController
Parameters:
timeDiff - time since last update

getRequiredJointIDs

public String[] getRequiredJointIDs()
Description copied from interface: PhysicalController
Gets the ids of controlled joints

Specified by:
getRequiredJointIDs in interface PhysicalController

setPhysicalHumanoid

public void setPhysicalHumanoid(PhysicalHumanoid ph)
Description copied from interface: PhysicalController
Links the controller to a new set of physical joints

Specified by:
setPhysicalHumanoid in interface PhysicalController
Parameters:
ph - physical humanoid to link to

copy

public PhysicalController copy(PhysicalHumanoid ph)
Description copied from interface: PhysicalController
Creates a copy of the controller

Specified by:
copy in interface PhysicalController

getParameterValue

public String getParameterValue(String name)
Description copied from interface: PhysicalController
Get the parameter value of parameter name, return null if not found

Specified by:
getParameterValue in interface PhysicalController

setParameterValue

public void setParameterValue(String name,
                              String value)
Specified by:
setParameterValue in interface PhysicalController

setParameterValue

public void setParameterValue(String name,
                              float value)
Specified by:
setParameterValue in interface PhysicalController

getDesiredJointIDs

public String[] getDesiredJointIDs()
Description copied from interface: PhysicalController
Gets the ids of joints the controller would like to steer if available

Specified by:
getDesiredJointIDs in interface PhysicalController