KinematicPTPBoundedJerk
A component emitting a time-optimal point-to-point trajectory with bounded velocity, acceleration, and jerk, generated using JerkLimiter from TrajectoryLimiters.jl.
When multiple axes are specified, the trajectories are time-synchronized so all axes reach their targets at the same time.
The outputs are:
q: Positionqd: Velocityqdd: Accelerationqddd: Jerk
Usage
MultibodyComponents.KinematicPTPBoundedJerk(q0=fill(0.0, nout), q1=fill(1.0, nout), qd_max=fill(1.0, nout), qdd_max=fill(1.0, nout), qddd_max=fill(10.0, nout))
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
nout | Number of output axes | – | 1 |
q0 | Initial position for each axis | – | fill(0, nout) |
q1 | Final position for each axis | – | fill(1, nout) |
qd_max | Maximum velocity for each axis | – | fill(1, nout) |
qdd_max | Maximum acceleration for each axis | – | fill(1, nout) |
qddd_max | Maximum jerk for each axis | – | fill(10, 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)qddd- This connector represents a real signal as an output from a component (RealOutput)
Behavior
using MultibodyComponents #hide
using ModelingToolkit #hide
@variables q0 #hide
@variables q1 #hide
@variables qd_max #hide
@variables qdd_max #hide
@variables qddd_max #hide
@named sys = MultibodyComponents.KinematicPTPBoundedJerk(q0=q0, q1=q1, qd_max=qd_max, qdd_max=qdd_max, qddd_max=qddd_max) #hide
full_equations(sys) #hideSource
"""
A component emitting a time-optimal point-to-point trajectory with bounded velocity,
acceleration, and jerk, generated using `JerkLimiter` from TrajectoryLimiters.jl.
When multiple axes are specified, the trajectories are time-synchronized so all axes
reach their targets at the same time.
The outputs are:
- `q`: Position
- `qd`: Velocity
- `qdd`: Acceleration
- `qddd`: Jerk
"""
external component KinematicPTPBoundedJerk
"Position output for each axis"
q = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 100, "x2": 1060, "y2": 200, "rot": 0}
},
"tags": []
}
}
"Velocity output for each axis"
qd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 330, "x2": 1060, "y2": 430, "rot": 0}
},
"tags": []
}
}
"Acceleration output for each axis"
qdd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 590, "x2": 1060, "y2": 690, "rot": 0}
},
"tags": []
}
}
"Jerk output for each axis"
qddd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 790, "x2": 1060, "y2": 890, "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)
"Maximum jerk for each axis"
parameter qddd_max::Real[nout] = fill(10.0, nout)
relations
metadata {
"Dyad": {"icons": {"default": "dyad://MultibodyComponents/KinematicPTPBoundedJerk.svg"}}
}
endFlattened Source
"""
A component emitting a time-optimal point-to-point trajectory with bounded velocity,
acceleration, and jerk, generated using `JerkLimiter` from TrajectoryLimiters.jl.
When multiple axes are specified, the trajectories are time-synchronized so all axes
reach their targets at the same time.
The outputs are:
- `q`: Position
- `qd`: Velocity
- `qdd`: Acceleration
- `qddd`: Jerk
"""
external component KinematicPTPBoundedJerk
"Position output for each axis"
q = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 100, "x2": 1060, "y2": 200, "rot": 0}
},
"tags": []
}
}
"Velocity output for each axis"
qd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 330, "x2": 1060, "y2": 430, "rot": 0}
},
"tags": []
}
}
"Acceleration output for each axis"
qdd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 590, "x2": 1060, "y2": 690, "rot": 0}
},
"tags": []
}
}
"Jerk output for each axis"
qddd = [RealOutput() for i in 1:nout] {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 960, "y1": 790, "x2": 1060, "y2": 890, "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)
"Maximum jerk for each axis"
parameter qddd_max::Real[nout] = fill(10.0, nout)
relations
metadata {
"Dyad": {"icons": {"default": "dyad://MultibodyComponents/KinematicPTPBoundedJerk.svg"}}
}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses