Skip to content
LIBRARY
KinematicPTPBoundedJerk.md

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: Position

  • qd: Velocity

  • qdd: Acceleration

  • qddd: 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:

NameDescriptionUnitsDefault value
noutNumber of output axes1
q0Initial position for each axisfill(0, nout)
q1Final position for each axisfill(1, nout)
qd_maxMaximum velocity for each axisfill(1, nout)
qdd_maxMaximum acceleration for each axisfill(1, nout)
qddd_maxMaximum jerk for each axisfill(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

@example
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) #hide

Source

dyad
"""
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"}}
}
end
Flattened Source
dyad
"""
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"}}
}
end


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses