最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++之eigen安裝與測(cè)試方式

 更新時(shí)間:2022年12月15日 10:00:32   作者:后廠(chǎng)村路蔡徐坤  
這篇文章主要介紹了C++之eigen安裝與測(cè)試方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++eigen安裝與測(cè)試

1、eigen庫(kù)安裝

1)方法一:源碼安裝(推薦)

官網(wǎng)下載、或git下載eigen源碼

cd eigen
mkdir build
cd build
cmake ..
sudo make install
#安裝后,頭文件安裝在/usr/local/include/eigen3/
#移動(dòng)頭文件
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

2)方法二:直接安裝(不推薦)

這種方法安裝eigen庫(kù),比較簡(jiǎn)單,但是eigen不一定是最新版本。

sudo apt install libeigen3-dev
//若默認(rèn)安裝的是/usr/local/include/eigen3/Eigen 下,將Eigen文件夾拷貝一份到/usr/local/include 下
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include?
sudo cp -r /usr/local/include/eigen3 /usr/include

2、查看eigen的版本號(hào)

pkg-config --modversion eigen3

如果可以正確查看版本號(hào),一般說(shuō)明eigen庫(kù)安裝成功

C++ eigen使用

eigen幾何模塊的使用方法

旋轉(zhuǎn)向量 R

利用Eigen::AngleAxisd(參數(shù):角度,軸)得到

//沿 Z 軸旋轉(zhuǎn) 45 度
Eigen::AngleAxisd rotation_vector ( M_PI/4, Eigen::Vector3d ( 0,0,1 ) );?
//由角軸得到旋轉(zhuǎn)變量
Eigen::Matrix3d R = Eigen::AngleAxisd(M_PI/2, Eigen::Vector3d(0,0,1)).toRotationMatrix()

旋轉(zhuǎn)矩陣 Eigen::Matrix3d

//在這里插入代碼片`旋轉(zhuǎn)向量轉(zhuǎn)換到旋轉(zhuǎn)矩陣
?rotation_vector.toRotationMatrix();?

歐拉角

//( 2,1,0 )表示ZYX順序,即roll pitch yaw順序,將旋轉(zhuǎn)矩陣轉(zhuǎn)換到歐拉角
Eigen::Vector3d rotation_matrix.eulerAngles ( 2,1,0 )

四元數(shù)

//定義四元數(shù)
Eigen::Quaterniond q = Eigen::Quaterniond (rotation_vector);
//旋轉(zhuǎn)矩陣定義四元素
q = Eigen::Quaterniond (rotation_matrix);

歐拉角與四元數(shù)相互轉(zhuǎn)換

// 歐拉角轉(zhuǎn)四元數(shù) R-P-Y
Eigen::Vector3d eulerAngle(yaw,pitch,roll);
Eigen::AngleAxisd rollAngle(AngleAxisd(eulerAngle(2),Vector3d::UnitX()));
Eigen::AngleAxisd pitchAngle(AngleAxisd(eulerAngle(1),Vector3d::UnitY()));
Eigen::AngleAxisd yawAngle(AngleAxisd(eulerAngle(0),Vector3d::UnitZ()));
?
Eigen::Quaterniond quaternion;
quaternion=yawAngle*pitchAngle*rollAngle;

//四元數(shù)轉(zhuǎn)歐拉角 R-P-Y
Eigen::Vector3d eulerAngle=quaternion.matrix().eulerAngles(2,1,0);

四元數(shù)、歐拉角轉(zhuǎn)換實(shí)例。

以下代碼在歐拉角出現(xiàn)pi/2時(shí),以及大于pi時(shí)會(huì)出現(xiàn)問(wèn)題。

#include <iostream>
#include <cmath>
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Geometry>

using namespace std;
int main()
{
? ? Eigen::Vector3d eulerAngle(M_PI/3,M_PI/5,M_PI/4);
? ? cout<<"roll(X) pitch(Y) yaw(Z)=\n"<< eulerAngle.transpose()<<endl<<endl;

? ? Eigen::AngleAxisd rollAngle(Eigen::AngleAxisd(eulerAngle(0),Eigen::Vector3d::UnitX()));
? ? Eigen::AngleAxisd pitchAngle(Eigen::AngleAxisd(eulerAngle(1),Eigen::Vector3d::UnitY()));
? ? Eigen::AngleAxisd yawAngle(Eigen::AngleAxisd(eulerAngle(2),Eigen::Vector3d::UnitZ()));

? ? Eigen::Quaterniond quaternion;
? ? quaternion=rollAngle*pitchAngle*yawAngle;
? ? Eigen::Vector3d eulerAngle_1=quaternion.matrix().eulerAngles(0,1,2);?
? ? cout<<"roll(X) pitch(Y) yaw(Z)=\n"<< eulerAngle_1.transpose()<<endl<<endl;?

?? ?//Eigen::Vector3d eulerAngle(roll,pitch,yaw);
?? ?//Eigen::AngleAxisd rollAngle(AngleAxisd(eulerAngle(0),Vector3d::UnitX()));
?? ?//Eigen::AngleAxisd pitchAngle(AngleAxisd(eulerAngle(1),Vector3d::UnitY()));
?? ?//Eigen::AngleAxisd yawAngle(AngleAxisd(eulerAngle(2),Vector3d::UnitZ()));
?? ?//Eigen::Quaterniond quaternion;
?? ?//quaternion=yawAngle*pitchAngle*rollAngle;
?? ?//Eigen::Vector3d eulerAngle=quaternion.matrix().eulerAngles(2,1,0);
?? ?
? ? Eigen::Quaterniond quaternion2(-0.5,0,0,1);?
? ? Eigen::Vector3d eulerAngle_2=quaternion2.matrix().eulerAngles(2,1,0);
? ? cout<<"yaw(Z) pitch(Y) roll(Z)=\n"<< eulerAngle_2.transpose()<<endl<<endl; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? return 0;
}

g++ test.cpp

tf 實(shí)現(xiàn)四元數(shù)到歐拉角轉(zhuǎn)換接口使用及測(cè)試

#include <iostream>
#include <tf/transform_datatypes.h>//轉(zhuǎn)換函數(shù)頭文件
#include <nav_msgs/Odometry.h>//里程計(jì)信息格式

using namespace std;
int main ()
{
? ? tf::Quaternion quat(0,0,1,-0.5);
? ? double roll, pitch, yaw;//定義存儲(chǔ)r\p\y的容器

? ? tf::Matrix3x3(quat).getRPY(roll, pitch, yaw);//進(jìn)行轉(zhuǎn)換
? ? cout << "roll:" << roll << "\npitch:" << pitch << "\nyaw:" << yaw << endl;
? ? return 0;
}

直接編譯命令:

g++ `pkg-config --libs --cflags tf` -ldl tf_test.cpp

歐式變換矩陣(其次坐標(biāo)包含R,t)

//雖然稱(chēng)為3d(指3維空間的歐式坐標(biāo)),實(shí)質(zhì)上是4*4的矩陣, 旋轉(zhuǎn)R + 平移T
Eigen::Isometry3d T=Eigen::Isometry3d::Identity();
//按照rotation_vector進(jìn)行旋轉(zhuǎn)
T.rotate (rotation_vector);
//按四元數(shù)表示的旋轉(zhuǎn)
Eigen::Isometry3d T(q);
//把平移向量設(shè)成(1,3,4)
T.pretranslate (Eigen::Vector3d ( 1,3,4 ));?

Eigen::Map 數(shù)組、向量及矩陣的引用。

double parameters[7] = {0, 0, 0, 1, 0, 0, 0};
//quaterd為parameters的引用
Eigen::Map<const Quaterniond> quaterd(parameters[0]);
//同Eigen::Map<const Quaterniond> quaterd(parameters);
//quaterd為parameters[4]的引用,由于元素地址連續(xù)
Eigen::Map<const Eigen::Vector3d> trans(parameters[0] + 4);
//同Eigen::Map<const Eigen::Vector3d> trans(parameters + 4);

引用:類(lèi)似于變量的別名,一旦指定,不可改變,與變量值綁定

指針:指針存放變量的地址??筛?/p>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++?std::copy與memcpy區(qū)別小結(jié)

    C++?std::copy與memcpy區(qū)別小結(jié)

    本文主要介紹了C++?std::copy與memcpy區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • OpenCV使用鄰居訪(fǎng)問(wèn)掃描圖像的操作方法

    OpenCV使用鄰居訪(fǎng)問(wèn)掃描圖像的操作方法

    在圖像處理中,有時(shí)需要根據(jù)某個(gè)像素的相鄰像素的值計(jì)算該像素位置的值,當(dāng)這個(gè)鄰域包括上一行和下一行的像素時(shí),就需要同時(shí)掃描圖像的多行像素,本節(jié)中我們將介紹如何通過(guò)鄰居訪(fǎng)問(wèn)掃描圖像,感興趣的朋友一起看看吧
    2023-01-01
  • 解析C/C++?Capstone?引擎源碼編譯問(wèn)題

    解析C/C++?Capstone?引擎源碼編譯問(wèn)題

    Capstone的編譯非常簡(jiǎn)單只需要一步即可輕松得到對(duì)應(yīng)的Lib庫(kù)文件,如下將介紹該引擎如何被編譯,以及簡(jiǎn)單的測(cè)試編譯,這篇文章主要介紹了C/C++?Capstone?引擎源碼編譯,需要的朋友可以參考下
    2022-09-09
  • C++的數(shù)據(jù)共享與保護(hù)你了解嗎

    C++的數(shù)據(jù)共享與保護(hù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言零基礎(chǔ)入門(mén)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 簡(jiǎn)單聊聊C++中線(xiàn)程的原理與實(shí)現(xiàn)

    簡(jiǎn)單聊聊C++中線(xiàn)程的原理與實(shí)現(xiàn)

    C++11?引入了多線(xiàn)程支持,提供了一套基本的線(xiàn)程庫(kù),包括線(xiàn)程、互斥量(mutex)、條件變量(condition_variable)等。這些組件可以幫助你在?C++?程序中實(shí)現(xiàn)并發(fā)和多線(xiàn)程編程,本文就來(lái)和大家簡(jiǎn)單聊聊吧
    2023-03-03
  • C++萬(wàn)能庫(kù)頭文件在vs中的安裝步驟(圖文)

    C++萬(wàn)能庫(kù)頭文件在vs中的安裝步驟(圖文)

    這篇文章主要介紹了C++萬(wàn)能庫(kù)頭文件在vs中的安裝步驟(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷游戲

    基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>
    2022-01-01
  • Qt自定義實(shí)現(xiàn)一個(gè)等待提示Ui控件

    Qt自定義實(shí)現(xiàn)一個(gè)等待提示Ui控件

    等待樣式控件是我們?cè)谧鯱I時(shí)出場(chǎng)率還挺高的控件之一,所以這篇文章主要為大家介紹了Qt如何自定義一個(gè)好看的等待提示Ui控件,感興趣的可以了解下
    2024-01-01
  • C++實(shí)現(xiàn)String類(lèi)的方法詳解

    C++實(shí)現(xiàn)String類(lèi)的方法詳解

    在C語(yǔ)言中,沒(méi)有專(zhuān)門(mén)用來(lái)表示字符串的類(lèi)型。雖然C語(yǔ)言為字符串提供了一系列的庫(kù)函數(shù),但這些函數(shù)與字符串這個(gè)類(lèi)型是分開(kāi)的。所以在C++中封裝了一個(gè)string類(lèi),來(lái)幫助我們操作字符串,本文就為大家提供了實(shí)現(xiàn)String類(lèi)的方法,需要的可以參考一下
    2022-08-08
  • C++實(shí)現(xiàn)尋找最低公共父節(jié)點(diǎn)的方法

    C++實(shí)現(xiàn)尋找最低公共父節(jié)點(diǎn)的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)尋找最低公共父節(jié)點(diǎn)的方法,是數(shù)據(jù)結(jié)構(gòu)中二叉樹(shù)的一個(gè)經(jīng)典算法,有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

博乐市| 曲水县| 汉川市| 锡林浩特市| 潞城市| 苍山县| 灵山县| 金乡县| 蓬溪县| 烟台市| 无锡市| 昌吉市| 崇仁县| 香河县| 玛沁县| 蛟河市| 区。| 青川县| 芜湖市| 阿拉善左旗| 扎鲁特旗| 邯郸县| 册亨县| 通江县| 寻甸| 绥化市| 宁南县| 华亭县| 阿拉善左旗| 信宜市| 镇远县| 成都市| 武胜县| 东乌珠穆沁旗| 七台河市| 无棣县| 蓝山县| 大悟县| 桦川县| 广河县| 隆昌县|