KinematicPTP
A component emitting a trajectory created by the point_to_point trajectory generator.
The trajectory exhibits piecewise constant acceleration, piecewise linear velocity and piecewise quadratic position curves, subject to maximum velocity and acceleration constraints.
Several axes are planned jointly: all axes accelerate, cruise and decelerate in unison and reach their end position at the same time, tracing a straight line in output space. The axis with the tightest limit saturates it, all other axes stay below theirs, and the duration of the motion is set by the axis that needs the most time.
Usage
MultibodyComponents.KinematicPTP(q0=fill(0.0, nout), q1=fill(1.0, nout), qd_max=fill(1.0, nout), qdd_max=fill(1.0, nout))
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
nout | Number of output axes | – | 1 |
q0 | Initial position for each axis | – | fill(0.0, nout) |
q1 | Final position for each axis | – | fill(1.0, nout) |
qd_max | Maximum velocity for each axis | – | fill(1.0, nout) |
qdd_max | Maximum acceleration for each axis | – | fill(1.0, nout) |
Connectors
q- This connector represents a real signal as an output from a component (RealOutput)qd- This connector represents a real signal as an output from a component (RealOutput)qdd- This connector represents a real signal as an output from a component (RealOutput)
Behavior
Dict{MIME{Symbol("text/plain")}, String} with 1 entry: MIME type text/plain => "Error displaying result"
Source
"""
A component emitting a trajectory created by the `point_to_point` trajectory generator.
The trajectory exhibits piecewise constant acceleration, piecewise linear velocity
and piecewise quadratic position curves, subject to maximum velocity and acceleration
constraints.
Several axes are planned jointly: all axes accelerate, cruise and decelerate in unison and
reach their end position at the same time, tracing a straight line in output space. The axis
with the tightest limit saturates it, all other axes stay below theirs, and the duration of
the motion is set by the axis that needs the most time.
"""
component KinematicPTP
"Position output for each axis"
q = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 150, "x2": 1060, "y2": 250, "rot": 0}
},
"tags": []
}
}
"Velocity output for each axis"
qd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 450, "x2": 1060, "y2": 550, "rot": 0}
},
"tags": []
}
}
"Acceleration output for each axis"
qdd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 750, "x2": 1060, "y2": 850, "rot": 0}
},
"tags": []
}
}
"Number of output axes"
structural parameter nout::Integer = 1
"Initial position for each axis"
parameter q0::Real[nout] = fill(0.0, nout)
"Final position for each axis"
parameter q1::Real[nout] = fill(1.0, nout)
"Maximum velocity for each axis"
parameter qd_max::Real[nout] = fill(1.0, nout)
"Maximum acceleration for each axis"
parameter qdd_max::Real[nout] = fill(1.0, nout)
"Trajectory of all axes, planned once: positions, velocities and accelerations"
structural variable traj::Native[3] = MultibodyComponents.ptp_trajectory(time, q0, q1, qd_max, qdd_max)
relations
q = traj[1]
qd = traj[2]
qdd = traj[3]
metadata {"Dyad": {"icons": {"default": "dyad://MultibodyComponents/KinematicPTP.svg"}}}
endFlattened Source
"""
A component emitting a trajectory created by the `point_to_point` trajectory generator.
The trajectory exhibits piecewise constant acceleration, piecewise linear velocity
and piecewise quadratic position curves, subject to maximum velocity and acceleration
constraints.
Several axes are planned jointly: all axes accelerate, cruise and decelerate in unison and
reach their end position at the same time, tracing a straight line in output space. The axis
with the tightest limit saturates it, all other axes stay below theirs, and the duration of
the motion is set by the axis that needs the most time.
"""
component KinematicPTP
"Position output for each axis"
q = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 150, "x2": 1060, "y2": 250, "rot": 0}
},
"tags": []
}
}
"Velocity output for each axis"
qd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 450, "x2": 1060, "y2": 550, "rot": 0}
},
"tags": []
}
}
"Acceleration output for each axis"
qdd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 750, "x2": 1060, "y2": 850, "rot": 0}
},
"tags": []
}
}
"Number of output axes"
structural parameter nout::Integer = 1
"Initial position for each axis"
parameter q0::Real[nout] = fill(0.0, nout)
"Final position for each axis"
parameter q1::Real[nout] = fill(1.0, nout)
"Maximum velocity for each axis"
parameter qd_max::Real[nout] = fill(1.0, nout)
"Maximum acceleration for each axis"
parameter qdd_max::Real[nout] = fill(1.0, nout)
"Trajectory of all axes, planned once: positions, velocities and accelerations"
structural variable traj::Native[3] = MultibodyComponents.ptp_trajectory(time, q0, q1, qd_max, qdd_max)
relations
q = traj[1]
qd = traj[2]
qdd = traj[3]
metadata {"Dyad": {"icons": {"default": "dyad://MultibodyComponents/KinematicPTP.svg"}}}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses