Absolute kinematic quantities of frame_a are computed and provided at the output signal connector y in packed format in the order
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:
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 |