blockKinematicPTP2

Move as fast as possible from start to end position within given kinematic constraints with output signals q, qd=der(q), qdd=der(qd)

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Information

The goal is to move as fast as possible from start position q_begin to end position q_end under given kinematical constraints. The positions can be translational or rotational definitions (i.e., q_begin/q_end is given). In robotics such a movement is called PTP (Point-To-Point). This source block generates the position q(t), the speed qd(t) = der(q), and the acceleration qdd = der(qd) as output. The signals are constructed in such a way that it is not possible to move faster, given the maximally allowed velocity qd_max and the maximally allowed acceleration qdd_max:

KinematicPTP2.png

If vectors q_begin/q_end have more than 1 element, the output vectors are constructed such that all signals are in the same periods in the acceleration, constant velocity and deceleration phase. This means that only one of the signals is at its limits whereas the others are synchronized in such a way that the end point is reached at the same time instant.

This element is useful to generate a reference signal for a controller which controls, e.g., a drive train, or to drive a flange according to a given acceleration.

Parameters

TypeNameDefaultDescription
Real[:]q_begin{0}Start position
Real[:]q_end{1}End position
Real[:]qd_max{1}Maximum velocities der(q)
Real[:]qdd_max{1}Maximum accelerations der(qd)
SI.TimestartTime0Time instant at which movement starts
Integernoutmax([size(q_begin, 1); size(q_end, 1); size(qd_max, 1); size(qdd_max, 1)])Number of output signals (= dimension of q, qd, qdd, moving)

Connectors

TypeNameDefaultDescription
Modelica.Blocks.Interfaces.RealOutput[nout]qReference position of path planning
Modelica.Blocks.Interfaces.RealOutput[nout]qdReference speed of path planning
Modelica.Blocks.Interfaces.RealOutput[nout]qddReference acceleration of path planning
Modelica.Blocks.Interfaces.BooleanOutput[nout]moving= true, if end position not yet reached; = false, if end position reached or axis is completely at rest

Components

TypeNameDefaultDescription
SI.TimeendTimeTime instant at which movement stops

Revisions

  • March 24, 2007 by Martin Otter:
    Non-standard Modelica function "constrain(..)" replaced by standard Modelica implementation (via internal function position()).
    New output signal "moving" added.
  • June 27, 2001 by Bernhard Bachmann.
    Bug fixed that element is also correct if startTime is not zero.
  • Nov. 3, 1999 by Martin Otter:
    Vectorized and moved from Rotational to Blocks.Sources.
  • June 29, 1999 by Martin Otter:
    realized.