Skip to content
LIBRARY
Kinematic5.md

Kinematic5

A component emitting a 5th order polynomial trajectory.

traj5 is a simple trajectory planner that plans a 5th order polynomial trajectory between two points, subject to specified boundary conditions on the position, velocity and acceleration.

The outputs are:

  • q: Position

  • qd: Velocity

  • qdd: Acceleration

Usage

MultibodyComponents.Kinematic5(tf=1, q0=fill(0.0, nout), q1=fill(1.0, nout), qd0=fill(0.0, nout), qd1=fill(0.0, nout), qdd0=fill(0.0, nout), qdd1=fill(0.0, nout))

Parameters:

NameDescriptionUnitsDefault value
noutNumber of output axes1
tfFinal time for the trajectory1
q0Initial position for each axisfill(0, nout)
q1Final position for each axisfill(1, nout)
qd0Initial velocity for each axisfill(0, nout)
qd1Final velocity for each axisfill(0, nout)
qdd0Initial acceleration for each axisfill(0, nout)
qdd1Final acceleration for each axisfill(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

q_1(t)=traj5_q(t,tf,q01,q11,qd01,qd11,qdd01,qdd11)qd_1(t)=traj5_qd(t,tf,q01,q11,qd01,qd11,qdd01,qdd11)qdd_1(t)=traj5_qdd(t,tf,q01,q11,qd01,qd11,qdd01,qdd11)

Source

dyad
"""
A component emitting a 5th order polynomial trajectory.

`traj5` is a simple trajectory planner that plans a 5th order polynomial trajectory
between two points, subject to specified boundary conditions on the position, velocity
and acceleration.

The outputs are:
- `q`: Position
- `qd`: Velocity
- `qdd`: Acceleration
"""
component Kinematic5
  "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
  "Final time for the trajectory"
  parameter tf::Real = 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)
  "Initial velocity for each axis"
  parameter qd0::Real[nout] = fill(0.0, nout)
  "Final velocity for each axis"
  parameter qd1::Real[nout] = fill(0.0, nout)
  "Initial acceleration for each axis"
  parameter qdd0::Real[nout] = fill(0.0, nout)
  "Final acceleration for each axis"
  parameter qdd1::Real[nout] = fill(0.0, nout)
relations
  for i in 1:nout
    q[i] = MultibodyComponents.traj5_q(time, tf, q0[i], q1[i], qd0[i], qd1[i], qdd0[i], qdd1[i])
    qd[i] = MultibodyComponents.traj5_qd(time, tf, q0[i], q1[i], qd0[i], qd1[i], qdd0[i], qdd1[i])
    qdd[i] = MultibodyComponents.traj5_qdd(time, tf, q0[i], q1[i], qd0[i], qd1[i], qdd0[i], qdd1[i])
  end
metadata {"Dyad": {"icons": {"default": "dyad://MultibodyComponents/Kinematic5.svg"}}}
end
Flattened Source
dyad
"""
A component emitting a 5th order polynomial trajectory.

`traj5` is a simple trajectory planner that plans a 5th order polynomial trajectory
between two points, subject to specified boundary conditions on the position, velocity
and acceleration.

The outputs are:
- `q`: Position
- `qd`: Velocity
- `qdd`: Acceleration
"""
component Kinematic5
  "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
  "Final time for the trajectory"
  parameter tf::Real = 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)
  "Initial velocity for each axis"
  parameter qd0::Real[nout] = fill(0.0, nout)
  "Final velocity for each axis"
  parameter qd1::Real[nout] = fill(0.0, nout)
  "Initial acceleration for each axis"
  parameter qdd0::Real[nout] = fill(0.0, nout)
  "Final acceleration for each axis"
  parameter qdd1::Real[nout] = fill(0.0, nout)
relations
  for i in 1:nout
    q[i] = MultibodyComponents.traj5_q(time, tf, q0[i], q1[i], qd0[i], qd1[i], qdd0[i], qdd1[i])
    qd[i] = MultibodyComponents.traj5_qd(time, tf, q0[i], q1[i], qd0[i], qd1[i], qdd0[i], qdd1[i])
    qdd[i] = MultibodyComponents.traj5_qdd(time, tf, q0[i], q1[i], qd0[i], qd1[i], qdd0[i], qdd1[i])
  end
metadata {"Dyad": {"icons": {"default": "dyad://MultibodyComponents/Kinematic5.svg"}}}
end


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses