List of Selected Courses

Categories Courseworks

ETH Zürich 2016 –

  • Robot Dynamics by M. Hutter, R. Siegwart and T. Stastny
  • Vision Algorithms for Mobile Robotics by D. Scaramuzza
  • Programming for Robotics – Introduction to ROS by M. Hutter
  • Autonomous Mobile Robots by R. Siegwart, M. Chli and M. Rufli
  • Dynamic Programming and Optimal Control by R. D’Andrea
  • Recursive Estimation by R. D’Andrea
  • Linear System Theory by M. Kamgarpour
  • Probabilistic Artificial Intelligence by S. Tschiatschek
  • Learning and Intelligent System by G. Rätsch and T. Hofmann
  • Visualization, Simulation and Interaction – Virtual Reality I by A. Kunz
  • Embedded Control System by J. S. Freudenberg and M. Schmid Daners
  • Machine Learning by J. M. Buhmann
  • Deep Learning by T. Hofmann

Seoul National University 2009 – 2016

  • Dynamics by Kyujin Cho
  • System Analysis in Mechanical and Aerospace Engineering by Kyujin Cho
  • Introduction to Robotics by Frank Chongwoo Park
  • Principles of Flight Vehicle Control by H. Jin Kim
  • Algorithm by Sun Kim
  • Operating System by Byung-Gon Chun
  • Computer Architecture by B. Egger
  • Basic Digital Signal Processing by Soonhoi Ha
  • Electrical and Electronic Circuits by Soonhoi Ha


Categories Courseworks

This project is from the course “Visualisation, Simulation and Interaction – Virtual Reality 1” of ETH Zürich in Spring 2017. The goal of the project is creating Virtual Reality(VR) game by using VR devices, Arduino, Unity 3D etc.

Jaeryeong Choi, Soomin Lee, Dongho Kang and Jaeyoung Lim contributed to the project. The course was instructed by Prof. Andreas Kunz

For source code and other resources, go to Github repository: virtual-reality-icarus


This slideshow requires JavaScript.

Demo video


Exercises of Programming for Robotics – ROS

Categories Courseworks

Programming for Robotics – ROS course is an open lecture by Prof. Marco Hutter of ETH Zürich Robotic System Laboratory. The course materials and online video lectures are avilable on the website.

I opened Github repository contains resources and source code for exercises from myself with Prof. Hutter’s permission. Please use it for only private purposes.

Programming for Robotics – ROS는 ETH Zürich Robotic Systems Lab의 Marco Hutter 교수님이 2016년 2월에 개설한 오픈강좌입니다. 수업자료와 비디오 강의가 공개되어 있습니다.

일전에 개인적으로 문의하신 분들이 있어서 교수님의 허락을 받아 수업시간에 제가 작성한 실습코드를 공개합니다. 참고용으로 활용하실 수 있습니다.

소스코드는 Github repository 에서 내려받을 수 있습니다. 해당 실습이 ETH Zürich 학생들의 성적평가에 반영되기 때문에 무단으로 배포하지 말아주시길 부탁드립니다.

Implementation of Monocular Visual Odometry Pipeline

Categories Courseworks

This project is from the course “Vision Algorithms for Mobile Robotics” of ETH Zurich in Autumn 2016.

The goal of the project is implementing a monocular visual odometry pipeline.

Jihwan Youn, Dongho Kang and Jaeyoung Lim contributed to the project and the course was instructed by Prof. Davide Scaramuzza


Our Visual Odometry pipeline(VO pipeline) consists of initialization, continuous operation, and bundle adjustment as shown in figure 1. A loop closure module was also implemented but excluded from the experimental result.

Figure 1: Overview of the visual odometry pipeline.

The initialization module outputs the initial pose and landmarks based on the manually selected two images, I0 and I1. The process frame uses the pre- viously estimated pose and landmarks to continuously estimate the current pose.

Additionally, VO pipeline performs window-based bundle adjustment to optimize the poses and the landmarks by minimizing the reprojection error in a nonlinear fashion.

A loop closure feature was added by storing the landmark history. However, due to the poor robustness of place recognition function, the loop closure feature is not demonstrated properly in the demo videos


The code was implemented in MATLAB language and was tested in MATLAB R2016b version. Four datasets were used to assess the performance of our VO pipeline.

KITTI dataset

KITTI dataset shows significant scale drift without the bundle adjustment implementation. After bundle adjustment, the VO pipeline is robust enough to run to the end of the dataset.

MALAGA dataset

MALAGA dataset shows scale drift even after bundle adjustment. This is thought to be from the large variations of landmark distance from the camera.

PARKING dataset

Parking dataset shows robust performance even though the camera is facing the right angle to the direction of travel. Parking has an accumulative error as the dataset has no loop even though running bundle adjustment.

SEOUL dataset

A custom dataset was constructed to verify that the visual odometry pipeline is robust enough to work in various environments. The custom dataset is based on 360 sequence of images taken from an iPhone 6s. While taking the images the camera had a fixed focal length and the images were down sam- pled by a factor of 0.2 for computational issues in calibrating the camera and rectifying images. Images were filmed in a narrow alley in Seoul, Republic of Korea in December 27th 2016.

The successful trajectory estimation of the VO pipeline in a narrow alley with large variations of landmark distance and illumination changes shows robust performance of the VO pipeline.


We successfully implemented a fully working and robust monocular visual odometry pipeline as well as the additional features as the following:

  • An appealing visualization was implemented including keypoint tracking information, camera heading and trajectory in each frame. A full landmark and trajectory visualization is also implemented.
  • Many ideas for improving the performance of the VO pipeline.
  • Refined estimated pose by minimizing reprojection error.
  • VO pipeline verification on a custom recorded dataset.
  • Full bundle adjustment(motion and structure)
  • Not fully working but implemented loop closure module using place recognition.