Получение угла поворота от Eigen :: Isometry2d - PullRequest
0 голосов
/ 29 января 2020

Я работаю с библиотекой Eigen и, в частности, с 2-мерными изометриями для представления позы объекта в 2D-мире.

Как вы, возможно, знаете, здесь есть три компонента: x и y для положения и угол theta для вращения.

Извлечение компонентов положения выполняется просто:

Eigen::Isometry2d t;
double x = t.translation().x();
double y = t.translation().y();

Для поворота можно использовать формулу, например:

double theta = atan2(t(1, 0), t(0, 0));

Это проверено и работает нормально, но писать это все время неудобно. Поэтому мой вопрос заключается в том, знает ли кто-нибудь более хороший способ получить theta, просто вызывая собственные методы.

1 Ответ

1 голос
/ 29 января 2020

Вы можете построить объект Rotation2Dd из линейной части преобразования (и, если вы предпочитаете иметь скаляр, извлеките угол, используя .angle()):

double theta = Eigen::Rotation2Dd(t.linear()).angle();
...