注意:以下配置有缺陷,非完美支持,留坑待填,请绕道
0. 说明
- IDE环境:Qt 5.12
- 编译器:MinGW
- 系统:Windows 10
之前有网友说这个框架只适合在ubuntu下玩,我不太同意这个观点,这就是个C++库嘛,能正常编译不就行了吗?
1. 依赖库的版本查看
KDL库是依赖与Eigen库的,不多赘述,直接通过KDL库中的CMakeList文件查看Eigen的版本信息。
既然文件里说了,Eigen3的版本为3.1.2及更高,保险起见,就用3.1.2的版本。
下载完,解压文件夹,待用。
2. 环境配置
CMake的配置方式太麻烦,新手容易出问题,我们直接上个简单粗暴的方法(当然,简单粗暴也就意味着可能会存在一些问题),使用qmake进行配置。
直接在*.pro
文件中加入:
# 注意:根据自己的实际情况修改
INCLUDEPATH += G:\CodeBase\eigen_3_1_2
INCLUDEPATH += G:\CodeBase\orocos_kdl
3. 测试
#include <iostream>
#include <Eigen/Dense>
#include <src/frames.hpp>
using namespace Eigen;
using namespace KDL;
using namespace std;
int main()
{
//-------- Eigen测试 ---------
Matrix2d a;
a << 1, 2,
3, 4;
MatrixXd b(2,2);
b << 2, 3,
1, 4;
std::cout << "a + b =\n" << a + b << std::endl;
//------------ KDL测试 -----------
// Vector v = Vector(1,2,3);
KDL::Vector v1(1,2,3); //隐式创建对象
for(int i=0; i<3; ++i){
cout<<v1[i]<<";";
}
cout<<"\n";
KDL::Vector v0 = KDL::Vector::Zero(); //显式创建对象
KDL::Vector vec; //隐式创建对象,调用默认构造函数,成员数据被初始化为0
cout<<vec.x()<<";"<<vec.y()<<";"<<vec.z()<<"\n";
// std::cout<<v.data[0]<<std::endl; //获取数组的第一个元素
for(int i=0; i<3; ++i){
cout<<v0(i)<<" "; //循环输出数组的元素
}
cout<<"\n";
cout<<v0.x()<<" "; //获取数组的第一个元素
cout<<v0[0]; //获取数组的第一个元素
return 0;
}
可以看到程序正常运行,环境搭建问题解决√