[Perception Application] 5. Extrinsic Calibration

happy_quokka·2024년 1월 14일
0

자율주행 Perception

목록 보기
16/19

Extrinsic Calibration

  • 카메라의 위치, 자세 추정
  • 월드 좌표계 -> 카메라 좌표계, 카메라 좌표계 -> 월드 좌표계를 이해하기 위한 과정이다
  • 카메라가 실제로 존재하는 3차원 공간에 대한 정보를 다룬다
  • extrinsic calibration은 환경과 조건에 따라 목적과 방법이 달라진다
  • 다양한 방법론을 배우고, 자신에게 주어진 환경에 맞는 고유한 방법을 찾아야한다
  • computer vision을 활용한 자율주행 분야에서 extrinsic calibration 은 두 가지 활용 방법을 위해 extrinsic calibration을 수행한다
    • sensor fusion을 위한 정보로 활용
    • perception application을 위한 정보로 활용

자율주행 차량에서의 extrinsic calibration

  • 자율주행 차량은 모든 정보를 자동차 좌표계에 정보를 통일한다
  • 일반적으로 자동차 좌표계는 후륜 구동축의 중심 지면을 원점으로 한다

  • 자율주행 차량에 장착되는 센서는 그 종류가 매우 다양하다
  • 각 센서의 장착 위치가 다르고 사용하는 좌표계가 다르기 때문에 이를 통합하는 과정이 필요하다 (sensor fusion의 영역)
    • 카메라 : 카메라 좌표계를 따른다
    • LiDAR : LiDAR 좌표계를 따른다
    • GPS, IMU : 각 센서의 좌표계를 따른다

  • 따라서 vehicle coordinate를 기준으로 카메라의 장착 위치와 자세를 파악해야한다
  • 카메라와 기준 자동차 좌표계 간의 관계를 extrinsic calibration이라고 한다

  • 보드의 origin (0,0,0)에서부터 얻어낸 R, t vector는 해당 평면과 카메라의 관계를 의미한다
  • 하지만 3차원 공간을 projection 하게 된다면 origin은 평면이기 때문에 3차원 공간에서 무수히 많은 R, t가 존재하게 된다
  • 카메라가 존재 하는 공간은 3차원이기 때문에 extrinsic calibration의 origin을 보드로 설정하기 어렵다
  • 따라서 objpoints의 origin을 어느 한 점으로 설정하고 카메라 calibration을 수행하면 해당 origin으로부터의 카메라 R vector, t vector를 얻을 수 있다
  • 아래의 그림은 실제 extrinsic calibration 하는 과정이다
  • origin을 후륜 구동축의 중심으로 설정한다
  • objpoints인 (X,Y,Z)와 imgpoints인 (x, y)를 calibration하면 origin에 대한 카메라의 R, t vector를 구할 수 있다
  • extrinsic은 R, t vector를 구하는 것이 가장 중요하다

extrinsic calibration 구현

  • extrinsic calibration을 할 때 intrinsic matrix(체스보드를 원점으로 해서 계산)는 이미 알고 있는 경우가 많다
  • cv.solvePnP() 함수 사용
    • intrinsic matrix인 mtx, dist를 필요로 한다
retval, rvec, tvec = cv.solvePnP(objpoints, imgpoints, mtx, dist)
  • PnP = Perspective-n-Point

multi calibration pattern 사용

  • multi camera calibration의 경우 pattern들이 고정되어 있는 경우가 많다 (calibration room)
  • calibration pattern 사이의 rvec, tvec를 계산해놓으면 카메라에서 촬영한 다수의 pattern들의 imagepoints로 카메라의 자세를 파악할 수 있다
  • 즉, 카메라가 1번과의 R,t를 구하면 주변의 모든 pattern과의 관계를 알 수 있다
  • 1번을 찍어서 추정한 주변의 결과 오차, 2번을 찍어서 추정한 주변의 결과 오차 등을 최소한 하는 R, t를 계산하면 미리 지정한 특정한 위치로의 R,t를 추정할 수 있다

mobileye

  • mobileye와 같이 높이와 거리를 통해서도 응용이 가능하다
  • 차량의 미드쉴드(차량의 전면 유히창의 중앙) 중심에 최대한 가깝고 상단에 카메라를 설치한다
  • 차량의 모델에 따라 차량과 보드의 위치, 카메라의 위치가 달라진다

AURCO 마크 사용

  • 다수의 calibration pattern 사용
  • 패턴이 가지고 있는 고유의 ID가 다르다
  • 각각의 패턴과의 Rt를 계산하여 사용한다


Sensor Fusion (camera-LiDAR calibration)

  • 카메라
    • 환경에 대한 2차원 이미지 데이터를 얻을 수 있어서 객체를 식별할 수 있다
    • 깊이감, Z축이 소실되어 있다
  • LiDAR
    • X, Y, Z 값을 알 수 있다
    • semantic 정보가 소실되어 있다
  • 카메라 + LiDAR
    • 카메라를 통해 객체를 찾고 LiDAR를 통해 정확한 x,y,z (depth)를 알 수 있다

  • LiDAR에서 camera로 가는 R,t matrix를 구하는 것이 핵심이다
  • LiDAR에 기준 좌표계가 있다고 가정한다
  • 3D object point와 2D image point를 얻는 것이 중요하다
  • 무수히 많은 방법이 존재한다
  • 대표적으로 2가지 방법이 있다
  • LiDAR는 가로선 형식으로 나타나기 때문에 직사각형 형식의 패턴은 LiDAR와의 높이를 알기 어렵다
  • 따라서 원형, 마름모와 같은 패턴을 사용한다
방법1 (원)방법2 (마름모)
- 구멍이 있는 calibration pattern을 사용하여 camera, LiDAR 모두 원을 찾아 objpoints와 imgpoints를 만드는 방법- LiDAR에서 마름모 shape의 꼭짓점을 검출하고 camera의 marker detection과 shape의 실제 크기 정보를 활용하는 방법
- LiDAR가 원을 통과하면 그 끝 좌표들이 나오는데 그 좌표들의 평균은 원의 중심을 의미한다- 마름모 박스의 꼭짓점을 통해 objpoints, imgpoints 쌍을 만든다
- LiDAR에서 구한 원의 중심과 camera에서 구한 원의 중심을 objpoints, imgpoints 쌍으로 만든다- LiDAR도 검은색, 흰색은 intensity로 구분할 수 있다
  • 얻어낸 objpoints, imgpoints로 PnP를 풀면 LiDAR -> camera의 rvec, tvec를 계산할 수 있다
  • LiDAR 데이터와 함께 projection하면 image 위에 LiDAR 데이터를 올릴 수 있다
  • 단, 여기서 얻어낸 rvec, tvec를 가지고 이미지 데이터로 3차원 공간 정보를 복원할 수 없다
  • camera - LiDAR calibration에서 중요한 점은 이미지 해상도와 겹침을 활용하여 불필요한 정보를 제거하는 것이다
  • 해당 위치에 존재하는 LiDAR 데이터가 실제 image와 겹치는 영역이다
  • 투영의 특성상 반대 방향의 데이터도 이미지 평면에 투영이 가능하기 때문에 LiDAR 데이터에서 걸러주는 것이 중요하다

  • camera에서는 안보이지만 LiDAR에서는 보이는 데이터의 경우 iamge 영역에 잘못 투영될 수 있다
  • camera에서 인식하고 있는 객체인지 확인하여 제거하는 것이 중요하다
  • 예를 들면 거리가 가까운 것을 선택한다

0개의 댓글