RelativeAngles
Measure relative angles between two frame connectors
Library
Modelica/Mechanics/MultiBody/Sensors
Description
This model determines the 3 angles to rotate frame_a into frame_b along the axes defined by parameter sequence. For example, if sequence = {3,1,2} then frame_a 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_b. 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 relative transformation matrix between frame_a and frame_b may be in a singular configuration with respect to "sequence", i.e., there is an infinite number of angle values leading to the same relative 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.
The 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 or Tait-Bryan angle sequence = {3,1,3} // Euler angle sequence = {3,2,1}
Parameters
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_sequence | sequence | Angles are returned to rotate frame_a around axes sequence[1], sequence[2] and finally sequence[3] into frame_b | Vector of size 3 | |
mo_guessAngle1 | guessAngle1 | Select angles[1] such that abs(angles[1] - guessAngle1) is a minimum | Scalar |
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_angles | angles | angles | Structure | |
mo_angles/fixed | fixed | Cell of vectors of size 3 | true | |
mo_angles/start | start | Cell of vectors of size 3 |
Ports
Name | Type | Description | IO Type | Number |
---|---|---|---|---|
frame_a | implicit | Coordinate system a | input | 1 |
frame_b | implicit | Coordinate system b | output | 1 |
angles | implicit | Angles to rotate frame_a into frame_b via 'sequence' | output | 2 |