SCL
1.0
Standard Control Library : Control, dynamics, physics, and simulation
|
root node class for articulated body dynamicsThis implements taoDNode for root node of a articulated body tree structure. More...
#include <taoNode.h>
Public Member Functions | |
taoNodeRoot (deFrame const &global) | |
virtual void | sync (deFrame *local) |
virtual taoJoint * | getJointList () |
virtual taoJoint const * | getJointList () const |
virtual deVector6 * | velocity () |
virtual deVector6 * | acceleration () |
virtual void | getFrameGraphics (deFrame *Tog) |
global frame for graphics display More... | |
virtual deFrame * | frameHome () |
virtual deFrame * | frameLocal () |
virtual deFrame * | frameGlobal () |
global frame for the dynamics computation More... | |
virtual deFrame const * | frameGlobal () const |
virtual deFloat * | mass () |
virtual deVector3 * | center () |
virtual deVector3 const * | center () const |
virtual deMatrix3 * | inertia () |
virtual deVector6 * | force () |
virtual void | zeroForce () |
virtual void | addForce (const deVector6 *f) |
virtual void | updateFrame () |
virtual void | integrate (deFloat dt) |
virtual taoDNode * | getDParent () |
virtual taoDNode const * | getDParent () const |
virtual void | setDChild (taoDNode *n) |
virtual taoDNode * | getDChild () |
virtual taoDNode const * | getDChild () const |
virtual taoDNode * | getDSibling () |
virtual taoDNode const * | getDSibling () const |
void | setNext (taoNodeRoot *r) |
taoNodeRoot * | getNext () |
void | setGroup (taoWorld *g) |
taoWorld * | getGroup () |
void | setController (taoControl *c) |
taoControl * | getController () |
virtual void | sync () |
virtual deInt | isRoot () |
indicates if this node is root More... | |
virtual deInt | isParentRoot () |
indicates if parent of this node is root More... | |
virtual taoArticulatedBodyLink * | getABNode () |
gets _abNode More... | |
virtual void | setABNode (taoArticulatedBodyLink *node) |
sets _abNode More... | |
virtual deInt | getPropagate () |
indicates if dynamics of node should be included for control More... | |
virtual void | setPropagate (deInt p) |
virtual void | setID (const deInt id) |
virtual deInt | getID () const |
virtual void | setIsFixed (const deInt f) |
virtual deInt | getIsFixed () |
virtual deFloat | getCOR () |
virtual deFloat | getCOF_grip () |
virtual deFloat | getCOF_viscous () |
virtual deFloat | getCOF_static () |
virtual deFloat | getCOF_dynamic () |
virtual void | setCOR (deFloat c) |
coefficient of restitution More... | |
Private Member Functions | |
void | _DeleteNodeTree (taoDNode *r) |
void | _SyncNodeTree (taoDNode *r) |
Private Attributes | |
deFloat | _zero |
deFrame | _frameGlobal |
taoWorld * | _group |
taoControl * | _controller |
taoNode * | _child |
taoNodeRoot * | _next |
Coefficients of friction | |
where
| |
virtual void | force (const deVector3 *Pie, const deVector3 *Fie) |
computes new force given force More... | |
virtual void | setCOF_grip (deFloat c) |
cofg : coefficient of grip friction when v != 0 and y != 0 : f_g = - sign(v_t) * More... | |
virtual void | setCOF_viscous (deFloat c) |
cofv : coefficient of viscous friction when v != 0 : f_v = - v_t * More... | |
virtual void | setCOF_static (deFloat c) |
cofs : coefficient of static friction when v == 0 and a != 0 : f_s = - sign(a_t) * More... | |
virtual void | setCOF_dynamic (deFloat c) |
cofd : coefficient of dynamic friction when v != 0 : f_d = - sign(v_t) * More... | |
virtual deFloat | effectiveMass (const deVector3 *Pie, const deVector3 *Ui) |
virtual void | linearVelocity (deVector3 *Vie, const deVector3 *Pie) |
virtual void | linearAcceleration (deVector3 *Aie, const deVector3 *Pie) |
virtual void | impulse (const deVector3 *Pie, const deVector3 *Yie) |
computes new velocity given impulse More... | |
virtual void | impulseDist (const deVector3 *Pie, const deVector3 *Yie) |
computes new position given pseudo impulse More... | |
virtual deInt | impact1 (const deVector3 *Pie, const deVector3 *Ui, const deFloat cor2, const deFloat cofg2) |
computes new velocity and force given pos, vel, acc More... | |
virtual deInt | impact2 (taoDNode *ni, const deVector3 *Pie, const deVector3 *Ui, taoDNode *nj, const deVector3 *Pje, const deVector3 *Uj) |
This method computes impulse/force and changes velocity/friction between two colliding nodes, ni and nj. More... | |
virtual deInt | penetration1 (const deVector3 *Pie, const deVector3 *Ui, const deVector3 *pdist, const deFloat dt) |
This method computes impulse and changes position/orientation using impulseDist() . More... | |
std::string | name_ |
root node class for articulated body dynamics
This implements taoDNode for root node of a articulated body tree structure.
|
inlinevirtual |
Implements taoDNode.
|
inlinevirtual |
fext | accumulate all external forces |
Implements taoDNode.
|
inlinevirtualinherited |
computes new force given force
This method replaces the accumulated force with the given force.
Pie
- contact point expressed in local frame. Fie
- force at the contact point expressed in local frame. Reimplemented in taoNode.
|
inlinevirtual |
global frame for the dynamics computation
Implements taoDNode.
|
inlinevirtualinherited |
gets _abNode
|
inlinevirtual |
Implements taoDNode.
|
inlinevirtual |
Implements taoDNode.
|
inlinevirtual |
global frame for graphics display
Fg | is filled with the frame info for graphics sync. |
Implements taoDNode.
|
inlinevirtualinherited |
indicates if dynamics of node should be included for control
1 | to propagate dynamics of node for control |
0 | not to propagate dynamics of node for control |
|
virtualinherited |
computes new velocity and force given pos, vel, acc
Pie
- contact point expressed in local frame. Ui
- unit contact direction vector expressed in local frame (outward normal vector) cor2
- coefficient of restitution of the other collision node. cof2
- coefficient of grip friction of the other collision node.
|
virtualinherited |
This method computes impulse/force and changes velocity/friction between two colliding nodes, ni and nj.
Pie
- contact point expressed in frame i : Pie = ^iP_e - ^iP_i
Pje
- contact point expressed in frame j : Pje = ^jP_e - ^jP_j
Ui
- unit contact direction vector expressed in frame i : Ui = (^iP_j - ^iP_i)/|^iP_j - ^iP_i|
Uj
- Ui
expressed in frame j
|
inlinevirtualinherited |
computes new velocity given impulse
This method changes velocity instantaneously by applying the given impulse.
Pie
- contact point expressed in local frame. Yie
- impulse at the contact point expressed in local frame. Reimplemented in taoNode.
|
inlinevirtualinherited |
computes new position given pseudo impulse
This method changes position and orientation instantaneously by applying the given pseudo impulse.
Pie
- contact point expressed in local frame. Yie
- pseudo impulse at the contact point expressed in local frame. Reimplemented in taoNode.
|
inlinevirtual |
Implements taoDNode.
|
inlinevirtualinherited |
indicates if parent of this node is root
1 | parent this node is root |
0 | parent this node in not root |
|
inlinevirtualinherited |
indicates if this node is root
1 | this node is root |
0 | this node in not root |
|
inlinevirtual |
Implements taoDNode.
|
virtualinherited |
This method computes impulse and changes position/orientation using impulseDist()
.
Pie
- contact point expressed in local frame. Ui
- unit contact direction vector expressed in local frame (outward normal vector). pdist
- penetration distance vector : pdist = P_o - P_i
dt
- integration time step.
|
inlinevirtualinherited |
sets _abNode
|
inlinevirtualinherited |
cofd
: coefficient of dynamic friction when v != 0
: f_d = - sign(v_t) *
cofd
* f_n
|
inlinevirtualinherited |
cofg
: coefficient of grip friction when v != 0
and y != 0
: f_g = - sign(v_t) *
cofg
* y_n
|
inlinevirtualinherited |
cofs
: coefficient of static friction when v == 0
and a != 0
: f_s = - sign(a_t) *
cofs
* f_n
|
inlinevirtualinherited |
cofv
: coefficient of viscous friction when v != 0
: f_v = - v_t *
cofv
|
inlinevirtualinherited |
coefficient of restitution
|
virtual |