1. introduction to Visual SLAM practice.
02 Jun 2020 | Visual SLAM
기본 연습
#include <iostream>
using namespace std;
int main()
{
cout<<"hello SLAM!"<<endl;
return 0;
}
- 컴파일러를 사용하여서 실행 파일을 만들어야하는데 많이 사용 되는 것은 g++이다
- 만약 설치가 안되어있다면 sudo apt-get install g++
- 컴파일
g++ helloSLAM.cpp
-
컴파일이 되었으면 현재 목록에 실행파일 a.out 의 파일을 발견할 수 있다.
-
실행
./a.out
---
output : hello SLAM!
CMake 사용
-
다량의 cpp파일을 g++를 이용하여서 compile하는 것은 생각만해도 골치아프다.
- 이런 Procedeure을 관리해주는 Cmake를 사용한다면 효과적으로 효율을 올릴 수 있따.
- Cmake는 자동 Compile을 도와주는 도구이다.
-
CMakeLists.txt는 흔히 Makefile이라고 불리는데, 자동 컴파일을 지정해주는 파일이다.
- 위에와 같은 프로그램을 CMakeLists.txt를 통하여 아래와 같이 자동 컴파일을 지정할 수있다.
# Cmake
cmake_minimum_required( VERSION 2.8)
# Named Project
project( HelloSLAM)
# add_executable, 실행파일 만들기
add_executable( helloSLAM helloSLAM.cpp)
-
CMakeLists.txt를 만들었으면, mkdir을 통해 build 폴더를 만고 cd build 장소에서 cmake .. 를 진행하여 compile 준비를 한다.
-
준비가 끝났으면 make 를 통해서 compile 진행을 하면 아래와 같이 뜬다.
- 성공을 하였다면 아래와 같이 실행할 수 있다.
./helloSLAM
Hello SLAM!
Library 사용하기
- Visual SLAM을 하기 위해서 아래와 같은 라이브러리가 필요하다
- Opencv Library : Computer Vision 알고리즘 Library
- Eigen Library : Matrix, linear Algebra 알고리즘
- Library 사용 대한 이해를 돕기 위해 예로 아래와 같이 Library를 만들어 보았다.
- file name : libHelloSLAM.cpp
#include <iostream>
using namespace std;
void printHello()
{
cout<<"hello SLAM!"<<endl;
return 0;
}
- printHello의 함수를 만들었지만, main 함수가 없으므로 실행을 할 수 없다. CMakeLists.txt에 아래와 같이 script를 더한다.
# Static library
add_library( hello libHelloSLAM.cpp )
- 그리고 build 폴더에서 make를 다시한다면 libhello.a 라는 파일이 생성되는 것을 볼 수 있을것이다.
- libhello.a 이것이 바로 우리의 library다
- .a 는 Static Library를 뜻하고
- Static Library는 매번 쓸때마다 복사본을 생성한다.
- .so 는 Share Library를 뜻한다.
- .so 는 Share Library로 오직 하나의 복사본만 가지고 있어 공간을 아낄 수 있다.
- 만약 Static Library가 아닌 Share Library를 쓰고 싶다면 Cmakelists.txt에서 아래와 같이 쓸 수 있다.
# 共享库
add_library( hello_shared SHARED libHelloSLAM.cpp )
- 그리고 build 폴더에서 make를 다시한다면 libhello.so 라는 파일이 생성되는 것을 볼 수 있을것이다.
- Library는 compile이 이미 잘된 압축 파일이다. 그러나 .a 혹은 .so 안에 어떤 함수들이 있는지 알수가 없다.
- 다른사람이 쓰거나 혹은 본인을 위해 Header파일이 필요하다.
- Header 파일과 Library파일만 있다면 그 Library를 사용할 수 있다.
- 아래와 같이 예시를 보겠다.
libHelloSLAM.h
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
// 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误
void printHello();
#endif
useHello.cpp
#include "libHelloSLAM.h"
// 使用 libHelloSLAM.h 中的 printHello() 函数
int main( int argc, char** argv )
{
printHello();
return 0;
}
- 두 파일을 만들었다면 CMakeLists.txt에 명령어를 추가하여서 library파일인 libHelloSLAM.cpp를 사용할 수 있게 한다.
add_executable( useHello useHello.cpp )
# 将库文件链接到可执行程序上
target_link_libraries( useHello hello_shared )
- 이렇게 된다면 useHello 프로그램은 언제든지 hello_share의 프로그램을 사용할 수 있다.
Debug
- Linux 중에서 Debug Tool은 기본적으로 gdb이다.
- CmakeList.txt를 이용하여서 쉽게 Debug를 할 수 있다.
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
Reference
SLAM KR
视觉SLAM书
Cmake Tutorial : https://github.com/TheErk/Cmake-tutorial.
기본 연습
#include <iostream>
using namespace std;
int main()
{
cout<<"hello SLAM!"<<endl;
return 0;
}
- 컴파일러를 사용하여서 실행 파일을 만들어야하는데 많이 사용 되는 것은 g++이다
- 만약 설치가 안되어있다면 sudo apt-get install g++
- 컴파일
g++ helloSLAM.cpp
-
컴파일이 되었으면 현재 목록에 실행파일 a.out 의 파일을 발견할 수 있다.
-
실행
./a.out
---
output : hello SLAM!
CMake 사용
-
다량의 cpp파일을 g++를 이용하여서 compile하는 것은 생각만해도 골치아프다.
- 이런 Procedeure을 관리해주는 Cmake를 사용한다면 효과적으로 효율을 올릴 수 있따.
- Cmake는 자동 Compile을 도와주는 도구이다.
-
CMakeLists.txt는 흔히 Makefile이라고 불리는데, 자동 컴파일을 지정해주는 파일이다.
- 위에와 같은 프로그램을 CMakeLists.txt를 통하여 아래와 같이 자동 컴파일을 지정할 수있다.
# Cmake
cmake_minimum_required( VERSION 2.8)
# Named Project
project( HelloSLAM)
# add_executable, 실행파일 만들기
add_executable( helloSLAM helloSLAM.cpp)
-
CMakeLists.txt를 만들었으면, mkdir을 통해 build 폴더를 만고 cd build 장소에서 cmake .. 를 진행하여 compile 준비를 한다.
-
준비가 끝났으면 make 를 통해서 compile 진행을 하면 아래와 같이 뜬다.
- 성공을 하였다면 아래와 같이 실행할 수 있다.
./helloSLAM
Hello SLAM!
Library 사용하기
- Visual SLAM을 하기 위해서 아래와 같은 라이브러리가 필요하다
- Opencv Library : Computer Vision 알고리즘 Library
- Eigen Library : Matrix, linear Algebra 알고리즘
- Library 사용 대한 이해를 돕기 위해 예로 아래와 같이 Library를 만들어 보았다.
- file name : libHelloSLAM.cpp
#include <iostream>
using namespace std;
void printHello()
{
cout<<"hello SLAM!"<<endl;
return 0;
}
- printHello의 함수를 만들었지만, main 함수가 없으므로 실행을 할 수 없다. CMakeLists.txt에 아래와 같이 script를 더한다.
# Static library
add_library( hello libHelloSLAM.cpp )
- 그리고 build 폴더에서 make를 다시한다면 libhello.a 라는 파일이 생성되는 것을 볼 수 있을것이다.
- libhello.a 이것이 바로 우리의 library다
- .a 는 Static Library를 뜻하고
- Static Library는 매번 쓸때마다 복사본을 생성한다.
- .so 는 Share Library를 뜻한다.
- .so 는 Share Library로 오직 하나의 복사본만 가지고 있어 공간을 아낄 수 있다.
- 만약 Static Library가 아닌 Share Library를 쓰고 싶다면 Cmakelists.txt에서 아래와 같이 쓸 수 있다.
# 共享库
add_library( hello_shared SHARED libHelloSLAM.cpp )
- 그리고 build 폴더에서 make를 다시한다면 libhello.so 라는 파일이 생성되는 것을 볼 수 있을것이다.
- Library는 compile이 이미 잘된 압축 파일이다. 그러나 .a 혹은 .so 안에 어떤 함수들이 있는지 알수가 없다.
- 다른사람이 쓰거나 혹은 본인을 위해 Header파일이 필요하다.
- Header 파일과 Library파일만 있다면 그 Library를 사용할 수 있다.
- 아래와 같이 예시를 보겠다.
libHelloSLAM.h
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
// 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误
void printHello();
#endif
useHello.cpp
#include "libHelloSLAM.h"
// 使用 libHelloSLAM.h 中的 printHello() 函数
int main( int argc, char** argv )
{
printHello();
return 0;
}
- 두 파일을 만들었다면 CMakeLists.txt에 명령어를 추가하여서 library파일인 libHelloSLAM.cpp를 사용할 수 있게 한다.
add_executable( useHello useHello.cpp )
# 将库文件链接到可执行程序上
target_link_libraries( useHello hello_shared )
- 이렇게 된다면 useHello 프로그램은 언제든지 hello_share의 프로그램을 사용할 수 있다.
Debug
- Linux 중에서 Debug Tool은 기본적으로 gdb이다.
- CmakeList.txt를 이용하여서 쉽게 Debug를 할 수 있다.
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
Reference
SLAM KR 视觉SLAM书
Cmake Tutorial : https://github.com/TheErk/Cmake-tutorial.
Comments