Windows 10(64bits) + VMware 16 Pro + Ubuntu 20.04 + VS Code 2022
PCL 1.10 + Eigen3
PCL库
Eigen库
直接使用文本编辑器写代码的时候,库是由CMakeLists.txt进行链接的,但是用VS Code打开是,代码头文件中PCL库和Eigen库下面会有波浪线,像这样:
配置过程:
ctrl+shift+P——>C/C++:Edit Configuration中增加库的文件路径,库文件通常在/usr/include/中,或者对应上自己库的位置就可以。
这里要注意的是:
#include
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/pcl-1.10",
"/usr/include/eigen3"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu17",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
旋转矩阵是33的,变换矩阵是44的,变换矩阵最后一列是平移向量。求两向量的旋转矩阵由Eigen完成,省去很多敲公式的时间。
//创建两个向量
Eigen::Vector3d VectorBefore(a, b, c);
Eigen::Vector3d VectorAfter(x, y, z);
//创建旋转矩阵、变换矩阵、位移向量
Eigen::Matrix3d rotationMatrix;
Eigen::Matrix4d transformMatrix;
transformMatrix.setIdentity();
Eigen::Vector3d t(0, 0, 0);
//求两向量旋转矩阵
rotationMatrix = Eigen::Quaterniond::FromTwoVectors(VectorBefore, VectorAfter).toRotationMatrix();
//旋转矩阵和平移向量凑成变换矩阵
transformMatrix.block<3, 3>(0, 0) = rotationMatrix;
transformMatrix.topRightCorner(3, 1) = t;
//点云变换
pcl::transformPointCloud(*cloud_in, *cloud_out, transformMatrix);
Eigen库使用教程: C++矩阵库 Eigen 快速入门