.ObsoleteModelica3.Mechanics.MultiBody.Sensors.AbsoluteSensor

Information

Absolute kinematic quantities of frame_a are computed and provided at the output signal connector y in packed format in the order

  1. absolute position vector (= r_abs)
  2. absolute velocity vector (= v_abs)
  3. absolute acceleration vector (= a_abs)
  4. 3 angles to rotate the world frame into frame_a (= angles)
  5. absolute angular velocity vector (= w_abs)
  6. absolute angular acceleration vector (= z_abs)

For example, if parameters get_v and get_w are true and all other get_XXX parameters are false, then y contains 6 elements:

 y[1:3] = absolute velocity
 y[4:6] = absolute angular velocity

In the following figure the animation of an AbsoluteSensor component is shown. The light blue coordinate system is frame_a and the yellow arrow is the animated sensor.

If frame_resolve is connected to another frame, then the provided absolute kinematic vectors are resolved in this frame. If frame_resolve is not connected then the coordinate system in which the relative quantities are resolved is defined by parameter resolveInFrame_a. If this parameter is true, then the provided kinematic vectors are resolved in frame_a of this component. Otherwise, the kinematic vectors are resolved in the world frame. For example, if frame_resolve is not connected and if resolveInFrame_a = false, and get_v = true, then

  y = der(frame_a.r) // resolved in world frame

is returned, i.e., the derivative of the distance frame_a.r_0 from the origin of the world frame to the origin of frame_a, resolved in the world frame.

Note, the cut-force and the cut-torque in frame_resolve are always zero, whether frame_resolve is connected or not.

If get_angles = true, the 3 angles to rotate the world frame into frame_a along the axes defined by parameter sequence are returned. For example, if sequence = {3,1,2} then the world frame is rotated around angles[1] along the z-axis, afterwards it is rotated around angles[2] along the x-axis, and finally it is rotated around angles[3] along the y-axis and is then identical to frame_a. The 3 angles are returned in the range

    -p <= angles[i] <= p

There are two solutions for "angles[1]" in this range. Via parameter guessAngle1 (default = 0) the returned solution is selected such that |angles[1] - guessAngle1| is minimal. The transformation matrix between the world frame and frame_a may be in a singular configuration with respect to "sequence", i.e., there is an infinite number of angle values leading to the same transformation matrix. In this case, the returned solution is selected by setting angles[1] = guessAngle1. Then angles[2] and angles[3] can be uniquely determined in the above range.

Note, that parameter sequence has the restriction that only values 1,2,3 can be used and that sequence[1] ≠ sequence[2] and sequence[2] ≠ sequence[3]. Often used values are:

  sequence = {1,2,3}  // Cardan angle sequence
           = {3,1,3}  // Euler angle sequence
           = {3,2,1}  // Tait-Bryan angle sequence

Exact definition of the returned quantities:

  1. r_abs is vector frame_a.r_0, resolved according to table below.
  2. v_abs is vector der(frame_a.r_0), resolved according to table below.
  3. a_abs is vector der(der(frame_a.r_0)), resolved according to table below.
  4. angles is a vector of 3 angles such that frame_a.R = Frames.axesRotations(sequence, angles).
  5. w_abs is vector Modelica.Mechanics.MultiBody.Frames.angularVelocity1(frame_a.R, der(frame_a.R)), resolved according to table below.
  6. z_abs is vector der(w_abs) (= derivative of absolute angular velocity of frame_a with respect to the world frame, resolved according to table below).
frame_resolve is resolveInFrame_a = vector is resolved in
connected true frame_resolve
connected false frame_resolve
not connected true frame_a
not connected false world frame


Generated at 2024-12-22T19:25:51Z by OpenModelicaOpenModelica 1.24.3 using GenerateDoc.mos