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.

Distance animation

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).


DLR logo 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