본문 바로가기
Programming/Eigen

Eigen3 란?

by 항공학도 2020. 6. 9.

참고자료: https://dritchie.github.io/csci2240/assignments/eigen_tutorial.pdf   
                https://eigen.tuxfamily.org/dox/index.html 

Computer vision및 Deep-learning관련 open-source들을 살펴보다보면, Eigen으로 작성된 코드들이 많이 보인다. 하지만 Eigen library가 정확히 어떤 기능을하고 어떻게 쓸 수 있는지 알지 못하기 때문에 코드를 이해하는데 어려움이 있었다. 이 글에서는 이 Eigen Library에 대해 공부한 내용에 대하여 작성한다. 

우선 Eigen은 행렬 연산을 최적화 히기위해 개발되었다. 이에 따라서 Matrix, Vector, Scalar를 지원하며, 이를 이용해 선형 대수 관련 알고리즘들을 해결해주는 C++ 기반의 템플릿 라이브러리이다. 인터넷 브라우저 Firefox를 만들고 있는 Mozilla에서 개발, Mozilla Public License 2로 무료로 배포하고 있으며 여러 개발자들의 집단지성을 통해 계속해서 그 코드를 update하고 있다.

이번 글에서는 Eigen3의 설치 및 간단한 사용법에 관해 살펴보도록 하겠다. 코드를 테스트하는 기본적환경은 Ubuntu 18.04, ROS Melodic에서 실행된다.

설치

 리눅스에서 Eigen Library의 설치는 다음의 한줄명령으로 간단히 설치가 된다.

sudo apt-get install libeigen3-dev

Test

Eigen설치가 완료되었으면 다음과 같이 설치된 Eigen3의 Version Check를 하는 ROS기반 코드를 작성해서 test 해본다. 

#include <iostream>
#include <Eigen/Core>
#include <ros/ros.h>

using namespace std;

int main(int argc, char **argv) 
{
    ros::init(argc, argv, "eigen_test");
    ros::NodeHandle nh;
    ros::Rate rate(40.0);

    cout << "Eigen version: " << EIGEN_MAJOR_VERSION << "." << EIGEN_MINOR_VERSION << endl;

        
    return 0;
};

이를 실행하면 다음과 같이 Eigen version: 3.4라고 표시 되는 프로그램이 실행된다.

사실 Eigen version check같은 경우는 굳이 프로그램을 실행하지 않고도 터미널창에서 다음의 리눅스 커맨드로 확인할 수 있다.

pkg-config --modversion eigen3

 

'Programming > Eigen' 카테고리의 다른 글

Eigen3 Vector  (0) 2020.07.01
Eigen3 Matrix Operations - 행렬연산  (0) 2020.07.01
Eigen3 Matrices - 행렬변수 선언  (2) 2020.07.01

댓글