1. 程式人生 > >ROS中使用Eigen庫

ROS中使用Eigen庫

——參考書《A Systematic Approach to Learning Robot Programming with ROS》
這裡寫圖片描述
ROS中的資料操作需要線性代數,Eigen庫是C++中的線性代數計算庫。它獨立於ROS,但是在ROS中可以使用。在CMakeLists.txt檔案中要做以下配置

#uncomment the following 4 lines to use the Eigen library
find_package(cmake_modules REQUIRED)
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR}
) add_definitions(${EIGEN_DEFINITIONS})

在原始碼中要包含以下標頭檔案

#include <Eigen/Eigen>
#include <Eigen/Dense>
#include <Eigen/Geometry>
#include <Eigen/Eigenvalues>

定義一個向量:

Eigen::Vector3d normal_vec(1,2,3); // here is an arbitrary normal vector, initialized to (1,2,3) upon instantiation

將向量變成單位向量

normal_vec/=normal_vec.norm(); // make this vector unit length

定義一個矩陣的形式是:

Eigen::Matrix3d Rot_z;
Rot_z.row(0)<<0,-1,0;  // populate the first row--shorthand method
Rot_z.row(1)<<1, 0,0;  //second row
Rot_z.row(2)<<0, 0,1;  // yada, yada
cout<<"Rot_z: "<<endl;  

可以按行賦值。

矩陣與向量的乘法

v1 = Rot_z*normal_vec; 
//here is how to multiply a matrix times a vector
//although Rot_z and normal_vec are both objects (with associated data and member methods), multiplication is defined,
//resulting in the data members being altered or generated as expected for matrix-vector multiplies

行了,用到了再說吧,頭疼

相關推薦

ROS使用Eigen

——參考書《A Systematic Approach to Learning Robot Programming with ROS》 ROS中的資料操作需要線性代數,Eigen庫是C++中的線性代數計算庫。它獨立於ROS,但是在ROS中可以使用。在CMa

ROS呼叫外部連結檔案(.so)配置方法

舉例說明吧: 1、建立檔案樹如下: myproject: -include --Interface.h -lib --libInterface.so -src --control.cpp

ROS 新增第三方依賴

修改 stack.xml 和manifest.xml 中的 export 標籤是無效的, 具體可以看這裡, ... <export> <cpp cflags="-I../include" /&

ROS 內建eigen的使用

eigen庫 use it eigen_msg.h 可用於 ros getmetry_msgs的各種訊息與 Eigen訊息的型別轉換 namespace tf { /// Converts a Point message into an Eigen Vecto

ROS的CMakeLists.txt

代碼 過程 變量 http 重命名 pen log fix 需要 在ROS的編程過程中,如果CMakeLists.txt如果寫不好,編譯就很難成功。如果看不懂CMakeLists.txt那麽很多錯誤你也不知道時什麽回事。所以深入了解它是很有必要的。現在我們就來看看它。 我

主從復制Last_SQL_Errno: 1062 錯誤

更正解決辦法:修改從庫的mysql的配置文件,/etc/my.cnf,在[mysqld]下面添加一行slave_skip_errors = 1062:wq然後重啟mysql服務本文出自 “運維之路” 博客,請務必保留此出處http://jxlwc.blog.51cto.com/5250102/1977743主

MS Sql Server 主從的配置和使用介紹

money mas 篩選 緩存 事務性 添加 com 對象 報表 https://technet.microsoft.com/zh-cn/ff806143.aspx 網站規模到了一定程度之後,該分的也分了,該優化的也做了優化,但是還是不能滿足業務上對性能的要求;這時候我們

ROS使用OpenCV進行簡單的圖像處理

共享指針 works 文件夾 catch 使用 取圖 hand pack process 實例:從ROS中讀取圖象,轉換後將彩色圖象變成灰度圖象,並返回灰度圖象,轉換後在ROS下輸出。 正文 1. 在ROS下創建工作空間 工作空間(work space)是RO

ROS的基本概念釋義

基本概念 概念 放音 可執行文件 主程序 之間 節點 實現 publisher 1.節點(node) 一個節點是一個可執行文件.可以理解為一個main主程序,用來實現一個功能,比如播放MP3. 2.發布者(Publisher)和訂閱者(Subscriber) 發布者和

ROS使用IMU傳感器發布消息

ret creat mean tac work pan stop 實現 ini   下面使用SYD Dynamics的9軸AHRS(Attitude and heading reference system),來發布sensor_msgs/Imu類型的消息。   將傳感

C# NPOI 讀寫 Excel 文件的方法【摘】

prot case enter this num ack npoi 工作薄 解鎖 原作:淡水網誌 NPOI 是開源的 POI 項目的.NET版,可以用來讀寫Excel,Word,PPT文件。在處理Excel文件上,NPOI 可以同時兼容 xls 和 xlsx。官網提供了一份

移植Eigen到SylixOS下及使用方法

Eigen 中間件移植 SylixOS 1. 開發環境宿主機:Windows 7 集成開發環境:Real-Evo IDE 3.5.3 虛擬機:Ubuntu 目標機:x862. Eigen簡介Eigen是一個提供了線性代數、矩陣、向量操作等運算的C++庫,其中包含了很多算法。Eigen的Licens

LInux共享的嵌套調用例子

共享庫的嵌套問題親測成功!參考網址:嵌套例程:https://my.oschina.net/moooofly/blog/506466.htmllinux找不到動態鏈接庫 .so文件的解決方法https://www.cnblogs.com/xudong-bupt/p/3698294.htmlLinux共享庫、靜

Eigen筆記整理(二)

向量 pre geo 直接 gpo 歐拉角 () blog 初始化 Eigen/Geometry 模塊提供了各種旋轉和平移的表示 旋轉矩陣直接使用 Matrix3d 或 Matrix3f Eigen::Matrix3d rotation_matrix = Eigen::M

ROS ros::spin() 和ros::spinOnce() 的認識

pre 節點 我想 lB pan spa clas all llb ros::spin() 這句話的意思是循環且監聽反饋函數(callback)。循環就是指程序運行到這裏,就會一直在這裏循環了。監聽反饋函數的意思是,如果這個節點有callback函數,那寫一句ros::sp

linux動態libXXX.so

擴展 普通 ros 鏈接 好的 命令執行 win 程序 pen 1、動態庫的概念。動態鏈接庫與普通的程序相比而言,沒有main函數,是一系列函數的實現。通過shared和fPIC編譯參數生產so動態鏈接庫文件。程序在調用庫函數時,只需要連接上這個庫即可。 2、動態庫的優點。

文字的造與創

none 如何 clas 就是 簡單 今天 作品 con 杭州 中文字庫的造與創 好久沒有寫字庫方面的blog了,近年看到不少公司、團隊,都在翻來覆去搗鼓黑宋楷行等基本字體今天在群裏面,又看大家show秀這些所謂的中文字庫。實在是看不下眼。 黑宋楷行等基本字體,無論如何

egretTween的使用

egret.Tween.get(tw,{ loop:false,onChange:funcChange, onChangeObj:obj }).to({x:100}).wait(200).call(()=>{ //…do something }) 1.get():得到一個動畫物

ROS使用usb網路攝像頭(usb_cam,Arch linux,ROS JADE)

如題,在做香蕉派的影象處理時需要用到usb_cam這個ros node,在ubuntu上驗證之後,打算移植到Banana Pi的Archlinux ARM的時候卻發現了一個問題:不像ubuntu可以直接apt-get到,在Arch上不論pacman還是yaourt上都搜不到這個包。無奈,

Vs2017miracl的呼叫

Vs2017中miracl庫的呼叫 (作者:Baron_wu 禁止轉載) 前提:在我的另一個部落格中先編譯好miracl生成一個miracl.lib庫檔案 在vs中先建立一個工程。 然後右鍵工程,點選屬性一欄, 再點選c++下的常規,在右邊的附加