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 der(…)
operator).
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 > ssmall, 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 ssmall, 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
ssmall.
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*ssmall).
Developed 2010 at the DLR Institute of System Dynamics and Control