[자율주행] LiDAR-Camera Calibration(이론편)

이진호·2024년 2월 29일
0

자율주행

목록 보기
4/8
post-thumbnail
  • 자랑스러운 팀장님의 LiDAR-Camera Calibration 사진



    나는 AI x Robotics KR의 Perception 스터디를 참여하고 있다. 스터디에서 LiDAR-Camera Calibration에 대해서 발표했었는데, 도움이 많이 되는 내용인 것 같아 기록하려고 한다.
    또한, 이 주제가 은근히 자료도 없어서 다른 사람들에게 도움이 될까 해서 기록하려고 한다.

1. Calibration? Fusion?

  • MathWorks에서 정의한 calibration과 fusion

영단어의 calibration은 보정이라는 뜻이고 fusion은 융합이라는 뜻이다.
이를 센서에 대입하면 calibration은 서로 다른 여러 개의 좌표계를 맞추는 과정이고 fusion은 calibration을 통해서 나온 결과를 이용하는 것을 말한다.

  • camera lidar calibration 검색 결과

  • camera lidar fusion 검색 결과

위와 같이 calibration을 검색하면 checkerboard로 좌표계를 맞추는 과정이 나오고 fusion을 검색하면 융합된 결과 화면이 나오게 된다.

각각에 대해서 더 자세히 알아보자.

2. Calibration

Calibration은 다양한 분야에서 사용되나, 의미는 비슷한 경향이 있다. 바로 나올 예시들을 보면 calibration의 의미가 무엇인지 감이 올거라고 생각한다.

1. Camera Calibration


Camera calibration은 카메라의 내부 파라미터(Intrinsic Parameter)를 구하는 과정이다. (내부 파라미터 등 카메라에 대한 자세한 내용은 다음에 다루도록 하겠다.)
Camera calibration 작업은 checkerboard를 통해서 이루어진다. Open Source와 관련된 작업과 내용들이 많아 쉽게 구할 수 있다.

2. LiDAR-Camera Calibration


앞서 말했듯이 LiDAR-Camera calibration은 서로 다른 두 좌표계를 일치시키는 작업을 말한다. 정확히 얘기하면 카메라와 LiDAR 좌표계간의 외부 파라미터(Extrinsic Parameter)를 구하는 것이다.

많은 방법들이 있으며 오늘의 핵심 주제인만큼 뒤에서 더 자세히 다루도록 하겠다.

3. Time Offset Calibration

Time offset calibration은 수집한 데이터의 time stamp를 맞추는 작업을 말한다. 각각 sensor마다 수집하는 데이터의 주기가 다르기 때문에 이를 똑같이 맞춰주어야 사용이 가능하다.

4. Hand-Eye Calibration


Hand-Eye calibration은 사진과 같이 로봇팔과 카메라의 좌표계를 일치시키는 작업을 일컫는다. 공장과 같은 산업 자동화를 위해서 많은 연구가 진행되고 있다고 한다.


이런식으로 calibration은 '보정'이라는 뜻으로 다양한 분야에서 사용되고 있다. 예시를 보면 알다시피, 비슷비슷한 느낌으로 사용이 된다.

이제 LiDAR-Camera Calibration에 대해서 더 자세하게 알아보자.



LiDAR-Camera Calibration


LiDAR-Camera calibration은 크게 두 가지 방식으로 나눠진다.
Checkerboard과 같이 target을 중심으로 사용하는 Target-based method, target없이 풍경과 같은 지형지물을 이용해서 하는 Targetless method가 있다.

Target-based method

명확한 목표인 Target을 이용해서 LiDAR와 Camera를 Calibration한 방식이다. Target으로는 Checkerboard, cardboard로 사용한다.

OpenCV에서 제공하는 ArUco Marker를 이용해서도 가능하다. Aruco Marker는 컴퓨터 비전에서 사용되는 미리 정의된 2D 바코드 패턴이다. 카메라를 통해 쉽게 감지되고, 각각 고유한 ID를 가지고 있어 식별이 가능하다.

Targetless method

Targetless 방식은 target없이 주변 지형지물을 이용해 feature를 추출하는 방법이다.

  • Motion based 방식

    Hand-Eye Calibration에서 사용된 motion based 방식이다. 이전 장면과 현재 장면을 비교하여 특징을 추출하여 calibration을 한다.
    Camera는 AKAZE algorithm을, LiDAR는 ICP algorithm을 사용했다.
  • Scene based 방식

    주변 지형지물의 feature를 이용해서 calibration을 하는 방식이다. 많은 방법들이 있는데 직관적으로 확인할 수 있는 방식을 가지고 왔다.
    LiDAR와 카메라로 각각 차선과 가로등을 인식한다. 이를 합쳐서 calibration을 진행한다.
  • Deep Learning 방식
    최근에 AI가 부흥하면서 Deep Learning을 이용해서 calibration을 하는 방법도 있다.

    이런식으로 딥러닝을 활용해서 calibration을 진행한다.

찾다보니 LiDAR-Camera Calibration에 대해서 정리한 github가 있었다. Target-based와 Targetless에 대해 구분하였으며, 논문과 코드를 잘 정리해 두어서 좋은 것 같다. 관심있으신 분들은 한 번 봐도 좋을 것 같다! (https://github.com/Deephome/Awesome-LiDAR-Camera-Calibration)



3. Fusion

Calibration 작업을 마쳤다면 어떻게 합칠지도 고려해야 한다.
처음엔 '그냥 합치면 되는거 아닌가?' 라고 생각했었다. 공부를 하다보니 어떻게 합치는가에 따라서 다양한 방법들이 있다는 것을 알게 되었다.
하나씩 봐보자.

1. Early Fusion


이름 그대로 '먼저 합치'는 것이다. Sensor로 들어온 정보를 먼저 합친 이후에 인지처리를 하는 방식이다.
인지처리를 한 번만 하기 때문에 연산량이 적다는 장점이 있다.
그러나 Raw 데이터의 차원이 다르면 융합하기 힘들다는 단점이 있다.
(ex: 3D LiDAR와 2D Camera)

예시 사진과 같이 LiDAR를 사진에 먼저 투영만 시킬뿐 detection 작업은 따로 하지 않는다. Camera를 통한 object detection을 하고 이후에 bounding box안에 LiDAR를 그냥 투영시킨다.

처음에는 'detection을 하고 fusion을 했는데 왜 이게 early fusion이지?'하고 의아했는데 아마 detection을 한 번만 수행해서 그런게 아닐까 싶다.

2. Late fusion


Late fusion은 각각의 센서에 대해서 detection을 수행하고, 그 결과를 바탕으로 fusion하는 방식이다.
오류가 발생한 센서가 어떤 건지에 대해 파악할 수 있고, 결과에 대한 신뢰도 파악이 가능하다.
하지만 모든 센서들이 인지처리를 해야해서 계산량이 많아진다는 단점이 있다.


이런식으로 LiDAR에 대해서 1번, camera에 대해서 1번, 이렇게 detection을 각각 한 번씩 수행한다. 그 이후에 bounding box를 제거하는 알고리즘(nms 등)을 이용하여 fusion한다.

3. Intermediate fusion


Early fusion과 late fusion의 장점들을 합친 방식으로, 각각 센서에 대해서 detection을 하고 fusion 이후에도 detection을 한다.
둘의 장점을 모두 가지고 있어 좋은 성능을 내지만 계산량이 너무 많다는 단점이 있다.


위 논문을 보면 BEV의 LiDAR로 인지처리를 하고 Camera로도 인지처리를 한다. 중간에 fusion해서 인지처리를 해주고 Top-K 방식으로 인식한 hit map과 더하는 방식이다. 이후에 다시 fusion하고 detection을 수행한다.

이런식으로 detection을 fusion 전과 후에 진행하는 방식으로 신뢰도를 높일 수 있다.

느낀점

마카롱 활동을 하면서 LiDAR-Camera calibration에 대해서 찾아본 적이 있었는데, 이렇게 많은 방식이 있는지 몰랐다. 사실 Computer Vision과 같은 논문들은 쏟아지는데 이와 관련된 논문은 별로 없어서 놀랐다.
이와 관련하여 내가 생각한 추측은 크게 2가지이다.

  1. 회사의 기술력!
    여러 센서들을 calibration하고 fusion하는 것이 각각 회사의 기술력이기 때문에 외부로 유출하지 않는게 아닐까 하는 것이 나의 생각이다.
    웹 개발자로 예를 들면, 홈페이지가 예쁘다고해서 해당 회사 제품을 구매하지는 않지 않는가? 때문에 웹 관련 백엔드, 프론트 관련 코드들이 많이 있고 서로 공유한다.
    하지만 자율주행은 그렇지 않다. 차세대 핵심 기술로 떠오르는 자율주행은 이러한 자신들만의 기술을 쉽게 외부로 유출하지 않는다. 소비자들은 해당 기술 때문에 제품을 구매하는 것이기 때문이다. 만약 외부로 유출하면 다른 회사들도 해당 기술들을 이용할 것이고, 이는 당연히 매출에도 영향이 가게 된다. 이러한 이유 때문에 관련 논문들이 별로 없는게 아닌가 싶다.
    저번에 진행한 차선 인식 관련 논문도 별로 없었는데, 아마 같은 이유이지 않을까 싶다.
    (사실 회사를 들어가 본 적이 없어서 잘 모르겠지만 그렇지 않을까 하는 내 생각이다.,...!)

  2. 기본중의 기본!
    '자율주행을 할거면 LiDAR-Camera Calibration은 기본이지'라는 생각으로 모든 사람들이 잘 알고 있는 것 일 수도 있다. 예를 들어 미분 적분을 안다고 해서 이와 관련된 논문을 쓰지 않는 것처럼(쓰나.,..? 수학쪽은 잘 모르겠다.) 너무 기본이 되는 방식이라 아무도 연구하지 않는 것이 아닐까 싶다.
    아니면 기존에 했던 연구들로도 충분히 좋은 결과를 얻어서 후속 연구가 진행되지 않는게 아닐까 싶다.

다음 게시글은 실제로 진행한 2D LiDAR와 Camera의 calibration에 대해서 작성할 예정이다. 코드는 이미 github에 올라와 있다. README파일에 소개가 자세히 되어있어서 이를 바탕으로 글을 작성할 예정이다.

Thanks to SY~!


참고자료


http://journal.ksae.org/xml/34229/34229.pdf

https://arxiv.org/abs/1804.05178

https://www.digitalnuage.com/early-sensor-fusion-and-object-detection-for-self-driving-cars

https://www.digitalnuage.com/late-sensor-fusion-for-autonomous-driving

https://ieeexplore.ieee.org/abstract/document/8594049?casa_token=Mot8SH-CK0sAAAAA:PfJd5BBHByIAo-xF0frND8pk6dxmn9PKqNBVHf6czGfDgJj7MV52dDv7OkCV9c0_-OPFRzGs

https://www.thinkautonomous.ai/blog/9-types-of-sensor-fusion-algorithms/

https://youtu.be/XRmdUfkIu08?si=PHna6vxQXiprWKON

https://youtu.be/BKYRUWpAfCg?si=8z3mQewJQojp6xxa

3개의 댓글

comment-user-thumbnail
2024년 10월 31일

교육 받을 곳이 있을까요?

1개의 답글