cmake+Eigen库

这篇具有很好参考价值的文章主要介绍了cmake+Eigen库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

1、本文内容
在自己的程序中使用Eigen库,用cmake实现

2、平台
windows,linux
3、转载请注明出处:
https://blog.csdn.net/qq_41102371/article/details/126319996

准备

下载Eigen源码放在想要的位置,此处为source_code,并解压
https://eigen.tuxfamily.org/index.php?title=Main_Page
以当前下载的cmake3.4为例,解压后的目录结构为source_code/eigen-3.4.0
cmake+Eigen库

通过cmake安装

cd source_code
cmake -S ./eigen-3.4.0 -B ./build_eigen -DCMAKE_INSTALL_PREFIX="D:/carlos/install/Eigen"
cmake --build ./build_eigen --target install

其中-DCMAKE_INSTALL_PREFIX="D:/carlos/install/Eigen"就是你想安装的位置,成功安装完成之后,会在相应位置找到Eigen
cmake+Eigen库

使用

实现欧拉角转旋转矩阵的程序euler2rt.cpp

#include <Eigen/Core>
#include <Eigen/Dense>
#include <iostream>
#define PI 3.1415926

int main(int argc, char* argv[]){
    std::cout<<PI<<std::endl;
    if(argc<4){
        std::cout<<"please input a 3x1 vector,for example:\neuler2rt 45 30 60"<<std::endl;
        return 0;  
    }
    
    Eigen::Vector3d eulerAngle(atof(argv[1]),atof(argv[2]),atof(argv[3]));
    std::cout<<"eulerAngle:\nx: "<<eulerAngle[0]<<"    y: "<<eulerAngle[1]<<"    z: "<<eulerAngle[2]<<std::endl;
    eulerAngle=eulerAngle/180*PI;


    Eigen::Matrix3d rotation_matrix = Eigen::Matrix3d::Identity();
        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()));


    rotation_matrix=rollAngle*pitchAngle*yawAngle;

    std::cout<<"rotation_matrix:\n"<<rotation_matrix<<std::endl;
    Eigen::Vector3d eulerAngle2=rotation_matrix.eulerAngles(0,1,2);
     std::cout<<"eulerAngle:\nx: "<<eulerAngle2[0]/PI*180<<"    y: "<<eulerAngle2[1]/PI*180<<"    z: "<<eulerAngle2[2]/PI*180<<std::endl;

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
project(Euler2rt)
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIRS})
add_executable (euler2rt euler2rt.cpp)

编译

cmake -S ./ -B ./build -DEigen3_DIR="D:/carlos/install/Eigen/share/eigen3/cmake"
cmake --build ./build --config Release --parallel 8

其中,-DEigen3_DIR就是指定Eigen安装路径下cmake的路径

参考

四元数、罗德里格斯公式、欧拉角、旋转矩阵推导和资料 https://blog.csdn.net/qq_41102371/article/details/126002167

--------------------------------------------------------------------------------------------202208文章来源地址https://www.toymoban.com/news/detail-400404.html

到了这里,关于cmake+Eigen库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [vscode]vscode运行cmake时候exe不执行而且前面多一些字符

    遇到一个奇怪问题,你单独打开cmd去执行vscode编译过程序没问题,但是你在vscode确不会执行,这是因为vscode没有读取到电脑环境变量导致加载DLL失败,但是在vscode终端不会给你提示少DLL,需要你自己把DLL复制到exe目录即可解决问题。还有个问题你运行代码时候,终端会多一些字

    2024年02月13日
    浏览(44)
  • 【gcc, cmake, eigen, opencv,ubuntu】一.gcc介绍

    gcc介绍和makefile介绍 1.查看当前gcc 版本 2.安装其他版本的gcc 这样我们电脑里包含gcc-9 和 gcc-10两个版本。 那么如何设置我们编译的时候选用哪一个版本呢? 首先运行下 发现结果没有变化仍是 gcc 9.4.0 3.设置多个版本的优先级 update-alternatives是ubuntu系统中专门维护系统命令链接

    2024年02月09日
    浏览(40)
  • 【gcc, cmake, eigen, opencv,ubuntu】二.gcc编译选项

    1.-march=native 其中-march选项就是就是指定目标架构的名字,gcc就会生成针对目标架构优化的目标代码,如-march=prescott会生成针对i5或i7的目标码,从而充分发挥cpu的性能。自gcc4.2,引入了-march=native,从而允许编译器自动探测目标架构并生成针对目标架构优化的目标代码,这比手

    2024年02月09日
    浏览(42)
  • 【gcc, cmake, eigen, opencv,ubuntu】五.CMakeLists.txt编写

    1.CMakeLists.txt模板 一个使用opencv 的 CMakeLists.txt 对应的目录: 2.设置编程语言版本 3.设置编译类型Debug,Release 4.设置获取文件列表 MATH_LIB_SRC 指示:找到的math目录下的 c文件 5.添加include目录 表示在src/include/目录中寻找头文件 include_directories(src/include) 6.配置编译选项 add_compile_

    2024年02月09日
    浏览(39)
  • 【Excel】快速提取某个符号前面的数据内容

    【问题描述】 在使用excel整理数据过程中,经常与需要调整数据后,进行使用。 例如凭证导出后,科目列是包含科目编码和科目名称的。 但由于要将数据复制到其他的导入模板上使用,对应的模板只需要科目编码,不需要科目名称。 所以需要将导出的数据进行修改后使用,

    2024年02月07日
    浏览(41)
  • Ubuntu使用cmake和vscode开发自己的项目,引用自己的头文件和openCV

    创建文件夹 继续创建include 和 src文件夹,形成如下的目录结构 用vscode打开项目 创建add.h add.cpp main.cpp 形成这样的目录结构 在my_proj中创建CMakeLists.txt,写入如下内容 BUILD_TYPR 设置为Debug可以打断点调试 在my_proj中创建build.sh,写入如下内容 修改build.sh文件的权限 运行build.sh 在

    2024年02月07日
    浏览(43)
  • [CMakeLists]使用CMake后如何将目录内容复制到build目录

    你可以用add_custom_command. 说你的目标被调用 MyTarget ,然后你可以这样做: 每次构建 MyTarget 并将\\\"/ config\\\"的内容复制到目标exe/lib最终的目录时,都会执行此操作. 正如马克Lakata在下面评论指出,更换 PRE_BUILD 用 POST_BUILD 在 add_custom_command 确保复制如果生成成功才会发生. 说明 ${CMAKE_CO

    2024年02月16日
    浏览(37)
  • 【colab】谷歌colab免费服务器训练自己的模型,本文以yolov5为例介绍流程

    目录 一.前言 二.准备工作 1.注册Google drive(谷歌云盘) Google Driver官网:https://drive.google.com/drive/ Colab官网:https://colab.research.google.com/ 2.上传项目文件 3.安装Colaboratory 4.colab相关操作和命令 5.项目相关操作  三.异常处理         本文介绍了在谷歌开放平台Google colab上租用免

    2023年04月08日
    浏览(51)
  • 使用CMake交叉编译Arm Linux程序

    注意,工具链文件的指定一定要紧跟cmake命令之后,不能放到 … 后面构建arm架构cmake 工程里新建一个文件叫arm_linux_setup.cmake arm_linux_setup.cmake内容如下

    2024年02月03日
    浏览(53)
  • ubuntu 上vscode使用cmake编译运行c++程序

    参考:ubuntu 上vscode使用cmake编译运行c++程序_vscode ubuntu运行c++程序_SCH0的博客-CSDN博客 文章是对官方过程的翻译: Get started with CMake Tools on Linux

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包