SLAM 17

[Mapping]RTAB-Map in ROS with Realsense d435if

환경Ubuntu 18.04, ROS RealSense D435if RealSenseROS에서 Realsense를 사용하기 위해 Realsens SDK를 설치해야 한다https://github.com/IntelRealSense/realsense-ros/tree/ros1-legacy?tab=readme-ov-file   ROS 버전에 맞는 RealSense ROS 패키지를 설치한다Ubuntu 18.04이므로 ROS melodic에 맞는 버전이 설치될 것이다sudo apt-get install ros-$ROS_DISTRO-realsense2-camera 이후 설치된 라이브러리를 쓸 수 있도록 빌드한다~/.bashrc에 저장하면 더욱 좋을 것이다sudo apt-get install ros-melodic-rtab..

SLAM 2024.11.23

[SLAM] Livox Mid-360을 활용한 FAST-LIO 수행

환경HWPC: Lattepanda SigmaLidar: Livox Mid-360 SWOS: Ubuntu 20.04ROS Noetic ~/catkin_ws/src 디렉토리에서 진행한다 FAST-LIO를 실행하기 위한 라이브러리 요구사항은 아래와 같다.  Livox ROS Driver 설치참고https://github.com/Livox-SDK/livox_ros_driver2 livox lidar를 ROS에서 사용하기 위해 SDK를 설치한다cd ~/catkin_ws/srcgit clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2 ROS Noetic을 사용하므로ROS1에 맞게 빌드한다.cd ~/catkin_..

SLAM/LiDAR SLAM 2024.04.17

[VSLAM]Bundle Adjustment

Bundle Adjustment(BA) N-view geometry There are N frames Triangulation에서 수행했던 2 view geometry가 아닌 n개의 이미지를 사용한 N view image이다 여러 개의 frame이 있고 각 프레임마다 relative motion(rotation and translation)을 가지고 있다 frame마다 correspondence를 가지고 있으며, Landmark의 3D 위치도 알고 있으며, 하나의 landmark에는 두 개 이상의 2D to 3D correspondence를 가지고 있다 로봇이 이동하면서 frame마다의 motion과 observation에서 발생하는 noise가 쌓여 나타난 uncertainty를 해결하기 위해 batc..

SLAM/Visual SLAM 2023.12.09

[VSLAM]최소자승법

Least Squares(최소자승법) SLAM 정의(복습) 동시적 위치 추정 및 지도 생성 Least Squares 정의 SLAM에서 사용하는 최적화 방법론 중 하나이다 최적화는 우리가 정답을 찾지 못하는 상황에서 모든 방정식에 대해 가장 적은 error 값을 찾는 수학적 기법이다 error 값을 제곱한다 비교적 높은 error 값들은 더 크게 다뤄지므로 제곱 값을 줄이는 기법이 최소자승법이다 최소자승법은 over-determined system의 해를 푸는 방법으로 미지수의 개수보다 방정식의 개수가 더 많을 경우를 나타낸다 SLAM은 항상 이러한 시스템에 있다 하나의 상태 x를 추정하기 위해 실제 측정 값 z를 통해 f(x)를 예측하고 이 값을 통해 상태를 예측한다 센서로부터 발생한 노이즈와 측정한 값..

SLAM/Visual SLAM 2023.12.03

[VSLAM]Perspective N Points

Perspective N Points PnP Problem 정의 n개의 데이터에서 2D 데이터와 3D 데이터 간의 correspondence가 주어졌을 때 world-to-camera transformation을 추론하는 문제이다 카메라가 3D 맵을 바라볼 때 correspondence를 구했다면 이 정보를 가지고 현재 카메라 pose를 추정한다 이 중 몇 개의 correspondence를 사용하냐에 따라 n의 수가 달라진다 이미지로부터 feature를 뽑고 map과 매칭하면서 map에 대해서 나의 위치를 찾을 수 있다 Localization과 관련있다 pnp는 3D point x가 담고 있는 descriptor들과 현재 뷰에서 보이는 descriptor들을 매치해서 2D to 3D corresponde..

SLAM/Visual SLAM 2023.12.03

[VSLAM]Triangulation

General Triangulation Motivation 개요 VSLAM을 통해 map 생성과 localization을 동시에 할 수 있는데 F 행렬과 E 행렬을 통해 두 이미지 간의 상대적인 이동치를 추정할 수 있다 위치 추정을 할 수 있다 3D 구조로 복원하기 위해서는 Triangulation이 필요하다 두 이미지 간의 상대적인 회전 값을 알고 feature 간의 correspondence를 알고 있을 때 실제 point가 있는 위치의 x,y,z 좌표 값을 알 수 있다 이를 통해 2d 에서 3d 로 매핑이 가능하다 서로 매치된 feature에서 나온 ray를 연결하면 하나의 3d 포인트에서 만난다 triangulation을 통해 두 쌍의 correspondence를 구해 두 개의 3d point를 ..

SLAM/Visual SLAM 2023.12.02

[VSLAM]RANSAC

Outlier Removal Data Types of data - Inlier data: 정상 범위 내의 데이터 - outlier data: 정상 범위 밖의 데이터 두 데이터를 구분하기 위해 에러 값만으로는 판단할 수 없다 노이즈가 높을 수 있다 혹은 완전히 잘못된 과정으로 모은 데이터라도 올바르게 나타날 수 있기 때문이다 왼쪽 Point에 F 행렬을 곱하면 epipolar line이 나타난다 초록색 점은 유사도가 높으며, 빨간색 점은 유사도가 낮다 F를 통해 유사도를 검증할 수 있다 F를 통해 추론했을 때는 부정확할 수 있으므로 데이터만을 통해 어떤 매치가 옳은지 확인하기 위해 F 행렬을 통해 검증한다 이미지에서 Outlier가 나타나는 원인으로는 갑작스러운 밝기 변화, 움직임 등으로 깨끗한 이미지를 ..

SLAM/Visual SLAM 2023.11.28

[VSLAM]Epipolar Geometry

2개 이상의 이미지가 필요한 이유 2D -> 3D mapping 3D를 2D로 매핑하는 과정은 사영을 통해 구현할 수 있다 하지만 3D로 매핑할 경우를 Depth 값을 고려해야 한다 새로운 차원(깊이)에 대한 정보가 필요하기 때문에 이미지가 한 장이 아닌 두 장이 필요하다 핵심 문제 Visual SLAM을 위해서 이미지 프레임마다 카메라가 얼마나 이동했는지 알아야 한다 이미지부터 이미지 사이에 얼마나 이동했는지 카메라 프레임의 rigid body motion, 즉 pose 이동을 구해야 한다 모션 정보가 있으면 알 수 있지만 VSLAM에서는 정보가 없기 때문에 영상정보로부터 모션 정보를 추론해야 한다 두 개의 이미지로부터 모션 정보를 추론하기 위해 두 이미지 간의 기하학적 상관 관계를 유추해야 한다 Ep..

SLAM/Visual SLAM 2023.11.27

[VSLAM]특징점 기술의 역사

feature-based SLAM을 공부하기 위해서는 특징점에 대해 잘 알아야 한다 Computer vision 핵심 문제 특징점을 어떻게 잘 찾느냐 당시의 효율성을 가진 컴퓨터를 가지고 Lines Detector Sobel operator Hough transform Canny edge detection Line detection research 라인을 검출할 수록 물체의 의미를 추론할 수 있는 단서가 생겼다 라인을 검출한 사진들의 시차, 각도가 크게 다를 때 어떻게 같은 객체인지 알 수 있을까 Feature Detector Point feature Keypoint detector keypoint는 관심을 가지는 지점이다 Descriptor extractor(특징 기술자) descriptor는 우리가 ..

SLAM/Visual SLAM 2023.11.25

[VSLAM]카메라 센서의 구조

카메라 빛을 정확하게 받아오는 카메라가 좋은 카메라이다 Steps to capture light 포토 다이오드 센서를 통해 빛을 받아들이고 발생한 전압을 통해 디지털 신호로 변환한다 Light -> Color filter -> Photodiode -> Voltage/Current -> Analog to digital convertor 이후 들어온 Intergrated Signal Processor(ISP)에서 원본 데이터 RAW 파일을 sRGB scale로 변환한다 사진사들의 작업 파이프라인으로 카메라에 들어오는 광량을 조절한 후 이미지 센서에 들어오는 값을 저장한다 이후 후보정을 통해 원하는 이미지를 만들 수 있다 카메라 내부 파이프라인으로 렌즈에 빛이 들어오면 센서를 통해 디지털 신호 값을 받아온다 ..

SLAM/Visual SLAM 2023.11.24