从C++ Eigen::Transform<double, 2, Eigen::Affine> 对象获取坐标x,y和角度yaw
时间: 2024-03-09 12:49:04 浏览: 231
用C++编写的坐标转换源码
3星 · 编辑精心推荐
您可以使用Eigen库中的Transform对象的translation()和rotation()函数来获取2D仿射变换对象的平移和旋转分量。其中,translation()函数返回的是平移向量,也就是表示x和y坐标的向量;rotation()函数返回的是旋转矩阵,你可以通过计算矩阵的反正切值来得到角度yaw。
具体代码示例如下:
```c++
Eigen::Transform<double, 2, Eigen::Affine> transform = ...; // 从某处获取Transform对象
Eigen::Vector2d translation = transform.translation(); // 获取平移向量
double x = translation.x(); // 获取x坐标
double y = translation.y(); // 获取y坐标
Eigen::Matrix2d rotationMatrix = transform.rotation(); // 获取旋转矩阵
double yaw = atan2(rotationMatrix(1, 0), rotationMatrix(0, 0)); // 计算角度yaw
```
其中,Eigen::Vector2d和Eigen::Matrix2d分别是Eigen库中表示2D向量和矩阵的类型,可以根据需要调整数据类型。
阅读全文