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.

The outputs are:

  • q: Position

  • qd: Velocity

  • qdd: Acceleration

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, nout)
q1Final position for each axisfill(1, nout)
qd_maxMaximum velocity for each axisfill(1, nout)
qdd_maxMaximum acceleration for each axisfill(1, 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

q_1(t)=ptp_q(t,q01,q11,qd_max1,qdd_max1)qd_1(t)=ptp_qd(t,q01,q11,qd_max1,qdd_max1)qdd_1(t)=ptp_qdd(t,q01,q11,qd_max1,qdd_max1)

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.

The outputs are:
- `q`: Position
- `qd`: Velocity
- `qdd`: Acceleration
"""
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.

The outputs are:
- `q`: Position
- `qd`: Velocity
- `qdd`: Acceleration
"""
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