The **distance** between the origins of `frame_a`

and of `frame_b`

are determined and provided at the
output signal connector `distance`

. This
distance is always positive. **Derivatives** of this
signal can be easily obtained by connecting the
block
Modelica.Blocks.Continuous.Der
to `distance`

(this block performs analytic differentiation
of the input signal using the

operator).
**der**(…)

In the following figure the animation of the
sensor is shown. The light blue coordinate system is
`frame_a`

, the dark blue coordinate system is `frame_b`

,
and the yellow arrow is the animated sensor.

If the distance is smaller then the parameter `s_small`

(in the "Advanced" menu), it is approximated such that its derivative is
finite for zero distance. Without such an approximation, the derivative would
be infinite and a division by zero would occur. The approximation is performed
in the following way: If distance > `s`_{small}, it is
computed as sqrt(`r`*`r`) where `r` is the
position vector from the origin of `frame_a`

to the origin of `frame_b`

.
If the distance becomes smaller then `s`_{small}, the "sqrt()"
function is approximated by a second order polynomial, such that the function
value and its first derivative are identical for sqrt() and the polynomial at
`s`_{small}.
Furthermore, the polynomial passes through zero. The effect is, that the distance
function is continuous and differentiable everywhere. The derivative at zero distance
is 3/(2*`s`_{small}).

**Developed 2010 at the DLR Institute of System Dynamics and Control**

Generated at 2024-05-20T18:15:57Z by OpenModelicaOpenModelica 1.22.4 using GenerateDoc.mos