면접시 준비 했던 전공 관련 질문과 답변
14 Jan 2021 | daily
- 논문에 대해 설명을 해주세요
- 저는 Semantic SLAM 어플리케이션을 이용하여 모방일로봇 네비게이션 시스템을 구축하였습니다. 이용한 어플리케이션에는, ORB-SLAM2와 yolov3가 결합된 동적환경에서의 맵핑과 로컬라이제이션입니다. 그러나 이 시스템은 카메라 센서 기반으로 된 슬램 시스템이기 때문에 데이터에 대한 오차가 발생합니다. 이를 encoder에서 얻어지는 wheel odometer를 이용하여서 Extended Kalman Filter를 통해 보정하였습니다. 그 외에 Object Avodiance, Motion Planning, Frontier-based Detection알고리즘을 개발하여 자율 탐험 및 네비게이션 시스템을 구축하였습니다.
- EKF 설명
- Non-Linear Model을 사용하여 KF를 통해 Pose Estimation을 한다면 non-gaussian Distribution으로 잘못된 pose Estimation을 할 수 없습니다. 이러한 문제를 해결하고자 Non-linear Model을 선형 근사값으로 만들어야하는데, 이때 Taylor 1st Series를 이용하여서 비선형모델을 선형 모델로 변환하여 푸는 EKF방식이다.
- 좀 더 자세하게 얘기해주세요
- EKF는 총 2개의 Motion Model과 Observation모델과 2개의 프로세스인 Prediction과 Correction으로 구성된 알고리즘이다. bayes filter 기반으로 된 Motion Model과 Observation Model은 Prediction 프로세스에서 Motion Model과 Control input값을 통한 Mean과 Covariance를 상태 추정하며, 이 추정된 값은 Correction Process에서 칼만게인과 Observation Model을 통해 상태 추정 보정이 된다.
- 답변 외에 추가적인 것:
- Motion Model은 이전 상태값을 State Transition Matrix에 계산을 하여 pose1을 구하고, Control Input(Velocity x,y and angle)값을 Velocity-based 모델을 통해 pose2를 구하고, process Noise(control input에 의해 결정되는 matrix기반으로 convariance값과 곱하여)를 구하여 상태와 Control input에 따른 모션에 대한 상태추정한다.
- Observation Model은 주로 센서로 부터 얻어진 데이터 이므로, 대부분 identity matrix로 설정하고, 실제로 측정되는 x,y,z값들을 매트릭스에 곱셈을하여서 얻어진다. 이때 Observation Noise도 있는데, 이는 임의로 주어진다.
- KF, EKF, UKF, Particle Filter 차이점
- 칼만 필터는 선형모델일때 사용이 되는 알고리즘이다. EKF는 비선형 모델일때 사용되는 모델이다. 대신 비선형을 선형근대화하여서 푸는 문제인데, 주행거리가 많아지면, 이는 결국 선형근대화값이기 때문에 에러가 증가하게 된다. 이를 보안하고자 unscented kalman filter가 있다, unscented Transform 방법을 통해 가우시안 범위 안에 선택된 sigma point의 출력값과 weight과 프레딕션 프로세스에서 Mean값과 Covariance 값을 계산한다. Kalman Filter들의 특징은 Incremental Method로 오직 이전값 데이터와 Control input 값만 가지고 상태를 추정한다.
- 반면에 Particle Filter는 이전에 가지고 있던 이력들을 지속적으로 활용하여 상태추정하는 방법이다. 모델 측정 범위 내에 포인트들을 랜덤으로 생성을 하고, Moition Model(Prediction)을 통해 가우시안 랜덤 안에 움직인 거리를 측정하고, Observation Model(Correction), 예측된 포인트 위치와 센서로 얻어진 실제 위치를 이용해 포인트 들의 weight를 업데이트 해준다(정규분포를 이용해 구함), 그리고 Resampling을 통해 weight 가 낮은 포인트들은 제거하고 큰 포인트들은 여러개로 복사한다. 그리고 포인트중 weight가 가장 큰 것을 포즈 타겟으로 삼거나 가중평균등을 사용하여 위치 선정한다.
- Particle Filter는 주행이 긴 시스템에서 좋은 시스템이며, 대신 계산량이 많다. 반면에 KF같은 경우 오직 이전 데이터만 활용하기 때문에 비교적 계산량이 적지만, 긴 주행을 할 겨우 오차가 발생할 수 있다.
- SIFT와 ORB의 차이점
- SIFT(Scale Invariant Feature Transform)는 유료 알고리즘이며 계산량이 많아 실시간(GPU사용하면 가능할 수)으로 사용하기에는 어렵다. 원리로는 Gausian Image Pyramid(이미지 피라미드를 생성할때 점점 gaussian blur의 크기를 넓힌다.)로 여러 이미지를 만든다음 Different of Gausian을 통해 이미지간의 근대점과 극소점을 추출하여서 이미지 안에 Keypoint를 구한다. 구한 Keypoint는 주변 discripter를 이용하여서 방향성분을 결정하고 특징점을 표현한다.
- 반면에 ORB의 방법은 Oriented Fast(Corner Detection(+image pyramid+corner중심+Orientation))을 통해 선과 코너 위주로 키프인트를 추출하여 크기에 대한 keypoint에 불변하게 하고 Rotated BRIEF(Blob detector(+회전에 약한 BRIEF계선+keypoint의 0,1차 moment를 이용하여서 방향성분 + hamming distance를 이용하여 속도와 메모리 절약))사용하여서 회전에 대한 개선을 하였다. 즉 SIFT와 다르게 선이나 모소리 위주로 키포인트를 추출을 하고, 이를 Rotated BRIEF알고리즘을 사용하여서 영상에 대한 회전, 스케일을 변화에 대한 불변 특징점 추출하였고, 계산도 빨라 실시간(CPU)으로 사용할 수 있다.
- 다양한 맵포인트들을 가지고 있을 것인데, 어떻게 최적화를 하였나요
- 자세한것은 저는 SLAM 시스템을 이용을 하여서 했기때문에, 잘 모릅니다. 그러나 특징점 추출과 일정 특징점이 넘어가면 맵포인트 생성과 카메라 포즈 데이터를 가지는 키프레임이 생성되고 MapDatabase에 저장하게 되는데, 이때 예를 들어 한 맵포인트가 여러 키프레임에서 공유하고 있을때, Bundle Adjustment를 통해서 MapPoints와 카메라 포즈를 최적화합니다.
- Bundle Adjustment에 대해 설명해 보세요
- 여러 맵포인트를 공유하고 있는 여러 키프레임을 가지고 맵포인트와 카메라 포즈를 최적화 하는 방법입니다. 특징적으로는, 예를 들어 4개에 키프레임이 100개 이상의 맵포인트를 공유한다고 할때 모든 맵포인트를 고려를 해서 최적화하기 힘듬으로 RANSAC알고리즘을 통해 약 4개의 맵포인트를 랜덤으로 선택을하고, 선택된 여러 프레임에서 공유하고 있는 맵포인트들을 Least Square 방법을 통해서 약 iteration 20회를 통해 키프레임과 맵포인트들의 포즈를 조정 합니다.
- 소형차 자율주행 시스탬 개발에 관심 있다고 하셨는데 왜?
- 인프라 V2X로 교통 체증 감소, 1인 가구 증가, 도시 밀집화를 통해 소형차가 증가할 것이라 생각이 듭니다. 이에 소형차 자율주행 시스템 개발에 도전하고 싶습니다.
- Machine Vision에서 배운 내용 설명
- multi geometry를 기반으로 OPENCV 알고리즘을 이용하여서 Pose Estimation 및 물체 인식 알고리즘을 만들었습니다.
- 논문을 쓰는데 도움을 주었던 과목들
- Matrix Theory와 Optimization Method입니다. 행렬은 homogous matrix 및 jacobian matrix, 행렬 변환에 대해서 이해를 하는데 도와 줬으며, Optimization Method같은 경우 비선형 문제를 선형화 해서 푸는 방법(tayor 1st series) 그리고 Gradient나 Least Square방법으로 에러를 최소화하여 문제를 최적화 하는 방법등이 SLAM시스템 이해하는데 도움을 줬으며 Extended Kalman Filter를 이해하는데 도움이 되었습니다.
- Mask RCNN 설명
- 물체를 인식하고 바운더리가 생성될때 바운더리에 색감을 익혀 세그멘티드하는 방식입니다. 물체 인식을 위해 backend network에 이미지를 넣어야 하는데 이때 이미지 사이즈를 1024로 맞춥니다. 이떄 사용한 backend network(신경 네트워크)는 Resnet-101로 각 layer에서 feature map 생성을 합니다(c_1,c_2,c_3,c_4)
- 최종 생성된 feature map의 classification, box regression이 output값으로 도출합니다.
- output으로 얻은 box regression을 원래 이미지에 reprojection 시켜 anchor box생성합니다.
- non-max suppression을 통해 생성된 anchor box중 score가 높은 anchor box를 제외하고 모두 삭제합니다.
- 각 크기가 다른 anchor box를 roi align을 통해 size를 조정합니다.
- Pose Estimation 해본 경험 및 설명
- shape detection으로 pose Estimation을 한적이 있습니다. 제 아이디어는 도형의 특징을 이용하여서 Pose Estimation을 하는 것이였고, 이때 canny Detection을 통해 도형 선들을 추출한다음 contour centroid알고리즘을 사용하여 도형의 중심점을 찾습니다. 그리고 찾은 중심점을 이전프레임과 현재프레임의 비교로 epipoloar line과 카메라 내부 파라미터를 PnP 알고리즘을 통해서 pose estimation을 하였습니다.
- 그 외에도, Object Detection ALgorithm을 사용하여서 똑같이 바운더리 박스를 생성한다음, contour centroid 알고리즘을 사용하여 도형의 중심점을 찾고, 그리고 찾은 중심점을 이전프레임과 현재프레임의 비교로 epipoloar line과 카메라 내부 파라미터를 PnP 알고리즘을 통해서 pose estimation을 하였습니다.
- Radar, lidar, 카메라의 장단점
- Lidar(레이저 펄스를 이용한) :
- 장점: FOV가 넓음, 정확함, 전처리 프로세스 필요 없이 환경 인식 가능, 주로 Mapping 및 localization에 많이 쓰임, 백엔드 프로세스 불필
- 단점: 안개나, 비 환경적 제약이 있음, 근거리 감지 어려움
- Radar(전자기파 주파수를 이용한) :
- 장점: FOV크기에 따른 단거리(넓으면), 장거리(작으면) 측정 범위, 환경적 제약이 다소 적음(야간에에서 레이더보다 유리), 주파수가 매우 빨라 주로 전방 후방 측면 장애물 감지 및 추정하는데 사용됨, 백엔드 프로세스 불필요
- 단점 : 물체의 형체에 따라 감지 어려움, 터미널 같은 공간에서 신호 왜곡을 받아 오차가 발생할 수 있음, 물체를 확실히 인식할수 없음.
- Camera(2D image를 이용):
- 장점 : 유일한 2D image, 표지판 및 라인 디텍션 등을 할 수 있음, 전처리 과정(feature-based, intensity-based)을 통해 환경 인지도 할 수 있음(주로 테슬라), 저렴.
- 단점 : 계산량이 많음, 카메라여서 빛이나 환경 제약에 약함, 정확하지 않음
- Radar 원리
- 전자파 반사되는 신호 기반으로 주변 사물과 거리 속도 방향 추출
- 대표적으로 FMCW(Frequency-Modulated Continuous Wave)
- Frequency synthesize(합성)
- A power Amplifier
- Antena
- a mixer
- 전자기파 방출을 하고 안테나를 통해 받음.
- FMCW 시간이 점점 지남에 따라 톱니바퀴 파형 및 삼각파형으로 선형으로 변함
- 디처핑(Dechirping)을 이용해 주파수 대역을 얻음(bit 신호(1,0), 거리정보 포함)
- 비트신호 대역폭 만큼 샘플링하기
- Detect Object(Radar Cross Section)
- 고려
- geometry of Target
- the direction of the Radar
- Frequency
- the material of the Target
- 주로 Fast fourier Transform을 통해 time domain을 frequency domain으로 바꿔 물체를 감지를 한다.
- cluster 군집화를 통해 노이즈 데이터 제거
- peak detection
- 최근에는 Synthetic Aperture Radar(SAR):라이더 형태로 포인트클라우들 이용할 수 있다(테슬라가 사용중)
- A* 설명
- Grid-based, Graph-tree 탐색 알고리즘
- weight(가중치)최소가 되는 지점 우선순위 탐색
- 휴리스틱으로 통해 최소경로 탐색
- f(x) = h(x) + g(x)
- h(x) : 출발 노드로부터 도착 노드까지 가중치
- g(x) : 노드 n로부터 도착 노드까지 추정 경로 가중치(맨하튼 거리(장애물 무시)
- Open list(검색가능성 있는 노드), Closed list(이미 검색이 끝난 집합) 이용하여 노드 관리
- Open List내의 f(x) 가중치 값이 가장 작은 노드부터 탐색
- PRM, RRT* 설명
- RRT
- Sampling based algorithm으로 configure space에서 랜덤한 위치에 포인트를 생성하고 시작점에서 부터 트리를 신속하게 확장하여 목적지 까지 가는 방법
- 랜덤 노드 임의로 생성 -> 랜덤 노드로부터 가장 가까중 노드 선택 -> 랜덤 노드와 가장가까운 노드간 방향과 스텝 고려햐여서 새로운 노드 생성-> 노드를 트리에 추가(만약 충돌이 안된다면)
- RRT*
- 트리를 구성하는 기존 노드를 대체하여 최적 경로
- 랜덤 노드 임의로 지정 -> 랜덤노드로부터 가장 가까운 노드 선택 -> 랜덤 노드와 가장 가까운 노드간 방향과 스텝 고려하여 새로운 노드 생성 -> 새로운 노드와 가까운 노드를 선택-> 가까운 노드 주변 노드의 cost를 탐색하여 낮은 노드와 새로운 노드와 연결 -> 트리 재구성
- PRM
- 랜덤으로 노드를 생성하고 local planner(knearest neighbors)을 통해 근접 노드간에 연결을 함 -> 충분히 dense 하게 연결이 되었으면, Graph search algorithm으로 start->goal대한 최적화 path 찾음
- knearest neighbors: 유사한 특성을 가진 데이터는 유사한 범주에 속한다(classification) k의 수만큼 근접 포인터들을 연결한다.
- ORB-SLAM2에 대해 설명
- 총 3개의 Thread로 구성되어있다. Tracking, Local Mapping, Loop Closure. Tracking Process에서 ORB 키포인트들을 생성을 합니다. 그리고 PnP알고리즘을 통해 맵포인트 생성과 카메라 포즈를 구합니다. 만약 맵포인트가 일정 임계값을 넘어가게 되면 키프레임으로 간주를 하여서 맵포인트와 카메라 포즈데이터를 가지고 있는 키프레임을 Local Mapping에다가 넘어가게 됩니다.
- Local Mapping에 넘어가게 된 keyframe은 BoW을 통해 프레임의 특징을 얻게 되고 이는 Map Database에 저장되게 됩니다. 또한 현재 프레임과 맵데이터베이스에 저장된 프레임과 공유 맵포인트가 있다면, Local BA를통해 맵포인트와 프레임의 위치를 조정합니다.
- 마지막 Loop Closure에서는 BoW를 통해 만약 현재 이미지의 특징이 맵데이터베이스에 저장된 어떤 프레임과 일치할경우, 이전에 방문한 scene으로 간주하여 loop closure가 이루어 지게 됩니다. 이떄 Full BA를 사용하게 되면서, 공유하고있는 맵포인트의 키프레임들이 조정이 되면서 Map을 이루게 됩니다.
- Semantic SLAM(ORB-SLAM2 with yolov3)
- 동적 물체를 Mapping에 제외하게 되면서 동적환경에서의 SLAM입니다. 주요 특징은, Thread Tracking에서 Feature point가 추출이 될 때 동시에 yolov3를 통해 물체의 boundary box를 생성하게 됩니다. 이때 바운더리 박스 안에 있는 Feature point는 이전 프레임과 현재프레임의 관계를 고려한 consistancy moving object detection(epipoloar라인을 통한 맵포인트의 이전프레임에서 현재프레임의 이동 크기)알고리즘을 통해 Distance를 구하고 일정 임계값을 넘어가게 된다면 동적 물체로 간주하여 mapping에서 outlier시켜버립니다.
- Lie group, lie algebra 설명
- SLAM은 회전과 이동이 포함된 카메라 포즈값을 업데이트하면서 최적의 값을 찾아야 하는데 회전행렬(Rotation Matrix)의 경우 행렬식이 1인 직교행렬이라는 제약조건 때문에 복잡도 증가(singularity)
- 리군과 리대수로 변환하게 되면 카메라 포스 추정의 문제를 제약이 없는 최적화 문제로 전환하여 접근이 가능
- epipolar constraint
- When two cameras view a 3D scene from two distinct positions, there are a number of geometric relations between the 3D points and their projections onto the 2D images that lead to constraints between the image points.
- 2개의 프레임에 공유하고 있는 맵포인트들의 기하학적 관계(Epipolar line and point)를 통해 카메라 내부파라미터를 이용하여서 MapPoints(깊이를 구할 수 있따.)를 생성할 수 있다. 생성된 MapPoints들은 PnP같은 매칭 알고리즘을 사용을 하여 카메라 포스를 추정할 수 있다.
- relocalization
- 프레임에 맵포인트가 너무작아 트래킹을 할 수 없는 경우, 특징점 알고리즘이나 Direct Algorithm 으로 추출된 특징점들을 BoW을 이용하여서 이미지 특징점을 만들어 놓는다. 그리고 이것들을 맵데이터베이스에서 비슷한 특징을 가지고 있는 프레임을 이용하여서 Relocalization을 한다.
- optical flow(Direct Method)
- 쓰는이유 1: Feature-based Methods는 특징 추출과 디스크립터 계산에 소요되는 시간이 큼
- 쓰는이유 2: 특징점 사용하는 경우 특징점을 제외한 나머지 정보 무시
- 쓰는이유 3: 특징점이 없는 곳에서 맵핑 힘듬
- Optical Flow : 이미지의 픽셀 모션
- 시간 경과에 따른 이미지간의 픽셀 이동을 2D image pixel(u,v)설명
- u,v의 해를 구하는 것이 목표
- dens optical flow : 모든 픽셀 계산
- Sparse Optical Flow : 부분픽셀 계산 -> Lucas-knande Optical Flow(LK Optical Flow)
- 픽셀에 대한 Intensity 추적(LK Optical Flow(밝기를 constant 주어서 변화하는것 위주로 맵핑))
- Direct Method: 카메라 모션 모델
- Optical Flow로 얻어진 이미지 픽셀에 대한 모션을 카메라 파라미터를 이용하여서 구하는 방법
- feature matching and dense matching
- Feature-based Methods
- 특징 추출과 디스크립터 계산에 소요되는 시간이 큼
- 특징점 사용하는 경우 특징점을 제외한 나머지 정보 무시
- 특징점 없는 곳에서 맵핑이 힘듬
- Dense matching
- 픽셀에 대한 데이터량이 큼(CPU로 힘듬)
- 장점으로는 모션블루어에 강함
- 빠른 모션에 강하고, 특징점 없는 곳에서도 매핑 가능
- 정확함
- 리얼타임으로 쓰려면 빠른 컴퓨팅 프로세서 요구
- Bundle AdjustMent 설명
- 여러 맵포인트를 공유하고 있는 키프레임들을 이용하여서 Least Square를 통해 MapPoints와 포즈를 최적화 시키는 방법. BA를 할때 공유하고 있는 모든 맵포인트를 공유하게 된다면 계산량이 많아 짐으로 RANSAC알고리즘을 통해 랜덤으로 맵포인트를 정하고 그 맵포인트를 각 프레임에 reprojection을 하고 Least Square을통해 최적화를 시킨다.
- Hamilton matrix
- Conjugate of Matrix(켤레 전치)를 해도 항상 같다.
- eigenvalues가 항상 real이기 때문에, diagonalizable하다.
- 즉 실제의 eigenvector와 eigenvalues를 구할수있어 문제를 푸는데 도움이 된다.(로봇에서 예를 들어 x,y같은 변수의 값을 찾는 것)
- Quaternion 을 사용하는 이유
- 행렬대신 사용하는 4개로 이루어진 복소수로 행렬에 비해 연산속도가 빠르며 차지하는 메모리속도가 낮다. 또한 최단호(shortest arc)보간으로 오류 발생률이 적다
- 회전행렬은 1인 직교행렬이라는 제약 조건에 따라 최적화 문제 복잡도 증가
- 회전행렬은 3DOF를 표현하기 위해 9개 값을 사용하는 중복성 존재
- 오일러 각에서는 특정 상황에서 1자유도를 잃어버리는 짐벌락(gimbal rock)
- 보간과 반복에 적합하지 않아 주로 결과의 신속한 가시화를 위해 사용
- 최적화 수업에서 무엇을 배웠는지
- 비선형 문제를 선형 근대화 시켜서 푸는 문제(Tayor series), 그리고 최적화 시켜서 푸는 문제 Decent Gradient 및 Least Sqaure, LM 등.
- DSO, ORB-SLAM2 중 왜 DSO가 rotation에 약한지
- Relocalization 이 없기 때문이다, 즉 ORB-SLAM2는 Relocalization 모듈이 있어 피쳐가 부족한 프레임일 경우 BoW를 통해 맵데이터베이스의 유사 프레임을 이용하여서 포스를 트래킹하는 반면에 DSO이런 모듈이 없기 때문에 로스트하기가 쉽다.
- 모션 blur에 약하다, 그리고 빠르게 전환하는것에 약하다.
- least square 설명
- Lidar SLAM - Iterative Closest Point(ICP)
- (1)포인트를 샘플링
- 샘플링된 포인트 근처 실제 포인트 탐색(매칭)
- 샘플링된 포인트과 선택된 근처 포인트의 질이 나쁜 포인트 쌍은 제거(차이가 너무 난다는지)
- 매칭된 포인트들에 가중치를 구하고, least square을 통해 최적의 Transformation(R,t) 구함
- 최적화된 포인트들로 업데이트(2번으로 넘어감)
- Visual SLAM - Bundle Adjustment(BA)
- 현재 로봇 센서 값과 예상 값에 대한 오차를 줄이는 방법 (실제 센서값과 예상 센서값 차이 최소화)
- Visual SLAM과 Lidar SLAM의 장점
- Lidar SLAM : 높은 정확도, 단일 센서로 뎁스 추정 가능
- Visual SLAM : 저렴한 가격, 센서의 보급, 빠른 처리 속도
- 단점 : 긴 이미지 전처리 과정, 빠른움직임에대해 취약, 뎁스 추정 불간으
- RANSAC설명
- 수많은 데이터중 랜덤으로 추출하여서 낮은 에러가 나올때 까지 parameter estimation을 진행을 하면서 outlier제거 가능.
- Feature-based SLAM의 문제점
- Density하지 못함(Sparse Information), 이말은 특징이 적은 프레임일 경우 맵핑을 할 수가 없음.
- 특징점 뽑는데 계산량이 많음
- Direct SLAM의 문제점
- pixel의 광계를 사용하여서 특징점 추출하다보니 계산량이 많음.
- 장점으로는 카메라 속도가 빠르면 알고리즘이 빨리 끝남, 정확함, Motion Blur에 강인함
- VIO 어려운 점
- frequency가 다름, IMU매우 빠름(데이타 얼라인이 필요함(initialise))
- IMU 값이 항상 튀기 때문에
- 로봇의 자율주행과 차량 자율주행 차이
- 로봇은 비교적 사람이 이용하는 공간에 주행하게 되는데, 주로 실내 호텔 서비스나 배달 서비스등 비교적 동적인 환경에서 사용이 됨으로, 동적 물체에 대한 감지 및 주행에 지장이 되지 않는 로직이 필요합니다. 반면에 차량같은 경우 도로나 골목등에 사용하게 되는데, 사고가 나면 인적 피해가 일어날 수 있으므로, 최대한 인적피해가 나지 않도록, 더 세밀한 시스템이 필요합니다.
- 자율주행 센서가 어떻게 사용되고 있는지
- 라이다와 레이더, 카메라 센서등이 있습니다. 주로 맵핑과 로컬라이제이션에는 라이다를 사용하여 광범위의 정확한 환경 인지를 하고, 레이더는 전방이나 후방 측면의 물체들을 감지, 상태 추정하는데 사용됩니다. 그리고 카메라 센서같은 경우 표지판이나 라인 디텍터를 이용하는데 쓰입니다.
- 요즘 추세에는 레이더를 이용하여 매핑과 로컬리제이션을 하는경우가 있고, 카메라 센서를 이용한 전처리과정을 통해 매핑과 로컬리제이션 그리고 물체 감지등을 하고 있습니다.
- 학교에서 배운 내용 중 센서 퓨전하는데 도움이 되었던 과목
- Matrix Theory와 Optimization Method입니다. 행렬은 homogous matrix 및 jacobian matrix, 행렬 변환에 대해서 이해를 하는데 도와 줬으며, Optimization Method같은 경우 비선형 문제를 선형화 해서 푸는 방법(tayor 1st series) 그리고 Gradient나 Least Square방법으로 에러를 최소화하여 문제를 최적화 하는 방법등이 SLAM시스템 이해하는데 도움을 줬으며 Extended Kalman Filter를 이해하는데 도움이 되었습니다.
- Lidar 사용해본 경험? RGB-D카메라랑의 차이점
- 실제로 라이다를 사용해본 적은 없다. 그러나 카메라 센서와 라이다 센서의 차이점은 아마 전처리과정이 있을 것이다. 라이다 센서 같은 경우에는 레이저 펄스를 이용한 환경인지이기 때문에 범위가 넓고 전처리과정이 없이 바로 환경을 인지할 수 있다. 반면에 카메라는 2D이미지이기 때문에 환경을 인지하려면 특징점을 이용한 feature-based나 픽셀간 밝기를 이용한 intensity based 방법을 사용하여서 환경을 인지를 하고 공간적 데이터를 얻으려면 카메라 내부파라미터를 이용한 PnP알고리즘을 통해 공간에 대한 환경 인지를 할 수 있다.
- 중국, 미국, 한국 자율주행 미래
- 아무래도 미국이 가장 앞서갈고 갈고 그다음이 중국일거 같다. 자율주행에 있어 중요한 요소가 센서 기술와 IT기술, 그리고 지형이다. 미국은 세계 최고의 IT기술과 센서, 그리고 다양한 지형을 갖추고 있다. 중국같은 경우에도 요즘 세계 최고의 IT기술과 가성비 좋은 세서들이 있으며, 다양한 지형을 갖추고 있다. 반면에 한국 같은 경우 좋은 It기술을 갖고 있고, 좋은 센서들을 가지고 있지만, 한정된 지형을 가지고 있어, 자율주행의 다양한 데이터를 얻는데 한계가 있다.
- 개발을 하면서 힘들었던 점
- ROS프레임 워크를 배우는데 어려웠고, SLAM도 스스로 배우다 보니 어려웠다.
- 혼자 프로젝트하였는가
- 데이터 퓨전은 혼자하였고, 그 이외 integration 하는 것은 동료들과 함께 했다.
- 프로젝트하면서 어려웠던 점
- ROS 프래임 워크를 배우는데 어려웠고, SLAM도 스스로 배우다 보니 어려웠다.
- RAM메모리 주소에서 프로세스로 데이터 전송 어떻게 되는지
- 프로세스 명령어로 부터 데이터버스, 제어 버스(명령어), 주소버스가 프로세서 안으로 데이터가 들어오 게된다 들어오게 되고 계산 끝나고 나서 데이터는 다시 데이터버스 주소버스 제어버스를 통해 램으로 저장하게 된다.
- 병렬 프로세싱
- Thread를 이용하여서 할 수 있다.
- 머신러닝 개발 경험 있다면 무엇을 개발했는지
- sicik learn을 이용하여서 Linear Regression을 통한 미래에 대한 아보카도 가격을 추정하였습니다. 그 외에도 텐서플로우를 이용하여서 CNN을 통한 Object Recognition을 하였습니다.
- PID Control 설명
- setpoint와 모델의 출력 output의 오차를 feedback하여 setpoint에 도달하게 끔 도와주는 컨트롤러 이다.
- Proportional은 오차의 값을 증폭시키고 setpoint근접하게 도와주지면 steady-state 문제가 있다.(error가 작아 setpoint에 도달하지 못하고 계속 일정 state에 머무는 것)
- 이를 integration 함수를 추가하여 steady-state error을 제거하고
- differential 함수를 사용하여서 갑자기 변화하는 state에 대한 overfit현상을 잡는다.
- djaskar 설명
- 한노드 기준으로 모든 노드 탐색
- BFS(모든 탐색점 Traversal)
- O(n^3)
- 드론과 모바일로봇 차이
- 아무래도 자유도 차이가 있을것 같다. 드론은 6DOF, 모바일로봇은 3DOF
- 논문에 대해 설명을 해주세요
- 저는 Semantic SLAM 어플리케이션을 이용하여 모방일로봇 네비게이션 시스템을 구축하였습니다. 이용한 어플리케이션에는, ORB-SLAM2와 yolov3가 결합된 동적환경에서의 맵핑과 로컬라이제이션입니다. 그러나 이 시스템은 카메라 센서 기반으로 된 슬램 시스템이기 때문에 데이터에 대한 오차가 발생합니다. 이를 encoder에서 얻어지는 wheel odometer를 이용하여서 Extended Kalman Filter를 통해 보정하였습니다. 그 외에 Object Avodiance, Motion Planning, Frontier-based Detection알고리즘을 개발하여 자율 탐험 및 네비게이션 시스템을 구축하였습니다.
- EKF 설명
- Non-Linear Model을 사용하여 KF를 통해 Pose Estimation을 한다면 non-gaussian Distribution으로 잘못된 pose Estimation을 할 수 없습니다. 이러한 문제를 해결하고자 Non-linear Model을 선형 근사값으로 만들어야하는데, 이때 Taylor 1st Series를 이용하여서 비선형모델을 선형 모델로 변환하여 푸는 EKF방식이다.
- 좀 더 자세하게 얘기해주세요
- EKF는 총 2개의 Motion Model과 Observation모델과 2개의 프로세스인 Prediction과 Correction으로 구성된 알고리즘이다. bayes filter 기반으로 된 Motion Model과 Observation Model은 Prediction 프로세스에서 Motion Model과 Control input값을 통한 Mean과 Covariance를 상태 추정하며, 이 추정된 값은 Correction Process에서 칼만게인과 Observation Model을 통해 상태 추정 보정이 된다.
- 답변 외에 추가적인 것:
- Motion Model은 이전 상태값을 State Transition Matrix에 계산을 하여 pose1을 구하고, Control Input(Velocity x,y and angle)값을 Velocity-based 모델을 통해 pose2를 구하고, process Noise(control input에 의해 결정되는 matrix기반으로 convariance값과 곱하여)를 구하여 상태와 Control input에 따른 모션에 대한 상태추정한다.
- Observation Model은 주로 센서로 부터 얻어진 데이터 이므로, 대부분 identity matrix로 설정하고, 실제로 측정되는 x,y,z값들을 매트릭스에 곱셈을하여서 얻어진다. 이때 Observation Noise도 있는데, 이는 임의로 주어진다.
- KF, EKF, UKF, Particle Filter 차이점
- 칼만 필터는 선형모델일때 사용이 되는 알고리즘이다. EKF는 비선형 모델일때 사용되는 모델이다. 대신 비선형을 선형근대화하여서 푸는 문제인데, 주행거리가 많아지면, 이는 결국 선형근대화값이기 때문에 에러가 증가하게 된다. 이를 보안하고자 unscented kalman filter가 있다, unscented Transform 방법을 통해 가우시안 범위 안에 선택된 sigma point의 출력값과 weight과 프레딕션 프로세스에서 Mean값과 Covariance 값을 계산한다. Kalman Filter들의 특징은 Incremental Method로 오직 이전값 데이터와 Control input 값만 가지고 상태를 추정한다.
- 반면에 Particle Filter는 이전에 가지고 있던 이력들을 지속적으로 활용하여 상태추정하는 방법이다. 모델 측정 범위 내에 포인트들을 랜덤으로 생성을 하고, Moition Model(Prediction)을 통해 가우시안 랜덤 안에 움직인 거리를 측정하고, Observation Model(Correction), 예측된 포인트 위치와 센서로 얻어진 실제 위치를 이용해 포인트 들의 weight를 업데이트 해준다(정규분포를 이용해 구함), 그리고 Resampling을 통해 weight 가 낮은 포인트들은 제거하고 큰 포인트들은 여러개로 복사한다. 그리고 포인트중 weight가 가장 큰 것을 포즈 타겟으로 삼거나 가중평균등을 사용하여 위치 선정한다.
- Particle Filter는 주행이 긴 시스템에서 좋은 시스템이며, 대신 계산량이 많다. 반면에 KF같은 경우 오직 이전 데이터만 활용하기 때문에 비교적 계산량이 적지만, 긴 주행을 할 겨우 오차가 발생할 수 있다.
- SIFT와 ORB의 차이점
- SIFT(Scale Invariant Feature Transform)는 유료 알고리즘이며 계산량이 많아 실시간(GPU사용하면 가능할 수)으로 사용하기에는 어렵다. 원리로는 Gausian Image Pyramid(이미지 피라미드를 생성할때 점점 gaussian blur의 크기를 넓힌다.)로 여러 이미지를 만든다음 Different of Gausian을 통해 이미지간의 근대점과 극소점을 추출하여서 이미지 안에 Keypoint를 구한다. 구한 Keypoint는 주변 discripter를 이용하여서 방향성분을 결정하고 특징점을 표현한다.
- 반면에 ORB의 방법은 Oriented Fast(Corner Detection(+image pyramid+corner중심+Orientation))을 통해 선과 코너 위주로 키프인트를 추출하여 크기에 대한 keypoint에 불변하게 하고 Rotated BRIEF(Blob detector(+회전에 약한 BRIEF계선+keypoint의 0,1차 moment를 이용하여서 방향성분 + hamming distance를 이용하여 속도와 메모리 절약))사용하여서 회전에 대한 개선을 하였다. 즉 SIFT와 다르게 선이나 모소리 위주로 키포인트를 추출을 하고, 이를 Rotated BRIEF알고리즘을 사용하여서 영상에 대한 회전, 스케일을 변화에 대한 불변 특징점 추출하였고, 계산도 빨라 실시간(CPU)으로 사용할 수 있다.
- 다양한 맵포인트들을 가지고 있을 것인데, 어떻게 최적화를 하였나요
- 자세한것은 저는 SLAM 시스템을 이용을 하여서 했기때문에, 잘 모릅니다. 그러나 특징점 추출과 일정 특징점이 넘어가면 맵포인트 생성과 카메라 포즈 데이터를 가지는 키프레임이 생성되고 MapDatabase에 저장하게 되는데, 이때 예를 들어 한 맵포인트가 여러 키프레임에서 공유하고 있을때, Bundle Adjustment를 통해서 MapPoints와 카메라 포즈를 최적화합니다.
- Bundle Adjustment에 대해 설명해 보세요
- 여러 맵포인트를 공유하고 있는 여러 키프레임을 가지고 맵포인트와 카메라 포즈를 최적화 하는 방법입니다. 특징적으로는, 예를 들어 4개에 키프레임이 100개 이상의 맵포인트를 공유한다고 할때 모든 맵포인트를 고려를 해서 최적화하기 힘듬으로 RANSAC알고리즘을 통해 약 4개의 맵포인트를 랜덤으로 선택을하고, 선택된 여러 프레임에서 공유하고 있는 맵포인트들을 Least Square 방법을 통해서 약 iteration 20회를 통해 키프레임과 맵포인트들의 포즈를 조정 합니다.
- 소형차 자율주행 시스탬 개발에 관심 있다고 하셨는데 왜?
- 인프라 V2X로 교통 체증 감소, 1인 가구 증가, 도시 밀집화를 통해 소형차가 증가할 것이라 생각이 듭니다. 이에 소형차 자율주행 시스템 개발에 도전하고 싶습니다.
- Machine Vision에서 배운 내용 설명
- multi geometry를 기반으로 OPENCV 알고리즘을 이용하여서 Pose Estimation 및 물체 인식 알고리즘을 만들었습니다.
- 논문을 쓰는데 도움을 주었던 과목들
- Matrix Theory와 Optimization Method입니다. 행렬은 homogous matrix 및 jacobian matrix, 행렬 변환에 대해서 이해를 하는데 도와 줬으며, Optimization Method같은 경우 비선형 문제를 선형화 해서 푸는 방법(tayor 1st series) 그리고 Gradient나 Least Square방법으로 에러를 최소화하여 문제를 최적화 하는 방법등이 SLAM시스템 이해하는데 도움을 줬으며 Extended Kalman Filter를 이해하는데 도움이 되었습니다.
- Mask RCNN 설명
- 물체를 인식하고 바운더리가 생성될때 바운더리에 색감을 익혀 세그멘티드하는 방식입니다. 물체 인식을 위해 backend network에 이미지를 넣어야 하는데 이때 이미지 사이즈를 1024로 맞춥니다. 이떄 사용한 backend network(신경 네트워크)는 Resnet-101로 각 layer에서 feature map 생성을 합니다(c_1,c_2,c_3,c_4)
- 최종 생성된 feature map의 classification, box regression이 output값으로 도출합니다.
- output으로 얻은 box regression을 원래 이미지에 reprojection 시켜 anchor box생성합니다.
- non-max suppression을 통해 생성된 anchor box중 score가 높은 anchor box를 제외하고 모두 삭제합니다.
- 각 크기가 다른 anchor box를 roi align을 통해 size를 조정합니다.
- Pose Estimation 해본 경험 및 설명
- shape detection으로 pose Estimation을 한적이 있습니다. 제 아이디어는 도형의 특징을 이용하여서 Pose Estimation을 하는 것이였고, 이때 canny Detection을 통해 도형 선들을 추출한다음 contour centroid알고리즘을 사용하여 도형의 중심점을 찾습니다. 그리고 찾은 중심점을 이전프레임과 현재프레임의 비교로 epipoloar line과 카메라 내부 파라미터를 PnP 알고리즘을 통해서 pose estimation을 하였습니다.
- 그 외에도, Object Detection ALgorithm을 사용하여서 똑같이 바운더리 박스를 생성한다음, contour centroid 알고리즘을 사용하여 도형의 중심점을 찾고, 그리고 찾은 중심점을 이전프레임과 현재프레임의 비교로 epipoloar line과 카메라 내부 파라미터를 PnP 알고리즘을 통해서 pose estimation을 하였습니다.
- Radar, lidar, 카메라의 장단점
- Lidar(레이저 펄스를 이용한) :
- 장점: FOV가 넓음, 정확함, 전처리 프로세스 필요 없이 환경 인식 가능, 주로 Mapping 및 localization에 많이 쓰임, 백엔드 프로세스 불필
- 단점: 안개나, 비 환경적 제약이 있음, 근거리 감지 어려움 - Radar(전자기파 주파수를 이용한) :
- 장점: FOV크기에 따른 단거리(넓으면), 장거리(작으면) 측정 범위, 환경적 제약이 다소 적음(야간에에서 레이더보다 유리), 주파수가 매우 빨라 주로 전방 후방 측면 장애물 감지 및 추정하는데 사용됨, 백엔드 프로세스 불필요
- 단점 : 물체의 형체에 따라 감지 어려움, 터미널 같은 공간에서 신호 왜곡을 받아 오차가 발생할 수 있음, 물체를 확실히 인식할수 없음. - Camera(2D image를 이용):
- 장점 : 유일한 2D image, 표지판 및 라인 디텍션 등을 할 수 있음, 전처리 과정(feature-based, intensity-based)을 통해 환경 인지도 할 수 있음(주로 테슬라), 저렴.
- 단점 : 계산량이 많음, 카메라여서 빛이나 환경 제약에 약함, 정확하지 않음
- Radar 원리
- 전자파 반사되는 신호 기반으로 주변 사물과 거리 속도 방향 추출
- 대표적으로 FMCW(Frequency-Modulated Continuous Wave)
- Frequency synthesize(합성)
- A power Amplifier
- Antena
- a mixer
- 전자기파 방출을 하고 안테나를 통해 받음.
- FMCW 시간이 점점 지남에 따라 톱니바퀴 파형 및 삼각파형으로 선형으로 변함
- 디처핑(Dechirping)을 이용해 주파수 대역을 얻음(bit 신호(1,0), 거리정보 포함)
- 비트신호 대역폭 만큼 샘플링하기 - Detect Object(Radar Cross Section)
- 고려
- geometry of Target
- the direction of the Radar
- Frequency
- the material of the Target
- 주로 Fast fourier Transform을 통해 time domain을 frequency domain으로 바꿔 물체를 감지를 한다.
- cluster 군집화를 통해 노이즈 데이터 제거
- peak detection - 최근에는 Synthetic Aperture Radar(SAR):라이더 형태로 포인트클라우들 이용할 수 있다(테슬라가 사용중)
- A* 설명
- Grid-based, Graph-tree 탐색 알고리즘
- weight(가중치)최소가 되는 지점 우선순위 탐색
- 휴리스틱으로 통해 최소경로 탐색
- f(x) = h(x) + g(x)
- h(x) : 출발 노드로부터 도착 노드까지 가중치
- g(x) : 노드 n로부터 도착 노드까지 추정 경로 가중치(맨하튼 거리(장애물 무시) - Open list(검색가능성 있는 노드), Closed list(이미 검색이 끝난 집합) 이용하여 노드 관리 - Open List내의 f(x) 가중치 값이 가장 작은 노드부터 탐색
- PRM, RRT* 설명
- RRT
- Sampling based algorithm으로 configure space에서 랜덤한 위치에 포인트를 생성하고 시작점에서 부터 트리를 신속하게 확장하여 목적지 까지 가는 방법
- 랜덤 노드 임의로 생성 -> 랜덤 노드로부터 가장 가까중 노드 선택 -> 랜덤 노드와 가장가까운 노드간 방향과 스텝 고려햐여서 새로운 노드 생성-> 노드를 트리에 추가(만약 충돌이 안된다면) - RRT*
- 트리를 구성하는 기존 노드를 대체하여 최적 경로
- 랜덤 노드 임의로 지정 -> 랜덤노드로부터 가장 가까운 노드 선택 -> 랜덤 노드와 가장 가까운 노드간 방향과 스텝 고려하여 새로운 노드 생성 -> 새로운 노드와 가까운 노드를 선택-> 가까운 노드 주변 노드의 cost를 탐색하여 낮은 노드와 새로운 노드와 연결 -> 트리 재구성 - PRM
- 랜덤으로 노드를 생성하고 local planner(knearest neighbors)을 통해 근접 노드간에 연결을 함 -> 충분히 dense 하게 연결이 되었으면, Graph search algorithm으로 start->goal대한 최적화 path 찾음
- knearest neighbors: 유사한 특성을 가진 데이터는 유사한 범주에 속한다(classification) k의 수만큼 근접 포인터들을 연결한다.
- ORB-SLAM2에 대해 설명
- 총 3개의 Thread로 구성되어있다. Tracking, Local Mapping, Loop Closure. Tracking Process에서 ORB 키포인트들을 생성을 합니다. 그리고 PnP알고리즘을 통해 맵포인트 생성과 카메라 포즈를 구합니다. 만약 맵포인트가 일정 임계값을 넘어가게 되면 키프레임으로 간주를 하여서 맵포인트와 카메라 포즈데이터를 가지고 있는 키프레임을 Local Mapping에다가 넘어가게 됩니다.
- Local Mapping에 넘어가게 된 keyframe은 BoW을 통해 프레임의 특징을 얻게 되고 이는 Map Database에 저장되게 됩니다. 또한 현재 프레임과 맵데이터베이스에 저장된 프레임과 공유 맵포인트가 있다면, Local BA를통해 맵포인트와 프레임의 위치를 조정합니다.
- 마지막 Loop Closure에서는 BoW를 통해 만약 현재 이미지의 특징이 맵데이터베이스에 저장된 어떤 프레임과 일치할경우, 이전에 방문한 scene으로 간주하여 loop closure가 이루어 지게 됩니다. 이떄 Full BA를 사용하게 되면서, 공유하고있는 맵포인트의 키프레임들이 조정이 되면서 Map을 이루게 됩니다.
- Semantic SLAM(ORB-SLAM2 with yolov3)
- 동적 물체를 Mapping에 제외하게 되면서 동적환경에서의 SLAM입니다. 주요 특징은, Thread Tracking에서 Feature point가 추출이 될 때 동시에 yolov3를 통해 물체의 boundary box를 생성하게 됩니다. 이때 바운더리 박스 안에 있는 Feature point는 이전 프레임과 현재프레임의 관계를 고려한 consistancy moving object detection(epipoloar라인을 통한 맵포인트의 이전프레임에서 현재프레임의 이동 크기)알고리즘을 통해 Distance를 구하고 일정 임계값을 넘어가게 된다면 동적 물체로 간주하여 mapping에서 outlier시켜버립니다.
- Lie group, lie algebra 설명
- SLAM은 회전과 이동이 포함된 카메라 포즈값을 업데이트하면서 최적의 값을 찾아야 하는데 회전행렬(Rotation Matrix)의 경우 행렬식이 1인 직교행렬이라는 제약조건 때문에 복잡도 증가(singularity)
- 리군과 리대수로 변환하게 되면 카메라 포스 추정의 문제를 제약이 없는 최적화 문제로 전환하여 접근이 가능
- epipolar constraint
- When two cameras view a 3D scene from two distinct positions, there are a number of geometric relations between the 3D points and their projections onto the 2D images that lead to constraints between the image points.
- 2개의 프레임에 공유하고 있는 맵포인트들의 기하학적 관계(Epipolar line and point)를 통해 카메라 내부파라미터를 이용하여서 MapPoints(깊이를 구할 수 있따.)를 생성할 수 있다. 생성된 MapPoints들은 PnP같은 매칭 알고리즘을 사용을 하여 카메라 포스를 추정할 수 있다.
- relocalization
- 프레임에 맵포인트가 너무작아 트래킹을 할 수 없는 경우, 특징점 알고리즘이나 Direct Algorithm 으로 추출된 특징점들을 BoW을 이용하여서 이미지 특징점을 만들어 놓는다. 그리고 이것들을 맵데이터베이스에서 비슷한 특징을 가지고 있는 프레임을 이용하여서 Relocalization을 한다.
- optical flow(Direct Method)
- 쓰는이유 1: Feature-based Methods는 특징 추출과 디스크립터 계산에 소요되는 시간이 큼
- 쓰는이유 2: 특징점 사용하는 경우 특징점을 제외한 나머지 정보 무시
- 쓰는이유 3: 특징점이 없는 곳에서 맵핑 힘듬
- Optical Flow : 이미지의 픽셀 모션
- 시간 경과에 따른 이미지간의 픽셀 이동을 2D image pixel(u,v)설명
- u,v의 해를 구하는 것이 목표
- dens optical flow : 모든 픽셀 계산
- Sparse Optical Flow : 부분픽셀 계산 -> Lucas-knande Optical Flow(LK Optical Flow)
- 픽셀에 대한 Intensity 추적(LK Optical Flow(밝기를 constant 주어서 변화하는것 위주로 맵핑)) - Direct Method: 카메라 모션 모델
- Optical Flow로 얻어진 이미지 픽셀에 대한 모션을 카메라 파라미터를 이용하여서 구하는 방법
- feature matching and dense matching
- Feature-based Methods
- 특징 추출과 디스크립터 계산에 소요되는 시간이 큼
- 특징점 사용하는 경우 특징점을 제외한 나머지 정보 무시
- 특징점 없는 곳에서 맵핑이 힘듬 - Dense matching
- 픽셀에 대한 데이터량이 큼(CPU로 힘듬)
- 장점으로는 모션블루어에 강함
- 빠른 모션에 강하고, 특징점 없는 곳에서도 매핑 가능
- 정확함
- 리얼타임으로 쓰려면 빠른 컴퓨팅 프로세서 요구
- Bundle AdjustMent 설명
- 여러 맵포인트를 공유하고 있는 키프레임들을 이용하여서 Least Square를 통해 MapPoints와 포즈를 최적화 시키는 방법. BA를 할때 공유하고 있는 모든 맵포인트를 공유하게 된다면 계산량이 많아 짐으로 RANSAC알고리즘을 통해 랜덤으로 맵포인트를 정하고 그 맵포인트를 각 프레임에 reprojection을 하고 Least Square을통해 최적화를 시킨다.
- Hamilton matrix
- Conjugate of Matrix(켤레 전치)를 해도 항상 같다.
- eigenvalues가 항상 real이기 때문에, diagonalizable하다.
- 즉 실제의 eigenvector와 eigenvalues를 구할수있어 문제를 푸는데 도움이 된다.(로봇에서 예를 들어 x,y같은 변수의 값을 찾는 것)
- Quaternion 을 사용하는 이유
- 행렬대신 사용하는 4개로 이루어진 복소수로 행렬에 비해 연산속도가 빠르며 차지하는 메모리속도가 낮다. 또한 최단호(shortest arc)보간으로 오류 발생률이 적다
- 회전행렬은 1인 직교행렬이라는 제약 조건에 따라 최적화 문제 복잡도 증가
- 회전행렬은 3DOF를 표현하기 위해 9개 값을 사용하는 중복성 존재
- 오일러 각에서는 특정 상황에서 1자유도를 잃어버리는 짐벌락(gimbal rock)
- 보간과 반복에 적합하지 않아 주로 결과의 신속한 가시화를 위해 사용
- 최적화 수업에서 무엇을 배웠는지
- 비선형 문제를 선형 근대화 시켜서 푸는 문제(Tayor series), 그리고 최적화 시켜서 푸는 문제 Decent Gradient 및 Least Sqaure, LM 등.
- DSO, ORB-SLAM2 중 왜 DSO가 rotation에 약한지
- Relocalization 이 없기 때문이다, 즉 ORB-SLAM2는 Relocalization 모듈이 있어 피쳐가 부족한 프레임일 경우 BoW를 통해 맵데이터베이스의 유사 프레임을 이용하여서 포스를 트래킹하는 반면에 DSO이런 모듈이 없기 때문에 로스트하기가 쉽다.
- 모션 blur에 약하다, 그리고 빠르게 전환하는것에 약하다.
- least square 설명
- Lidar SLAM - Iterative Closest Point(ICP)
- (1)포인트를 샘플링
- 샘플링된 포인트 근처 실제 포인트 탐색(매칭)
- 샘플링된 포인트과 선택된 근처 포인트의 질이 나쁜 포인트 쌍은 제거(차이가 너무 난다는지)
- 매칭된 포인트들에 가중치를 구하고, least square을 통해 최적의 Transformation(R,t) 구함
- 최적화된 포인트들로 업데이트(2번으로 넘어감) - Visual SLAM - Bundle Adjustment(BA) - 현재 로봇 센서 값과 예상 값에 대한 오차를 줄이는 방법 (실제 센서값과 예상 센서값 차이 최소화)
- Visual SLAM과 Lidar SLAM의 장점
- Lidar SLAM : 높은 정확도, 단일 센서로 뎁스 추정 가능
- Visual SLAM : 저렴한 가격, 센서의 보급, 빠른 처리 속도
- 단점 : 긴 이미지 전처리 과정, 빠른움직임에대해 취약, 뎁스 추정 불간으
- RANSAC설명
- 수많은 데이터중 랜덤으로 추출하여서 낮은 에러가 나올때 까지 parameter estimation을 진행을 하면서 outlier제거 가능.
- Feature-based SLAM의 문제점
- Density하지 못함(Sparse Information), 이말은 특징이 적은 프레임일 경우 맵핑을 할 수가 없음.
- 특징점 뽑는데 계산량이 많음
- Direct SLAM의 문제점
- pixel의 광계를 사용하여서 특징점 추출하다보니 계산량이 많음.
- 장점으로는 카메라 속도가 빠르면 알고리즘이 빨리 끝남, 정확함, Motion Blur에 강인함
- VIO 어려운 점
- frequency가 다름, IMU매우 빠름(데이타 얼라인이 필요함(initialise))
- IMU 값이 항상 튀기 때문에
- 로봇의 자율주행과 차량 자율주행 차이
- 로봇은 비교적 사람이 이용하는 공간에 주행하게 되는데, 주로 실내 호텔 서비스나 배달 서비스등 비교적 동적인 환경에서 사용이 됨으로, 동적 물체에 대한 감지 및 주행에 지장이 되지 않는 로직이 필요합니다. 반면에 차량같은 경우 도로나 골목등에 사용하게 되는데, 사고가 나면 인적 피해가 일어날 수 있으므로, 최대한 인적피해가 나지 않도록, 더 세밀한 시스템이 필요합니다.
- 자율주행 센서가 어떻게 사용되고 있는지
- 라이다와 레이더, 카메라 센서등이 있습니다. 주로 맵핑과 로컬라이제이션에는 라이다를 사용하여 광범위의 정확한 환경 인지를 하고, 레이더는 전방이나 후방 측면의 물체들을 감지, 상태 추정하는데 사용됩니다. 그리고 카메라 센서같은 경우 표지판이나 라인 디텍터를 이용하는데 쓰입니다.
- 요즘 추세에는 레이더를 이용하여 매핑과 로컬리제이션을 하는경우가 있고, 카메라 센서를 이용한 전처리과정을 통해 매핑과 로컬리제이션 그리고 물체 감지등을 하고 있습니다.
- 학교에서 배운 내용 중 센서 퓨전하는데 도움이 되었던 과목
- Matrix Theory와 Optimization Method입니다. 행렬은 homogous matrix 및 jacobian matrix, 행렬 변환에 대해서 이해를 하는데 도와 줬으며, Optimization Method같은 경우 비선형 문제를 선형화 해서 푸는 방법(tayor 1st series) 그리고 Gradient나 Least Square방법으로 에러를 최소화하여 문제를 최적화 하는 방법등이 SLAM시스템 이해하는데 도움을 줬으며 Extended Kalman Filter를 이해하는데 도움이 되었습니다.
- Lidar 사용해본 경험? RGB-D카메라랑의 차이점
- 실제로 라이다를 사용해본 적은 없다. 그러나 카메라 센서와 라이다 센서의 차이점은 아마 전처리과정이 있을 것이다. 라이다 센서 같은 경우에는 레이저 펄스를 이용한 환경인지이기 때문에 범위가 넓고 전처리과정이 없이 바로 환경을 인지할 수 있다. 반면에 카메라는 2D이미지이기 때문에 환경을 인지하려면 특징점을 이용한 feature-based나 픽셀간 밝기를 이용한 intensity based 방법을 사용하여서 환경을 인지를 하고 공간적 데이터를 얻으려면 카메라 내부파라미터를 이용한 PnP알고리즘을 통해 공간에 대한 환경 인지를 할 수 있다.
- 중국, 미국, 한국 자율주행 미래
- 아무래도 미국이 가장 앞서갈고 갈고 그다음이 중국일거 같다. 자율주행에 있어 중요한 요소가 센서 기술와 IT기술, 그리고 지형이다. 미국은 세계 최고의 IT기술과 센서, 그리고 다양한 지형을 갖추고 있다. 중국같은 경우에도 요즘 세계 최고의 IT기술과 가성비 좋은 세서들이 있으며, 다양한 지형을 갖추고 있다. 반면에 한국 같은 경우 좋은 It기술을 갖고 있고, 좋은 센서들을 가지고 있지만, 한정된 지형을 가지고 있어, 자율주행의 다양한 데이터를 얻는데 한계가 있다.
- 개발을 하면서 힘들었던 점
- ROS프레임 워크를 배우는데 어려웠고, SLAM도 스스로 배우다 보니 어려웠다.
- 혼자 프로젝트하였는가
- 데이터 퓨전은 혼자하였고, 그 이외 integration 하는 것은 동료들과 함께 했다.
- 프로젝트하면서 어려웠던 점
- ROS 프래임 워크를 배우는데 어려웠고, SLAM도 스스로 배우다 보니 어려웠다.
- RAM메모리 주소에서 프로세스로 데이터 전송 어떻게 되는지
- 프로세스 명령어로 부터 데이터버스, 제어 버스(명령어), 주소버스가 프로세서 안으로 데이터가 들어오 게된다 들어오게 되고 계산 끝나고 나서 데이터는 다시 데이터버스 주소버스 제어버스를 통해 램으로 저장하게 된다.
- 병렬 프로세싱
- Thread를 이용하여서 할 수 있다.
- 머신러닝 개발 경험 있다면 무엇을 개발했는지
- sicik learn을 이용하여서 Linear Regression을 통한 미래에 대한 아보카도 가격을 추정하였습니다. 그 외에도 텐서플로우를 이용하여서 CNN을 통한 Object Recognition을 하였습니다.
- PID Control 설명
- setpoint와 모델의 출력 output의 오차를 feedback하여 setpoint에 도달하게 끔 도와주는 컨트롤러 이다.
- Proportional은 오차의 값을 증폭시키고 setpoint근접하게 도와주지면 steady-state 문제가 있다.(error가 작아 setpoint에 도달하지 못하고 계속 일정 state에 머무는 것)
- 이를 integration 함수를 추가하여 steady-state error을 제거하고
- differential 함수를 사용하여서 갑자기 변화하는 state에 대한 overfit현상을 잡는다.
- djaskar 설명
- 한노드 기준으로 모든 노드 탐색
- BFS(모든 탐색점 Traversal)
- O(n^3)
- 드론과 모바일로봇 차이
- 아무래도 자유도 차이가 있을것 같다. 드론은 6DOF, 모바일로봇은 3DOF
Comments