注意:以下配置有缺陷,非完美支持,留坑待填,請繞道
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;
}
可以看到程序正常運行,環境搭建問題解決√