본문 바로가기

전체 글

[SLAM] Pose Graph Optimization 개념 설명 및 예제 코드 분석 1. Introduction 로봇이 SLAM을 수행하는 동안 센서 데이터가 입력으로 들어오는데 순차적으로 들어오는 센서 데이터들의 차이를 통해 로봇의 포즈를 계산하는 알고리즘을 Odometry 또는 Front-end 라고 한다. 이 때, 센서 데이터의 노이즈로 인해 Odometry는 필연적으로 에러를 포함하고 있는데 시간이 지날수록 에러는 누적되어 전체적인 Trajectroy가 어긋나게 된다. 이러한 문제를 해결하기 위해 1997년 Lu and Milios는 로봇의 포즈를 그래프 자료구조로 표현함으로써 최적화하는 GraphSLAM 방법을 제안하였다. GraphSLAM의 Pipeline은 크게 Front-end와 Back-end로 구분할 수 있다. 로봇의 센서를 입력으로 받아 Pose Graph를 생성하는.. 더보기
다중관점기하학(Multiple View Geometry in Computer Vision) 책 내용 정리 Part 3 Youtube 다중관점기하학(Multiple View Geometry) 개념 정리 www.youtube.com1. The Trifocal Tensor1.1. The geometric basis for the trifocal tensorThree-View Geometry에서 Trifocal Tensor $\mathcal{T}$는 Two-View Geometry에서 Fundamental Matrix $\mathbf{F}$와 유사한 역할을 한다. $\mathbf{F}$와 유사하게 $\mathcal{T}$은 서로 다른 세 개의 카메라 이미지 평면들을 특별한 제약조건으로 구속시킨다.1.1.1. Incidence relations for lines월드 평면 상의 한 직선 $\mathbf{L}$과 이를 바라보고 있는.. 더보기
다중관점기하학(Multiple View Geometry in Computer Vision) 책 내용 정리 Part 2 Youtube 다중관점기하학(Multiple View Geometry) 개념 정리 www.youtube.com1. Epipolar Geometry and the Fundamental Matrix1.1. Epipolar geometryEpipolar geometry는 2개의 카메라 이미지 사이에 정의되는 기하학 관계 를 의미한다. 이는 3차원 물체의 구조와는 독립적이며 오로지 카메라의 내부 파라미터와 두 카메라 사이의 상대 포즈에만 의존한다. 위 그림과 같이 3차원 공간 상에 두 카메라의 중심점 $\mathbf{C}, \mathbf{C}^{\prime}$과 점 $\mathbf{X}$가 주어졌을 때 세 점을 통해 유일하게 결정되는 평면을 Epipolar Plane $\pi$ 라고 한다. 또한 카메라의 중심점.. 더보기
다중관점기하학(Multiple View Geometry in Computer Vision) 책 내용 정리 Part 1 Youtube 다중관점기하학(Multiple View Geometry) 개념 정리 www.youtube.com0. Projective Space사영 공간(projective space) $\mathbb{P}^{n}$는 $\mathbb{R}^{n+1}$ 공간 상의 원점을 지나는 직선들의 집합을 의미한다. 따라서 원점을 제외한 $\mathbb{R}^{n+1}$ 공간 상의 모든 원소를 포함한다. 엄밀히 말하면 허수를 제외한 실수만 취급하므로 $\mathbb{RP}^{n}$라고 써야하지만 본 포스팅에서는 편의를 위해 $\mathbb{P}^{n}$를 사용한다.\begin{equation}\begin{aligned}\mathbb{P}^{n} = \mathbb{R}^{n+1} - \{0\} \\\end{aligned.. 더보기
Plücker Coordinate 개념 정리 1. IntroductionPlücker Coordinate 표현법은 19세기 수학자 Julius Plücker에 의해 처음 소개되었다. 해당 표현법은 직선을 표현하는 방법 중 하나로 6차원 $\mathbb{P}^{5}$ 공간 상의 한 점을 사용하여 4차원 $\mathbb{P}^{3}$ 공간 상의 직선을 표현할 때 사용된다. 해당 표현법은 자체 제약조건으로 인해 $\mathbb{P}^{5}$ 곡면(quadric) 상의 한점과 $\mathbb{P}^{3}$ 공간 상의 직선이 일대일 대응을 이루는 특징이 있다. 사영 공간(projective space)에 대한 자세한 내용은 해당 포스팅을 참조하면 된다. MVG 책에서는 일반적으로 3차원 공간 상의 점을 $\mathbf{X} = [X,Y,Z,W] \in \m.. 더보기
선형대수학 (Linear Algebra) 개념 정리 Part 1 본 포스트는 선형대수학의 전반적인 내용에 대해 간락히 정리한 내용이다. 대부분의 내용은 인공지능을 위한 선형대수 - 주재걸 교수님 (edwith) 영상을 참고하여 제작하였다.선형대수학 (Linear Algebra) 개념 정리 Part 2 는 주로 행렬대수학과 관련된 내용을 다룬다.확률 이론에 대한 내용을 알고싶으면 확률 이론(Probability Theory) 개념 정리 포스트를 참조하면 된다. Chapter 1 - Linear SystemsLinear Equation선형방정식(Linear Equation)은 변수 $x_{1}, \cdots, x_{n}$이 있을 때 다음과 같이 작성할 수 있는 방정식을 의미한다.\begin{equation}\begin{aligned}a_{1}x_{1}+a_{2}x_{2}.. 더보기
리군 이론(Lie Theory) 개념 정리 - SO(3), SE(3) Youtube Lie Theory 개념 정리 (SO3, SE3) www.youtube.com Introduction본 포스트에서는 SLAM에서 사용되는 Lie Theory에 대해 설명한다. SLAM에서 최적화 부분을 공부하다보면 Lie Theory 기반의 최적화 방법이 자주 나오는데 해당 내용에 대한 선수지식이 없으면 최적화 과정을 이해하기 힘드므로 본 포스트에서는 SLAM의 최적화 부분을 이해하는데 필요한 핵심적인 내용을 간략하게 정리하였다.  대부분의 내용은 [6]을 참고하였다. Group Theory군(Group)은 집합과 두 원소의 연산인 이항 연산(binary operation)으로 이루어진 대수적 구조를 말한다. 예를 들어, 어떤 집합을 $A$ 라고 하고 어떤 이항 연산을 $*$ 으로 표시했을.. 더보기
오일러 각도 (Euler Angle) 개념 정리 내용을 보강하여 3D Rigid Body Transformation 개념 정리 포스트에 업로드하였습니다. 1 Introduction 해당 포스트에서는 오일러 각도 (Euler Angle) 표현법에 대해 다룬다. 오일러 각은 3차원 물체의 방향(orientation)을 3개의 서로 수직인 X,Y,Z축 각도로 표현하는 방법 중 하나이다. 2 Euler Angle vs Fixed Angle 3개의 각도로 물체의 방향을 표현할 때 크게 고정 각도(fixed angle)표현법과 오일러 각도(euler angle) 표현법이 있는데 오일러 각도는 회전한 축을 기준으로 다음 회전을 한다는 점 이 고정 각도 표현법과 다르다. 아래 그림과 같이 $Z,Y$ 축을 순차적으로 돌리는 경우를 생각해보자. 오일러 각도는 회전한 축.. 더보기
강체 변환 (Rigid Body Transformation) 개념 정리 내용을 보강하여 3D Rigid Body Transformation 개념 정리 포스트에 업로드하였습니다. 1 Introduction 본 포스트는 강체 변환 (Rigid Body Transformation)에 대해 다룬다. 강체(Rigid Body)란 이론적으로 무한대의 강성을 가지는 물체를 말한다. 따라서 강체에 힘을 가해도 변형이 되지 않으며 무게중심으로 지정되는 하나의 점에 의해 운동이 결정되는 특징이 있다. 필자가 공부하고 있는 Simultaneous Localization and Mapping (SLAM)에서 움직이는 로봇은 형태가 일정하다고 가정하므로 결국 강체 변환 (Rigid Body Transformation)을 사용하여 수학적으로 표현한다. 해당 포스트는 강체 변환에 대해 공부 목적으로 .. 더보기
회전 행렬 (Rotation Matrix) 개념 정리 내용을 보강하여 3D Rigid Body Transformation 개념 정리 포스트에 업로드하였습니다. Introduction 회전행렬은 n차원 공간 상 존재하는 물체를 회전시킬 때 사용하는 행렬이다. 일반적으로 2차원 또는 3차원 공간 상의 강체(rigid body)를 회전시킬 때 사용한다. 본 포스트에서는 3차원 공간 상의 강체를 회전시킨다고 가정한다. 다음과 같이 공간 상의 고정좌표계 $\{S\}$와 강체의 무게중심점에 존재하는 이동좌표계 $\{B\}$가 존재한다고 가정하자. $\{B\}$ 의 원점을 $P$, 축을 $(\hat{x},\hat{y},\hat{z})$ 하고 space frame $\{S\}$ 의 축을 $(\hat{X},\hat{Y},\hat{Z})$ 라고 하자. 이 때 space fr.. 더보기
좌표계 (Coordinate System) 개념 정리 내용을 보강하여 3D Rigid Body Transformation 개념 정리 포스트에 업로드하였습니다. 1 Introduction 해당 포스트는 로봇공학에서 좌표계에 대한 공부 목적으로 작성한 포스트이며 이미 잘 정리된 여러 블로그 포스트들의 내용을 참고하여 작성하였다. 2 Coordinate System 두 사람이 하나의 돌을 바라보고 있을 때 돌을 표현하는 방법이 서로 다를 수 있다. A가 B에게 "돌이 어디에 어떤 자세로 있어?" 라고 물었을 때 B는 어떻게 대답해야 할까? 정답은 알 수 없다. 엄밀하게 말하면 질문에 오류가 있다. 어디를 기준으로 돌이 어디에 있는가? 돌의 표면 중 정확히 어느 점을 물어보고 있는가? 이처럼 물체의 위치와 자세를 이야기할 때 어디를 기준으로 표현하는가? (기준좌표.. 더보기
x11vnc 원격 접속 서버 설치 및 사용법 정리 1 소개 x11vnc 는 원격에서 리눅스 환경으로 접속할 수 있게 해주는 VNC 서버 프로그램이다. Ubuntu 16.04 LTS 환경에서 쉽게 설치 및 사용할 수 있어서 vnc 서버 프로그램으로 주로 사용된다. 본 포스트에서는 설치 방법 및 다양한 옵션들에 대해 설명한다. 2 설치 x11vnc 는 터미널을 연 상태에서 아래의 명령어를 통해 쉽게 설치할 수 있다. sudo apt-get install x11vnc 3 daemon 서비스 등록 x11vnc 를 daemon 서비스로 등록하면 PC가 재부팅될 때도 프로그램이 자동으로 백그라운드에서 실행된다. 따라서 매번 부팅 때마다 서버 프로그램을 시작하지 않아도 된다. /lib/systemd/system 폴더에 x11vnc.service 파일을 아래와 같이 .. 더보기
TI-Nspire-CX-CAS 계산기 사용법 및 다양한 기능 설명 1 소개 TI-Nspire CX CAS 계산기는 단순한 사칙연산 연산 외에도 행렬 연산이나 미분, 적분, 삼각함수 등 공학에서 사용하는 대부분의 연산을 수행할 수 있는 강력한 공학용 계산기이다. TI-Nspire를 잘 활용한다면 MATLAB이나 기타 수학 소프트웨어 못지않은 강력한 기능을 사용할 수 있다. 안에는 거의 모든 수학에 대한 기능들과, 제어공학, 확률과 통계, 벡터, 행렬, 대수, 삼각함수, 미분과 적분, 경제수학 관련 함수 등등 엄청나게 많은 함수들이 내장되어 있다. 필요하다면 프로그래밍을 통해 새로운 기능을 이식할 수 있다. 해외 커뮤니티에서는 유저들이 직접 프로그래밍한 다양한 스크립트들을 공유하는 사이트 또한 존재한다. 2 기본 명령어 기본적인 단축키는 윈도우 단축키와 유사하다. ctrl.. 더보기