5.1.44 Угловая ориентация

 Данный метод создает не один датчик, а массив датчиков. Поэтому тип объекта, создаваемого этим методом, записывается в файле проекта не sensor, а sensor_array.
Угловая ориентация узла Node2 представляется как результат последовательности трех поворотов (, , ), в начале которых узел Node2 совпадает с узлом Node1. Последовательность поворотов задается вращением вокруг осей , , . Первый поворот вокруг оси , второй – вокруг оси , третий – вокруг оси . Каждый из параметров , ,  может принимать одно из значений axisX:, axisY:, axisZ:. При этом должны выполняться условия , .
Датчики массива являются дифференцируемыми по параметрам положения механизма, если узлы Node1 и Node2 прикреплены к звеньям.
При определении значений углов , ,  могут возникнуть математические трудности. Если  и  () оси первого и третьего поворотов совпадают, так что углы  и  нельзя отличить друг от друга. Если  и  () оси первого и третьего поворотов совпадают, так что углы  и  нельзя отличить друг от друга. В этих случаях значения датчиков массива и их производных неопределенны.
Синтаксис метода создания
orientation(Node1, Node2, axisI, axisJ, axisK)
Обязательные позиционные параметры метода
node Node1
Первый узел.
node Node2
Второй узел.
axisI = [axisX:/axisY:/axisZ]
Ось, вокруг которой осуществляется первый поворот.
 axisX:
Ось X.
 axisY:
Ось Y.
 axisZ:
Ось Z.
axisJ = [axisX:/axisY:/axisZ]
Ось, вокруг которой осуществляется второй поворот.
 axisX:
Ось X.
 axisY:
Ось Y.
 axisZ:
Ось Z.
axisK = [axisX:/axisY:/axisZ]
Ось, вокруг которой осуществляется третий поворот.
 axisX:
Ось X.
 axisY:
Ось Y.
axisZ:
Ось Z.
Описание
В общем случае могут быть заданы 12 комбинаций трех последовательных поворотов. Наиболее часто используемыми на практике являются следующие комбинации:
, ,   axisX:, axisY:, axisZ: - углы Кардана;
, ,   axisZ:, axisX:, axisZ: - углы Эйлера;
, ,   axisY:, axisX:, axisZ: - корабельные углы Крылова;
, ,   axisY:, axisZ:, axisX: - самолетные углы;
, ,   axisZ:, axisY:, axisX: - ракетные углы.
Углы Кардана
Углы Кардана представляют собой последовательность трех поворотов , ,  (Рис. 143). Первый поворот на угол  выполняется вокруг оси . Второй поворот на угол  выполняется вокруг оси . Третий поворот на угол  выполняется вокруг оси . Ниже проведен пример задания датчика угловой ориентации для определения углов Кардана.
Пример
sensor_array cardanAngles ”углы Кардана” = orientation(Node1, Node2, axisX:, axisY:, axisZ:);
 
Рис. 143. Углы Кардана
 
При определении углов Кардана существует критический случай, когда  (). При этом оси первого и третьего поворотов совпадают, так что углы  и  нельзя отличить друг от друга. В этом случае значения датчиков массива и их производных неопределенны.
В случае, когда все три угла близки к нулю, при определении углов Кардана не возникает математических особенностей. По этой причине углы Кардана особенно удобны, когда звено движется таким образом, что узел Node2, прикрепленный к этому звену, незначительно отклоняется от узла Node1, прикрепленного к другому звену.
Углы Эйлера
Углы Эйлера представляют собой последовательность трех поворотов , , . Ниже проведен пример задания датчика угловой ориентации для определения углов Эйлера.
Пример
sensor_array anglesR “углы Эйлера” = orientation(Node1, Node2, axisZ:, axisX:, axisZ:);
 
При определении углов Эйлера существует критический случай, когда  (). При этом оси первого и третьего поворотов совпадают, так что углы  и  нельзя отличить друг от друга. В этом случае значения датчиков массива и их производных неопределенны.
Корабельные углы Крылова
В кораблестроении принято использовать следующую последовательность поворотов -  (курс),  (крен),  (дифферент). Ниже проведен пример задания датчика угловой ориентации для определения корабельных углов.
Пример
sensor_array anglesS “корабельные углы Крылова” = orientation(Node1, Node2, axisY:, axisX:, axisZ:)
 
При определении корабельных углов существует критический случай, когда  (). При этом оси первого и третьего поворотов совпадают, так что углы  и  нельзя отличить друг от друга. В этом случае значения датчиков массива и их производных неопределенны.
Самолетные углы
В самолетостроении принято использовать следующую последовательность поворотов -  (рыскание),  (тангаж),  (крен). Ниже проведен пример задания датчика угловой ориентации для определения самолетных углов.
Пример
sensor_array anglesF “самолетные углы” = orientation(Node1, Node2, axisY:, axisZ:, axisX:);
 
При определении самолетных углов существует критический случай, когда  (). При этом оси первого и третьего поворотов совпадают, так что углы  и  нельзя отличить друг от друга. В этом случае значения датчиков массива и их производных неопределенны.
 
Ракетные углы
В ракетостроении принято использовать следующую последовательность поворотов -  (тангаж),  (рыскание),  (крен). Ниже проведен пример задания датчика угловой ориентации для определения ракетных углов.
Пример
sensor_array anglesR “ракетные узлы” = orientation(Node1, Node2, axisZ:, axisY:, axisX:);
 
При определении ракетных углов существует критический случай, когда  (). При этом оси первого и третьего поворотов совпадают, так что углы  и  нельзя отличить друг от друга. В этом случае значения датчиков массива и их производных неопределенны.
Внутренние системные объекты
sensor fiI [angle]
Угол первого поворота.
sensor fiJ [angle]
Угол второго поворота.
sensor fiK [angle]
Угол третьего поворота.