Я использую eulerAngles
Эйгена, чтобы получить углы крена, тангажа и рыскания из матрицы вращения следующим образом:
const Eigen::Vector3f yaw_pitch_roll = rotation.eulerAngles(2, 1, 0);
, где rotation
- какое-то действительное матрица вращения типа Eigen::Matrix3f
.
То, что я наблюдаю: если все три угла близки к нулю, т.е. если матрица вращения близка к единице, некоторые или все три результирующих угла иногда отключаются Pi, то есть на 180 градусов.
Это может произойти и с некоторыми другими поворотами, но пока я наблюдал это только близко к идентичности.
- Можно ли этого избежать как-нибудь?
- Какие другие углы, кроме (0, 0, 0), могут быть особыми точками?