Motion.PVTF
Executes a PVTF motion. PVTF stands for "Position, Velocity, Time, Feedforward." A user must specify the position, velocity, time, and feedforward values for a given motion at multiple points. PVTF motion is identical to PVT motion with the exception of the additional feedforward terms.
As with PVT motion, the position and velocity for a PVTF move are continuous. The acceleration and jerk values however are NOT continuous. The jerk maintains a constant value between PVTF points, but is discontinuous at the PVTF points. Therefore, the acceleration is continuous between PVTF points, but it also may be discontinuous at PVTF points. For more information about PVT profiles, please see PT and PVT Path Motion.
The feedforward values are interpolated linearly over the PVT time intervals. The feedfoward values correspond to the PV values. (i.e. When the motion reaches a specified position and velocity, the interpolated feedforward value will be equal to what is specified in the motion parameters.)
The feedforward values are not set to zero at the beginning of the move; they retain the last value that is specified in the PTF or PVTF motion parameters.
The feedforward values are not zeroed by non-PTF or PVTF moves (i.e. PT, PVT, Spline, S-Curve, etc.).
Version History
Introduced in MPX 2.0.
Result
Void
Arguments
Overload 1
|
Argument |
Type |
Description |
position |
Array of Double |
|
velocity |
Array of Double |
|
feedForward |
Array of Double |
|
deltaTime |
Array of Double |
|
|
Overload 2
|
Argument |
Type |
Description |
position |
Array of Double |
|
velocity |
Array of Double |
|
feedForward |
Array of Double |
|
deltaTime |
Array of Double |
|
emptyCount |
Int32 |
|
|
Overload 3
|
Argument |
Type |
Description |
position |
Array of Double |
|
velocity |
Array of Double |
|
feedForward |
Array of Double |
|
deltaTime |
Array of Double |
|
attributes |
Mpx.MoveAttribute |
|
|
Overload 4
|
Argument |
Type |
Description |
position |
Array of Double |
|
velocity |
Array of Double |
|
feedForward |
Array of Double |
|
deltaTime |
Array of Double |
|
emptyCount |
Int32 |
|
attributes |
Mpx.MoveAttribute |
|
|
Overload 5
|
Argument |
Type |
Description |
position |
2-D Array of Double |
|
velocity |
2-D Array of Double |
|
feedForward |
2-D Array of Double |
|
deltaTime |
Array of Double |
|
|
Overload 6
|
Argument |
Type |
Description |
position |
2-D Array of Double |
|
velocity |
2-D Array of Double |
|
feedForward |
2-D Array of Double |
|
deltaTime |
Array of Double |
|
emptyCount |
Int32 |
|
|
Overload 7
|
Argument |
Type |
Description |
position |
2-D Array of Double |
|
velocity |
2-D Array of Double |
|
feedForward |
2-D Array of Double |
|
deltaTime |
Array of Double |
|
attributes |
Mpx.MoveAttribute |
|
|
Overload 8
|
Argument |
Type |
Description |
position |
2-D Array of Double |
|
velocity |
2-D Array of Double |
|
feedForward |
2-D Array of Double |
|
deltaTime |
Array of Double |
|
emptyCount |
Int32 |
|
attributes |
Mpx.MoveAttribute |
|
|
Common Exceptions
|
Error |
Occurs when... |
Argument |
An invalid argument is specified. |
|
Visual Basic
Syntax
Sub PVTF(position As Double(), velocity As Double(), feedForward As Double(), deltaTime As Double())
Sub PVTF(position As Double(), velocity As Double(), feedForward As Double(), deltaTime As Double(), emptyCount As Int32)
Sub PVTF(position As Double(), velocity As Double(), feedForward As Double(), deltaTime As Double(), attributes As Mpx.MoveAttribute)
Sub PVTF(position As Double(), velocity As Double(), feedForward As Double(), deltaTime As Double(), emptyCount As Int32, attributes As Mpx.MoveAttribute)
Sub PVTF(position As Double(,), velocity As Double(,), feedForward As Double(,), deltaTime As Double())
Sub PVTF(position As Double(,), velocity As Double(,), feedForward As Double(,), deltaTime As Double(), emptyCount As Int32)
Sub PVTF(position As Double(,), velocity As Double(,), feedForward As Double(,), deltaTime As Double(), attributes As Mpx.MoveAttribute)
Sub PVTF(position As Double(,), velocity As Double(,), feedForward As Double(,), deltaTime As Double(), emptyCount As Int32, attributes As Mpx.MoveAttribute)
Sample Code
|
' Overload 1
Dim pos() As Double = New Double() { 1000.0, 2000.0 }
Dim velocity() As Double = New Double() { 1000.0, 1000.0 }
Dim feedForward() As Double = New Double() { 0.1, 0.3 }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
' pos velocity feedForward deltaTime
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime)
' Overload 2
Dim pos() As Double = New Double() { 1000.0, 2000.0 }
Dim velocity() As Double = New Double() { 1000.0, 1000.0 }
Dim feedForward() As Double = New Double() { 0.1, 0.3 }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
Dim emptyCount As Int32 = 0
' pos velocity feedForward deltaTime emptyCount
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime, emptyCount)
' Overload 3
Dim pos() As Double = New Double() { 1000.0, 2000.0 }
Dim velocity() As Double = New Double() { 1000.0, 1000.0 }
Dim feedForward() As Double = New Double() { 0.1, 0.3 }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
' pos velocity feedForward deltaTime MoveAttr
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime, Mpx.MoveAttribute.Id)
' Overload 4
Dim pos() As Double = New Double() { 1000.0, 2000.0 }
Dim velocity() As Double = New Double() { 1000.0, 1000.0 }
Dim feedForward() As Double = New Double() { 0.1, 0.3 }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
Dim emptyCount As Int32 = 0
' pos velocity feedForward deltaTime emptyCount MoveAttr
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime, emptyCount, Mpx.MoveAttribute.Id)
' Overload 5
Dim pos(,) As Double = New Double(,) { { 1000.0, 2000.0 }, { 1500.0, 2500.0 } }
Dim velocity(,) As Double = New Double(,) { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } }
Dim feedForward(,) As Double = New Double(,) { { 0.1, 0.3 }, { 0.2, 0.4 } }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
' pos velocity feedForward deltaTime
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime)
' Overload 6
Dim pos(,) As Double = New Double(,) { { 1000.0, 2000.0 }, { 1500, 2500 } }
Dim velocity(,) As Double = New Double(,) { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } }
Dim feedForward(,) As Double = New Double(,) { { 0.1, 0.3 }, { 0.2, 0.4 } }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
Dim emptyCount As Int32 = 0
' pos velocity feedForward deltaTime emptyCount
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime, emptyCount)
' Overload 7
Dim pos(,) As Double = New Double(,) { { 1000.0, 2000.0 }, { 1500, 2500 } }
Dim velocity(,) As Double = New Double(,) { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } }
Dim feedForward(,) As Double = New Double(,) { { 0.1, 0.3 }, { 0.2, 0.4 } }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
' pos velocity feedForward deltaTime MoveAttr
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime, Mpx.MoveAttribute.Id)
' Overload 8
Dim pos(,) As Double = New Double(,) { { 1000.0, 2000.0 }, { 1500, 2500 } }
Dim velocity(,) As Double = New Double(,) { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } }
Dim feedForward(,) As Double = New Double(,) { { 0.1, 0.3 }, { 0.2, 0.4 } }
Dim deltaTime() As Double = New Double() { 1.0, 2.0 }
Dim emptyCount As Int32 = 0
' pos velocity feedForward deltaTime emptyCount MoveAttr
controller.Motion(0).PVTF(pos, velocity, feedForward, deltaTime, emptyCount, Mpx.MoveAttribute.Id) |
Sample Application
C#
Syntax
void PVTF(double[] position, double[] velocity, double[] feedForward, double[] deltaTime);
void PVTF(double[] position, double[] velocity, double[] feedForward, double[] deltaTime, int emptyCount);
void PVTF(double[] position, double[] velocity, double[] feedForward, double[] deltaTime, Mpx.MoveAttribute attributes);
void PVTF(double[] position, double[] velocity, double[] feedForward, double[] deltaTime, int emptyCount, Mpx.MoveAttribute attributes);
void PVTF(double[,] position, double[,] velocity, double[,] feedForward, double[] deltaTime);
void PVTF(double[,] position, double[,] velocity, double[,] feedForward, double[] deltaTime, int emptyCount);
void PVTF(double[,] position, double[,] velocity, double[,] feedForward, double[] deltaTime, Mpx.MoveAttribute attributes);
void PVTF(double[,] position, double[,] velocity, double[,] feedForward, double[] deltaTime, int emptyCount, Mpx.MoveAttribute attributes);
Sample Code
|
// Overload 1
double[] pos = new double[] { 1000.0, 2000.0 };
double[] velocity = new double[] { 1000.0, 1000.0 };
double[] feedForward = new double[] { 0.1, 0.3 };
double[] deltaTime = new double[] { 1.0, 2.0 };
// pos velocity feedForward deltaTime
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime);
// Overload 2
double[] pos = new double[] { 1000.0, 2000.0 };
double[] velocity = new double[] { 1000.0, 1000.0 };
double[] feedForward = new double[] { 0.1, 0.3 };
double[] deltaTime = new double[] { 1.0, 2.0 };
int emptyCount = 0;
// pos velocity feedForward deltaTime emptyCount
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime, emptyCount);
// Overload 3
double[] pos = new double[] { 1000.0, 2000.0 };
double[] velocity = new double[] { 1000.0, 1000.0 };
double[] feedForward = new double[] { 0.1, 0.3 };
double[] deltaTime = new double[] { 1.0, 2.0 };
// pos velocity feedForward deltaTime MoveAttr
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime, Mpx.MoveAttribute.Id);
// Overload 4
double[] pos = new double[] { 1000.0, 2000.0 };
double[] velocity = new double[] { 1000.0, 1000.0 };
double[] feedForward = new double[] { 0.1, 0.3 };
double[] deltaTime = new double[] { 1.0, 2.0 };
int emptyCount = 0;
// pos velocity feedForward deltaTime emptyCount MoveAttr
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime, emptyCount, Mpx.MoveAttribute.Id);
// Overload 5
double[,] pos = new double[,] { { 1000.0, 2000.0 }, { 1500.0, 2500.0 } };
double[,] velocity = new double[,] { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } };
double[,] feedForward = new double[,] { { 0.1, 0.3 }, { 0.2, 0.4 } };
double[] deltaTime = new double[] { 1.0, 2.0 };
// pos velocity feedForward deltaTime
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime);
// Overload 6
double[,] pos = new double[,] { { 1000.0, 2000.0 }, { 1500, 2500 } };
double[,] velocity = new double[,] { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } };
double[,] feedForward = new double[,] { { 0.1, 0.3 }, { 0.2, 0.4 } };
double[] deltaTime = new double[] { 1.0, 2.0 };
int emptyCount = 0;
// pos velocity feedForward deltaTime emptyCount
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime, emptyCount);
// Overload 7
double[,] pos = new double[,] { { 1000.0, 2000.0 }, { 1500, 2500 } };
double[,] velocity = new double[,] { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } };
double[,] feedForward = new double[,] { { 0.1, 0.3 }, { 0.2, 0.4 } };
double[] deltaTime = new double[] { 1.0, 2.0 };
// pos velocity feedForward deltaTime MoveAttr
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime, Mpx.MoveAttribute.Id);
// Overload 8
double[,] pos = new double[,] { { 1000.0, 2000.0 }, { 1500, 2500 } };
double[,] velocity = new double[,] { { 1000.0, 1000.0 }, { 1500.0, 1250.0 } };
double[,] feedForward = new double[,] { { 0.1, 0.3 }, { 0.2, 0.4 } };
double[] deltaTime = new double[] { 1.0, 2.0 };
int emptyCount = 0;
// pos velocity feedForward deltaTime emptyCount MoveAttr
controller.Motion[0].PVTF(pos, velocity, feedForward, deltaTime, emptyCount, Mpx.MoveAttribute.Id); |
See Also
PTF
PVT
PT
Bessel
Spline
BSpline
BSpline2
MoveAttr
Axis Object
PositionScale
|