us.ihmc.utilities.screwTheory
Class SpatialAccelerationVector

java.lang.Object
  extended by us.ihmc.utilities.screwTheory.SpatialMotionVector
      extended by us.ihmc.utilities.screwTheory.SpatialAccelerationVector

public class SpatialAccelerationVector
extends SpatialMotionVector

Class represents the spatial acceleration of a rigid body. A spatial acceleration is the derivative of a Twist.

Author:
Twan Koolen

Field Summary
 
Fields inherited from class us.ihmc.utilities.screwTheory.SpatialMotionVector
SIZE
 
Constructor Summary
SpatialAccelerationVector()
           
SpatialAccelerationVector(ReferenceFrame bodyFrame, ReferenceFrame baseFrame, ReferenceFrame expressedInFrame)
          Initiates the angular velocity and linear velocity to zero
SpatialAccelerationVector(ReferenceFrame bodyFrame, ReferenceFrame baseFrame, ReferenceFrame expressedInFrame, org.ejml.data.DenseMatrix64F matrix)
          Construct using a Matrix ([omegadot; a])
SpatialAccelerationVector(ReferenceFrame bodyFrame, ReferenceFrame baseFrame, ReferenceFrame expressedInFrame, double[] spatialAcceleration)
          Construct using a double array ([omegadot; a])
SpatialAccelerationVector(ReferenceFrame bodyFrame, ReferenceFrame baseFrame, ReferenceFrame expressedInFrame, double angularVelocityMagnitude, double angularAccelerationMagnitude, double linearVelocityMagnitude, double linearAccelerationMagnitude, javax.vecmath.Vector3d axisOfRotation, javax.vecmath.Vector3d axisOfRotationDot, javax.vecmath.Vector3d offset, javax.vecmath.Vector3d offsetDot)
          Construct based on a screw representation of the twist
SpatialAccelerationVector(ReferenceFrame bodyFrame, ReferenceFrame baseFrame, ReferenceFrame expressedInFrame, javax.vecmath.Vector3d linearAcceleration, javax.vecmath.Vector3d angularAcceleration)
           
SpatialAccelerationVector(SpatialAccelerationVector other)
          Copy constructor
 
Method Summary
 void add(SpatialAccelerationVector other)
          Adds another spatial acceleration to this spatial acceleration, after doing some reference frame checks.
 void changeBaseFrameNoRelativeAcceleration(ReferenceFrame newBaseFrame)
          Changes the base frame, assuming there is no relative acceleration between the old base frame and the new base frame A consequence of Duindam, Port-Based Modeling and Control for Efficient Bipedal Walking Robots, page 25, lemma 2.8 (a) http://sites.google.com/site/vincentduindam/publications
 void changeBodyFrameNoRelativeAcceleration(ReferenceFrame newBodyFrame)
          Changes the body frame, assuming there is no relative acceleration between the old body frame and the new body frame A consequence of Duindam, Port-Based Modeling and Control for Efficient Bipedal Walking Robots, page 25, lemma 2.8 (a) http://sites.google.com/site/vincentduindam/publications
 void changeFrame(ReferenceFrame newReferenceFrame, Twist twistOfCurrentWithRespectToNew, Twist twistOfBodyWithRespectToBase)
          Changes the reference frame in which this spatial acceleration vector is expressed See Duindam, Port-Based Modeling and Control for Efficient Bipedal Walking Robots, page 25.
 void changeFrameNoRelativeMotion(ReferenceFrame newReferenceFrame)
          Changes the reference frame in which this spatial motion vector is expressed, in case the new frame in which this acceleration should be expressed does not move with respect to the old one.
 void checkAndSet(SpatialAccelerationVector other)
          Sets this spatial acceleration vector so that it is the same as another spatial acceleration vector
 void packAccelerationOfPointFixedInBodyFrame(Twist twist, FramePoint pointFixedInBodyFrame, FrameVector frameVectorToPack)
          Packs the linear acceleration of a point that is fixed in bodyFrame but is expressed in baseFrame, with respect to baseFrame, expressed in expressedInFrame
 void set(SpatialAccelerationVector other)
           
 void setBasedOnOriginAcceleration(FrameVector angularAcceleration, FrameVector originAcceleration, Twist twistOfBodyWithRespectToBase)
           
 void setScrew(ReferenceFrame bodyFrame, ReferenceFrame baseFrame, ReferenceFrame expressedInFrame, double angularVelocityMagnitude, double angularAccelerationMagnitude, double linearVelocityMagnitude, double linearAccelerationMagnitude, javax.vecmath.Vector3d axisOfRotation, javax.vecmath.Vector3d axisOfRotationDot, javax.vecmath.Vector3d offset, javax.vecmath.Vector3d offsetDot)
           
 void sub(SpatialAccelerationVector other)
           
 java.lang.String toString()
           
 
Methods inherited from class us.ihmc.utilities.screwTheory.SpatialMotionVector
checkReferenceFramesMatch, getAngularPartCopy, getBaseFrame, getBodyFrame, getExpressedInFrame, getLinearPartCopy, invert, limitAngularPartMagnitude, limitLinearPartMagnitude, normalize, packAngularPart, packAngularPart, packLinearPart, packLinearPart, packMatrix, scale, scaleAngularPart, scaleLinearPart, set, set, set, setAngularPart, setAngularPartX, setAngularPartY, setAngularPartZ, setLinearPart, setLinearPartX, setLinearPartY, setLinearPartZ, setToZero, setToZero, times, toMatrix
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SpatialAccelerationVector

public SpatialAccelerationVector()

SpatialAccelerationVector

public SpatialAccelerationVector(ReferenceFrame bodyFrame,
                                 ReferenceFrame baseFrame,
                                 ReferenceFrame expressedInFrame)
Initiates the angular velocity and linear velocity to zero

Parameters:
bodyFrame - what we're specifying the spatial acceleration of
baseFrame - with respect to what we're specifying the spatial acceleration
expressedInFrame - in which reference frame the spatial acceleration is expressed

SpatialAccelerationVector

public SpatialAccelerationVector(ReferenceFrame bodyFrame,
                                 ReferenceFrame baseFrame,
                                 ReferenceFrame expressedInFrame,
                                 javax.vecmath.Vector3d linearAcceleration,
                                 javax.vecmath.Vector3d angularAcceleration)
Parameters:
bodyFrame - what we're specifying the spatial acceleration of
baseFrame - with respect to what we're specifying the spatial acceleration
expressedInFrame - in which reference frame the spatial acceleration is expressed
linearAcceleration - linear acceleration part of the spatial acceleration
angularAcceleration - angular velocity part of the spatial acceleration

SpatialAccelerationVector

public SpatialAccelerationVector(ReferenceFrame bodyFrame,
                                 ReferenceFrame baseFrame,
                                 ReferenceFrame expressedInFrame,
                                 org.ejml.data.DenseMatrix64F matrix)
Construct using a Matrix ([omegadot; a])


SpatialAccelerationVector

public SpatialAccelerationVector(ReferenceFrame bodyFrame,
                                 ReferenceFrame baseFrame,
                                 ReferenceFrame expressedInFrame,
                                 double[] spatialAcceleration)
Construct using a double array ([omegadot; a])


SpatialAccelerationVector

public SpatialAccelerationVector(ReferenceFrame bodyFrame,
                                 ReferenceFrame baseFrame,
                                 ReferenceFrame expressedInFrame,
                                 double angularVelocityMagnitude,
                                 double angularAccelerationMagnitude,
                                 double linearVelocityMagnitude,
                                 double linearAccelerationMagnitude,
                                 javax.vecmath.Vector3d axisOfRotation,
                                 javax.vecmath.Vector3d axisOfRotationDot,
                                 javax.vecmath.Vector3d offset,
                                 javax.vecmath.Vector3d offsetDot)
Construct based on a screw representation of the twist

Parameters:
bodyFrame - what we're specifying the twist of
baseFrame - with respect to what we're specifying the twist
expressedInFrame - in which reference frame the twist is expressed
angularVelocityMagnitude - magnitude of angular velocity about axisOfRotation
linearVelocityMagnitude - magnitude of linear velocity in the direction of axisOfRotation
axisOfRotation - axis of rotation
offset - any vector from the origin of expressedInFrame to axisOfRotation

SpatialAccelerationVector

public SpatialAccelerationVector(SpatialAccelerationVector other)
Copy constructor

Method Detail

checkAndSet

public void checkAndSet(SpatialAccelerationVector other)
Sets this spatial acceleration vector so that it is the same as another spatial acceleration vector


changeBodyFrameNoRelativeAcceleration

public void changeBodyFrameNoRelativeAcceleration(ReferenceFrame newBodyFrame)
Changes the body frame, assuming there is no relative acceleration between the old body frame and the new body frame A consequence of Duindam, Port-Based Modeling and Control for Efficient Bipedal Walking Robots, page 25, lemma 2.8 (a) http://sites.google.com/site/vincentduindam/publications


changeBaseFrameNoRelativeAcceleration

public void changeBaseFrameNoRelativeAcceleration(ReferenceFrame newBaseFrame)
Changes the base frame, assuming there is no relative acceleration between the old base frame and the new base frame A consequence of Duindam, Port-Based Modeling and Control for Efficient Bipedal Walking Robots, page 25, lemma 2.8 (a) http://sites.google.com/site/vincentduindam/publications


changeFrame

public void changeFrame(ReferenceFrame newReferenceFrame,
                        Twist twistOfCurrentWithRespectToNew,
                        Twist twistOfBodyWithRespectToBase)
Changes the reference frame in which this spatial acceleration vector is expressed See Duindam, Port-Based Modeling and Control for Efficient Bipedal Walking Robots, page 25. http://sites.google.com/site/vincentduindam/publications Differentiate lemma 2.8 (c) using the product rule, and use lemma 2.8 (f) in one of the terms. Result: new = Ad_H * (old + ad_twistOfCurrentWithRespectToNew * twistOfBodyWithRespectToBase) where Ad_H = [R, 0; tilde(p) * R, R] for H = [R, p; 0, 1] ad_T = [tilde(omega), 0; tilde(v), tilde(omega)] for T = [omega, v]


changeFrameNoRelativeMotion

public void changeFrameNoRelativeMotion(ReferenceFrame newReferenceFrame)
Changes the reference frame in which this spatial motion vector is expressed, in case the new frame in which this acceleration should be expressed does not move with respect to the old one.


add

public void add(SpatialAccelerationVector other)
Adds another spatial acceleration to this spatial acceleration, after doing some reference frame checks. See Duindam, Port-Based Modeling and Control for Efficient Bipedal Walking Robots, page 25, lemma 2.8 (e) http://sites.google.com/site/vincentduindam/publications Duindam proves this fact for twists, but differentiating the statement results in the same thing for derivatives of twists, i.e. spatial accelerations


sub

public void sub(SpatialAccelerationVector other)

set

public void set(SpatialAccelerationVector other)

packAccelerationOfPointFixedInBodyFrame

public void packAccelerationOfPointFixedInBodyFrame(Twist twist,
                                                    FramePoint pointFixedInBodyFrame,
                                                    FrameVector frameVectorToPack)
Packs the linear acceleration of a point that is fixed in bodyFrame but is expressed in baseFrame, with respect to baseFrame, expressed in expressedInFrame


setBasedOnOriginAcceleration

public void setBasedOnOriginAcceleration(FrameVector angularAcceleration,
                                         FrameVector originAcceleration,
                                         Twist twistOfBodyWithRespectToBase)

setScrew

public void setScrew(ReferenceFrame bodyFrame,
                     ReferenceFrame baseFrame,
                     ReferenceFrame expressedInFrame,
                     double angularVelocityMagnitude,
                     double angularAccelerationMagnitude,
                     double linearVelocityMagnitude,
                     double linearAccelerationMagnitude,
                     javax.vecmath.Vector3d axisOfRotation,
                     javax.vecmath.Vector3d axisOfRotationDot,
                     javax.vecmath.Vector3d offset,
                     javax.vecmath.Vector3d offsetDot)

toString

public java.lang.String toString()
Overrides:
toString in class SpatialMotionVector