I am a developer who values dedication and persistence, focusing deeply on one area to achieve mastery. Although my pace may be slow, I strive to warm those around me, much like the steady and comforting glow of a fireplace. I channel my passion for expertise into creating a positive impact on others. I actively participate in various tech community activities to embody this philosophy, and I continue to do so.
While I enjoy learning and mastering new technologies, I firmly believe that focusing on products, customers, and market needs is even more critical. Understanding market demands and creating products that meet customer expectations are, in my view, far more important than simply acquiring the latest technologies.
ย Career
Mar. 2022 -
present
Aug. 2019 -
Feb. 2022
ย Education
Mar. 2015 -
Aug. 2019
GIST (Gwangju Institute of Science and Technology)
Ph.D. degree in School of Electronic Engineering and Computer Science
Mar. 2013 -
Feb. 2015
GIST (Gwangju Institute of Science and Technology)
M.S. degree in School of Electronic Engineering and Computer Science
Mar. 2006 -
Feb. 2013
KIT (Kumoh National Institute of Technology)
B.S. degree in Computer Engineering
(Including two years of the millitary service)
ย Research Interest
โข
Simultaneous Localization and Mapping
โข
Multi View Geometry
โข
Visual Localization
โข
Computer Vision and Image Processing
โข
Machine Learning and Deep Learning
โข
Autonomous Driving System
โข
Mobile Robotics

ย Technical Skills & Experience
โข
Programming language: C/C++, Python
โข
Robotics: ROS
โข
Image processing: OpenCV
โข
3D geometry: Point cloud library, Open3D
โข
Machine learning: Numpy, Scipy, Scikit-learn
โข
Deep learning: Tensorflow, Pytorch, Keras
โข
Development: Github, Docker, CMake
โข
Nonlinear optimization: Ceres, g2o, symforce

Title
๋ฑ๋ก์ผ์
์ถ์์ผ์
๋์์ฒด์ ๊ธฐํํ์ ํน์ฑ์ ๋ฐ์ํ์ฌ ํ์ฅ๋ ํํ ๋ฒ์๋ฅผ ๊ฐ์ง๋ ์ธํ
์ํฐ ์ ๋ณด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ ๋ฐ ๊ทธ๋ฌํ ๋ฐฉ๋ฒ์ ์ํํ๋ ๋ผ์ด๋ค ์ฅ์น (A method of generating an intensity information with extended expression range by reflecting a geometric characteristic of object and a LiDAR device that performs the method)
Open
2021.06.25
Introduction

Recently, while studying IMU preintegration, I suddenly wondered how IMU preintegration is implemented in ORB-SLAM3, so I analyzed it. The theoretical part of IMU preintegration is already well explained Dr. Lim's blog, so I think it would be good to refer to it, and I compared the IMU preintegration paper with the ORB-SLAM3 code to see how the formula in the paper is implemented in the code.
It would take a lot of time to write the IMU preintegration part in one article, so I would like to write it in the following order.
1.
IMU sensor measurement integration
2.
Defining the residual function
3.
Definition of Jacobian matrix
This article will cover the code analysis of the first of them, IMU sensor measurement integration.
Code analysis
Integrating IMU Sensor Measurements
First, let's look at the part of the code that integrates the measurements between keyframe i and keyframe j by accumulating the acceleration and angular velocity measurements from the IMU sensor as they come in. During this process, the following values are computed
The overall calculation is performed in the IntegrateNewMeasurement function of the Preintegrated class. The complete function code is shown below.
[ENG] ORB-SLAM3 IMU preintegration code review (1)
Introduction

Last time, we analyzed the first of several components of IMU preintegration in ORB-SLAM3, the IMU sensor measurement integration part, by comparing the paper and the code. The measurement integration part (1) computes the relative state (rotation, translation, velocity) values between two keyframes, (2) obtains the covariance matrix through noise propagation, and (3) computes the Jacobian matrix for bias update. The values computed here are later used to perform bundle adjustment using keyframes, or to perform nonlinear optimization such as pose estimation for a single camera frame.
In this tutorial, we will analyze how the residual function of IMU factors and the definition of Jacobian matrix are implemented in the ORB-SLAM3 code to perform nonlinear optimization.
Prerequisites
Factor Graphs and MAP Esimation
A factor graph is a structure used to represent the relationships between variables in a stochastic model and to find solutions that satisfy all constraints (factors). It is used here to address the Visual-Inertial Odometry (VIO) problem and consists of the following main components
1.
Graph node
2.
Graph edges
The VIO problem defined in the IMU preintegration paper is represented as follows in Equation (25).
p(XkโโฃZkโ)โโp(X0โ)p(ZkโโฃXkโ)=(a)p(X0โ)(i,j)โKkโโโp(Ciโ,IijโโฃXkโ)=(b)p(X0โ)(i,j)โKkโโโp(Iijโโฃxiโ,xjโ)iโKkโโโlโCiโโโp(zilโโฃxiโ).โโ(25)โ
where the state value Xkโ the state for the keyframe we are interested in obtaining (rotation Riโ, translation piโ, velocity viโ, bias biโ ) values, and the measurements Zkโ contain observations from the camera sensors (2D keypoint position information Ciโ about 3D landmarks) and measurements from the IMU sensors (acceleration and angular velocity Iijโ). For more details on the notation, please refer to the section IV. Maximum a Posteriori Visual-Inertial State Estimation in the paper.
[ENG] ORB-SLAM3 IMU preintegration code review (2)

์๋
ํ์ธ์ SLAM KR!
SLAM์ ์
๋ฌธํ์๋ ์ฌ๋ฆฐ์ด ์ฌ๋ฌ๋ถ๋ค์ ์ํด SLAM KR ์ปค๋ฎค๋ํฐ์์ ๊ณต๋ถํ ๋ด์ฉ๋ค์ ๊ต์ฌ๋ก ์ ๋ฆฌํด๋ณด์์ต๋๋ค :-)
SLAM์ด ๋ฌด์์ธ์ง , ์ด๋์ ์ฐ์ผ์ ์๋์ง ํฅ๋ฏธ๋ฅผ ๋์ฐ๋ ๋ด์ฉ์ผ๋ก ์์ํ์ฌ, SLAM์ ์ฌ์ฉํ๋ ์ผ์๋ค๊ณผ SLAM์ ๊ณต๋ถํ์ค ๋ ํ์ํ ์ํ์ ๊ธฐ์ด ์ง์๋ค(์ ํ๋์, ํ๋ฅ ํต๊ณ, ๋น์ ํ ์ต์ ํ, ํ์ ๋ณํ)์ ์ ๋ฆฌํ์ต๋๋ค. ํฌ๊ฒ Frontend์ Backend๋ก ๋ถ๋ฆฌํ์ฌ SLAM์ ๊ณต๋ถํ๋๋ฐ ํ์ํ ๋ด์ฉ๋ค์ ์์๊ณผ ์ฝ๋ ์ค๋ช
, ์ค์ต์ ํฌํจํ์ฌ ์์ธํ ์ค๋ช
ํ๊ณ ์ ํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก SLAM ๊ธฐ์ ์ ๋ฏธ๋ ๋ฐ์ ๋ฐฉํฅ๊ณผ ์ด๋ฌํ SLAM ๊ด๋ จ ๊ธฐ์ ๋ค์ ๊ณต๋ถํ ์ ์๋ ์ปค๋ฎค๋ํฐ ๋ฐ ๊ด๋ จ ์๋ฃ๋ค์ ์ ๋ฆฌํ์ต๋๋ค.
์์ง ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์์ ๊ณต๊ฐ๋ฅผ ํด์ผํ ์ง ๊ณ ๋ฏผ์ ๋ง์ด ํ์์ผ๋ SLAM์ ์ฒ์ ์ ํ์๊ฑฐ๋ SLAM์ ๋ํด ์ข ๋ ๊น์ด ๊ณต๋ถํ๊ณ ์ถ์ผ์ ๋ถ๋ค์๊ฒ ์๊ทธ๋งํ ๋์์ด ๋์
จ์ผ๋ฉด ์ข๊ฒ ๋ค๋ ๋ง์์ ์๋ฃ๋ฅผ ๊ณต๊ฐํฉ๋๋ค.
์ฌ๋ฆฐ์ด๊ฐ ์ฌ์์์ด ๋๋ ๊ทธ ๋ ๊น์ง!
๊ฐ์ฌํฉ๋๋ค :-)
LINK: http://bit.ly/3Jgq1aZ
PASSWARD: slamkr
NVIDIA Jetson Nano์ ํจ๊ปํ๋ SLAM์ ์ดํด์ ๊ตฌํ
์๊ฐ

์ง๋ ์๊ฐ์ ์ฐ๋ฆฌ๋ ORB-SLAM3์์ IMU preintegration์ ์ฌ๋ฌ ๊ตฌ์ฑ์์ ์ค์ ์ฒซ๋ฒ์งธ๋ก IMU ์ผ์ ์ธก์ ๊ฐ integration ๋ถ๋ถ์ ๋
ผ๋ฌธ๊ณผ ์ฝ๋๋ฅผ ๋์กฐํ์ฌ ๋ถ์ํด๋ณด์์ต๋๋ค. ์ธก์ ๊ฐ integration ๋ถ๋ถ์์๋ (1) ๋ ํคํ๋ ์ ์ฌ์ด์ ์๋์ ์ธ ์ํ (ํ์ , ์ด๋, ์๋) ๊ฐ์ ๊ณ์ฐํ๊ณ , (2) ๋
ธ์ด์ฆ ์ ํ๋ฅผ ํตํด ๊ณต๋ถ์ฐ ํ๋ ฌ์ ๊ตฌํ๊ณ , (3) ๋ฐ์ด์ด์ค ์
๋ฐ์ดํธ๋ฅผ ์ํ ์์ฝ๋น์ ํ๋ ฌ์ ๊ณ์ฐํฉ๋๋ค. ์ฌ๊ธฐ์ ๊ณ์ฐ๋ ๊ฐ๋ค์ ๋์ค์ ํคํ๋ ์๋ค์ ์ด์ฉํ Bundle adjustment๋ฅผ ์ํํ ๋๋, ์นด๋ฉ๋ผ ํ๋ ์ ํ๋์ ๋ํ Pose estimation๋ฑ ๋น์ ํ ์ต์ ํ๋ฅผ ์ํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฒ ์๊ฐ์๋ ๋น์ ํ ์ต์ ํ๋ฅผ ์ํํ ๋ ๊ตฌ์ฑํ๋ IMU factor์ Residual ํจ์์ Jacobian ํ๋ ฌ์ ์ ์์ ๋ํด์ ORB-SLAM3 ์ฝ๋์์๋ ์ด๋ป๊ฒ ๊ตฌํ๋์ด ์๋์ง ๋ถ์ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฌ์ ์ง์
Factor Graphs and MAP Esimation
Factor graph๋ ํ๋ฅ ๋ชจ๋ธ์์ ๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ๊ณ ๋ชจ๋ ์ ์ฝ์กฐ๊ฑด(factor)์ ๋ง์กฑ์ํค๋ ํด๋ฅผ ์ฐพ๋๋ฐ ์ฌ์ฉ๋๋ ๊ตฌ์กฐ์
๋๋ค. ์ฌ๊ธฐ์๋ Visual-Inertial Odometry(VIO) ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ ์๋์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
1.
๊ทธ๋ํ ๋
ธ๋(Graph node)
2.
๊ทธ๋ํ ์ฃ์ง(Graph edge)
IMU preintegration ๋
ผ๋ฌธ์์ ์ ์ํ VIO ๋ฌธ์ ๋ ์์ (25)์์ ์๋์ ๊ฐ์ด ํํ๋ฉ๋๋ค.
p(XkโโฃZkโ)โโp(X0โ)p(ZkโโฃXkโ)=(a)p(X0โ)(i,j)โKkโโโp(Ciโ,IijโโฃXkโ)=(b)p(X0โ)(i,j)โKkโโโp(Iijโโฃxiโ,xjโ)iโKkโโโlโCiโโโp(zilโโฃxiโ).โโ(25)โ
์ฌ๊ธฐ์ ์ํ๊ฐ Xkโ๋ ์ฐ๋ฆฌ๊ฐ ๊ตฌํ๊ณ ์ ํ๋ ํคํ๋ ์์ ๋ํ ์ํ(ํ์ Riโ, ์ด๋ piโ, ์๋ viโ, ๋ฐ์ด์ด์ค biโ )๊ฐ์ ํฌํจํ๊ณ ์ธก์ ๊ฐ Zkโ๋ ์นด๋ฉ๋ผ ์ผ์๋ก๋ถํฐ์ ๊ด์ฐฐ(3D ๋๋๋งํฌ์ ๋ํ 2D ํคํฌ์ธํธ ์์น์ ๋ณด Ciโ)๊ฐ ๋ฐ IMU ์ผ์๋ก๋ถํฐ์ ์ธก์ (๊ฐ์๋ ๋ฐ ๊ฐ์๋ Iijโ)๊ฐ์ ํฌํจํฉ๋๋ค. Notation์ ๋ํด์ ๋ ์์ธํ ์๊ณ ์ถ์ผ์ ๋ถ๋ค์ ๋
ผ๋ฌธ์์ IV. Maximum a Posteriori Visual-Inertial State Estimation ์น์
์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
[KOR] ORB-SLAM3 IMU preintegration code review (2)
์๊ฐ

์ต๊ทผ IMU preintegration์ ๋ํด์ ๊ณต๋ถํ๋ค๊ฐ ๋ฌธ๋ ORB-SLAM3๋ ์ด๋ป๊ฒ IMU preintegration์ด ๊ตฌํ๋์ด ์์์ง ๊ถ๊ธํด์ ๋ถ์ํด๋ณด์์ต๋๋ค. IMU preintegration์ ๋ํ ์ด๋ก ์ ์ธ ๋ถ๋ถ์ ํํ๋์ ๋ธ๋ก๊ทธ์ ์ด๋ฏธ ์ ์ค๋ช
์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ๊ทธ ์ชฝ์ ์ฐธ๊ณ ํ์๋ฉด ์ข์๊ฒ ๊ฐ๊ณ ์ ๋ IMU preintegration ๋
ผ๋ฌธ๊ณผ ORB-SLAM3 ์ฝ๋๋ฅผ ๋์กฐํด๋ณด๋ฉด์ ๋
ผ๋ฌธ์ ์์์ด ์ฝ๋์์ ์ด๋ป๊ฒ ๊ตฌํ๋์ด ์๋์ง๋ฅผ ์ดํด๋ณด์์ต๋๋ค.
Imu preintegration ๋ถ๋ถ์ ํ๋์ ๊ธ๋ก ๋ค ์จ๋ด๋ ค๊ฐ๊ธฐ๋ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆด๊ฑฐ ๊ฐ์์ ์๋์ ๊ฐ์ ์์์ ๊ธ๋ก ์์ฑํ๊ณ ์ํฉ๋๋ค.
1.
IMU ์ผ์ ์ธก์ ๊ฐ integration
2.
Residual ํจ์ ์ ์
3.
Jacobian ํ๋ ฌ ์ ์
๋ณธ ๊ธ์์๋ ๊ทธ ์ค ์ฒซ๋ฒ์งธ์ธ IMU ์ผ์ ์ธก์ ๊ฐ integration์ ๋ํ ์ฝ๋ ๋ถ์ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
์ฝ๋ ๋ถ์
IMU ์ผ์ ์ธก์ ๊ฐ integration
๋จผ์ IMU ์ผ์๋ก๋ถํฐ ๊ฐ์๋ ๋ฐ ๊ฐ์๋ ์ธก์ ๊ฐ์ด ๋ค์ด์ค๋ฉด ๋์ ํ์ฌ ํคํ๋ ์ i์ ํคํ๋ ์ j์ฌ์ด์ measurements๋ฅผ integrationํ๋ ๋ถ๋ถ์ ๋ํด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด ๊ณผ์ ์์ ์๋์ ๊ฐ์ ๊ฐ๋ค์ด ๊ณ์ฐ๋ฉ๋๋ค.
์ ์ฒด์ ์ธ ๊ณ์ฐ์ Preintegrated ํด๋์ค์ IntegrateNewMeasurement ํจ์์์ ์ํ๋ฉ๋๋ค. ์ ์ฒด ํจ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
[KOR] ORB-SLAM3 IMU preintegration code review (1)
Title
Tag
Date
Organization
์ฌ์ง
๊ต์ก์ ๋ณด
Apr. 2022
์ฌ์ง
๊ต์ก์ ๋ณด
Oct. - Dec. 2021
ํฌ์คํฐ
์ฌ์ง
์ฐธ๊ฐ์๊ฐ
April 2021 - May 2021
Title
Tag
ํ๋ ์ด๋ฆฌ์คํธ
์ปจํผ๋ฐ์ค
ํ๋ ์ด๋ฆฌ์คํธ
์คํฐ๋
ํ๋ ์ด๋ฆฌ์คํธ
์คํฐ๋
ํ๋ ์ด๋ฆฌ์คํธ
์คํฐ๋
ํ๋ ์ด๋ฆฌ์คํธ
์คํฐ๋
ํ๋ ์ด๋ฆฌ์คํธ
๋ผ์ด๋ธ๋ฐฉ์ก
ํ๋ ์ด๋ฆฌ์คํธ
์คํฐ๋
ํ๋ ์ด๋ฆฌ์คํธ
๋ผ์ด๋ธ๋ฐฉ์ก
ํ๋ ์ด๋ฆฌ์คํธ
์คํฐ๋
ย Resume
Resume_DongWonShin.pdf
376.4KB