Skip to content
LIBRARY
KinematicPTP.md

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:

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

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


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses