Package org.robwork.sdurw_trajectory
Class InterpolatorTrajectoryRotation3D_f
- java.lang.Object
-
- org.robwork.sdurw_trajectory.TrajectoryRotation3D_f
-
- org.robwork.sdurw_trajectory.InterpolatorTrajectoryRotation3D_f
-
public class InterpolatorTrajectoryRotation3D_f extends TrajectoryRotation3D_f
Sequence of interpolators and blends giving a trajectory
A trajectory is defined as a sequence of interpolators and blends.
Multiple interpolators can follow each other, whereas a Blend must be
preceded and followed by interpolators.
The length of a Trajectory is defined as the time it takes to go from
start to finish.
When performing random queries the trajectory needs to do a binary search
through all interpolators and blend, giving the random access an O(lg n)
complexity.
For accessing multiple consecutive values use TrajectoryInterpolator.
Example of usage:
Transform3D<> T1(Vector3D<>(0,0,0), EAA<>(0,0,0)); Transform3D<> T2(Vector3D<>(1,1,0), EAA<>(1,1,0)); Transform3D<> T3(Vector3D<>(2,0,0), EAA<>(2,2,0)); LinearInterpolator<Transform3D<> >::Ptr cartInt1 = ownedPtr(new LinearInterpolator<Transform3D<> >(T1, T2, 1)); LinearInterpolator<Transform3D<> >::Ptr cartInt2 = ownedPtr(new LinearInterpolator<Transform3D<> >(T2, T3, 1)); ParabolicBlend<Transform3D<> >::Ptr blend1 = ownedPtr(new ParabolicBlend<Transform3D<> >(cartInt1, cartInt2, 0.25)); InterpolatorTrajectory<Transform3D<> > trajectory; trajectory.add(cartInt1); trajectory.add(blend1, cartInt2); std::ofstream out("test.dat"); for (double t = 0; t<=trajectory.duration(); t += dt) { Transform3D<> x = trajectory.x(t); out<<t<<" "<<x.P()(0)<<" "<<x.P()(1)<<" "<<x.P()(2)<<std::endl; } out.close();
-
-
Constructor Summary
Constructors Constructor Description InterpolatorTrajectoryRotation3D_f()Construct an empty trajectoryInterpolatorTrajectoryRotation3D_f(double startTime)Construct an empty trajectoryInterpolatorTrajectoryRotation3D_f(long cPtr, boolean cMemoryOwn)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(BlendRotation3D_fPtr blend, InterpolatorRotation3D_fPtr interpolator)Adds a blend and an interpolator to the trajectory.
The Blend added is used to blend between what was previously the last
Interpolator of the trajectory onto interpolator, which become the
new last interpolator of the trajectory.voidadd(InterpolatorRotation3D_fPtr interpolator)Adds an interpolator to the end of the trajectory.
When adding the interpolator the Trajectory takes ownership.
voidadd(InterpolatorTrajectoryRotation3D_f trajectory)Append trajectory to the end
When adding a Trajectory all interpolators and blends of
trajectory is added in sequence.
Ownership of the interpolator and blends are shared using
std::shared_ptr
Rotation3Dfddx(double t)Acceleration of trajectory at time t
Returns the acceleration of the trajectory at time t \in[startTime(), endTime()].
voiddelete()doubleduration()Total duration of the trajectory.
The duration of the Trajectory corresponds to the time it takes to
run through it.
If the trajectory is empty, then -1 is returned.Rotation3Dfdx(double t)Velocity of trajectory at time t
Returns the velocity of the trajectory at time t \in[startTime(), endTime()].
static longgetCPtr(InterpolatorTrajectoryRotation3D_f obj)TrajectoryIteratorRotation3D_fPtrgetIterator()Returns a bi-directional interator for running through the trajectory.
For some trajectory types it may be significantly more efficient to run through
using an iterator, rather than using random access.
Pointer to the iterator.TrajectoryIteratorRotation3D_fPtrgetIterator(double dt)Returns a bi-directional interator for running through the trajectory.
For some trajectory types it may be significantly more efficient to run through
using an iterator, rather than using random access.
SegmentRotation3D_fgetSegment(long index)longgetSegmentsCount()Returns the number of segments
A segment contains a description interpolator and the blend used to blend from the
previous interpolatordoublestartTime()Returns the startTime of the trajectory
Rotation3Dfx(double t)Position of trajectory at time t
Returns the position of the trajectory at time t \in[startTime(), endTime()].
-
Methods inherited from class org.robwork.sdurw_trajectory.TrajectoryRotation3D_f
endTime, getCPtr, getPath, getPath
-
-
-
-
Constructor Detail
-
InterpolatorTrajectoryRotation3D_f
public InterpolatorTrajectoryRotation3D_f(long cPtr, boolean cMemoryOwn)
-
InterpolatorTrajectoryRotation3D_f
public InterpolatorTrajectoryRotation3D_f(double startTime)
Construct an empty trajectory
-
InterpolatorTrajectoryRotation3D_f
public InterpolatorTrajectoryRotation3D_f()
Construct an empty trajectory
-
-
Method Detail
-
getCPtr
public static long getCPtr(InterpolatorTrajectoryRotation3D_f obj)
-
delete
public void delete()
- Overrides:
deletein classTrajectoryRotation3D_f
-
x
public Rotation3Df x(double t)
Description copied from class:TrajectoryRotation3D_fPosition of trajectory at time t
Returns the position of the trajectory at time t \in[startTime(), endTime()].
- Overrides:
xin classTrajectoryRotation3D_f- Parameters:
t- [in] time between startTime() and endTime()- Returns:
- Position
-
dx
public Rotation3Df dx(double t)
Description copied from class:TrajectoryRotation3D_fVelocity of trajectory at time t
Returns the velocity of the trajectory at time t \in[startTime(), endTime()].
- Overrides:
dxin classTrajectoryRotation3D_f- Parameters:
t- [in] time between startTime() and endTime()- Returns:
- Velocity
-
ddx
public Rotation3Df ddx(double t)
Description copied from class:TrajectoryRotation3D_fAcceleration of trajectory at time t
Returns the acceleration of the trajectory at time t \in[startTime(), endTime()].
- Overrides:
ddxin classTrajectoryRotation3D_f- Parameters:
t- [in] time between startTime() and endTime()- Returns:
- Acceleration
-
duration
public double duration()
Description copied from class:TrajectoryRotation3D_fTotal duration of the trajectory.
The duration of the Trajectory corresponds to the time it takes to
run through it.
If the trajectory is empty, then -1 is returned.- Overrides:
durationin classTrajectoryRotation3D_f
-
startTime
public double startTime()
Description copied from class:TrajectoryRotation3D_fReturns the startTime of the trajectory
- Overrides:
startTimein classTrajectoryRotation3D_f- Returns:
- Start time
-
getIterator
public TrajectoryIteratorRotation3D_fPtr getIterator(double dt)
Description copied from class:TrajectoryRotation3D_fReturns a bi-directional interator for running through the trajectory.
For some trajectory types it may be significantly more efficient to run through
using an iterator, rather than using random access.
- Overrides:
getIteratorin classTrajectoryRotation3D_f- Parameters:
dt- [in] The default time step used when using the ++ or -- operators in the
iterator
Pointer to the iterator. The pointer has ownership.
-
getIterator
public TrajectoryIteratorRotation3D_fPtr getIterator()
Description copied from class:TrajectoryRotation3D_fReturns a bi-directional interator for running through the trajectory.
For some trajectory types it may be significantly more efficient to run through
using an iterator, rather than using random access.
Pointer to the iterator. The pointer has ownership.- Overrides:
getIteratorin classTrajectoryRotation3D_f
-
add
public void add(InterpolatorRotation3D_fPtr interpolator)
Adds an interpolator to the end of the trajectory.
When adding the interpolator the Trajectory takes ownership.
- Parameters:
interpolator- [in] The interpolator to add
-
add
public void add(BlendRotation3D_fPtr blend, InterpolatorRotation3D_fPtr interpolator)
Adds a blend and an interpolator to the trajectory.
The Blend added is used to blend between what was previously the last
Interpolator of the trajectory onto interpolator, which become the
new last interpolator of the trajectory.- Parameters:
blend- [in] the blend to addinterpolator- [in] the interpolator to add
-
add
public void add(InterpolatorTrajectoryRotation3D_f trajectory)
Append trajectory to the end
When adding a Trajectory all interpolators and blends of
trajectory is added in sequence.
Ownership of the interpolator and blends are shared using
std::shared_ptr
- Parameters:
trajectory- [in] Trajectory to append
-
getSegmentsCount
public long getSegmentsCount()
Returns the number of segments
A segment contains a description interpolator and the blend used to blend from the
previous interpolator
-
getSegment
public SegmentRotation3D_f getSegment(long index)
-
-