LIBRARY
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.
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
julia
using MultibodyComponents #hide
using ModelingToolkit #hide
@variables q0 #hide
@variables q1 #hide
@variables qd_max #hide
@variables qdd_max #hide
@named sys = MultibodyComponents.KinematicPTP(q0=q0, q1=q1, qd_max=qd_max, qdd_max=qdd_max) #hide
let eqs = full_equations(sys); Base.length(eqs) > 25 ? nothing : eqs end #hide<< @example-block not executed in draft mode >>Source
dyad
"""
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.
"""
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)
relations
for i in 1:nout
q[i] = MultibodyComponents.ptp_q(time, q0[i], q1[i], qd_max[i], qdd_max[i])
qd[i] = MultibodyComponents.ptp_qd(time, q0[i], q1[i], qd_max[i], qdd_max[i])
qdd[i] = MultibodyComponents.ptp_qdd(time, q0[i], q1[i], qd_max[i], qdd_max[i])
end
metadata {"Dyad": {"icons": {"default": "dyad://MultibodyComponents/KinematicPTP.svg"}}}
endFlattened Source
dyad
"""
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.
"""
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)
relations
for i in 1:nout
q[i] = MultibodyComponents.ptp_q(time, q0[i], q1[i], qd_max[i], qdd_max[i])
qd[i] = MultibodyComponents.ptp_qd(time, q0[i], q1[i], qd_max[i], qdd_max[i])
qdd[i] = MultibodyComponents.ptp_qdd(time, q0[i], q1[i], qd_max[i], qdd_max[i])
end
metadata {"Dyad": {"icons": {"default": "dyad://MultibodyComponents/KinematicPTP.svg"}}}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses