나름 공부하는 일상

일단 시도해 보는 카메라-라이다 센서퓨전 #1 본문

IT 개발/센서 데이터 다루기

일단 시도해 보는 카메라-라이다 센서퓨전 #1

hi_g1 2024. 2. 7. 16:58
해당 포스팅에서는 센서퓨전의 필요성과 Perception 파트의 pipeline에 대해 간략하게 소개하고 있습니다.

[환경]
ros: ros2 foxy
ubuntu: ubuntu20.04

1. 센서퓨전의 필요성

지난 1년여간 대회를 준비하며 센서퓨전에 대해 조금이나마 알아보는 계기가 되었다.

대회 미션 중 하나인 협로미션에서 LiDAR 혹은 카메라 센서 하나만으로 문제를 해결하기 어렵다고 판단하였고, 본격적으로 Camera-LiDAR 센서퓨전 기술에 대해 알아보았다.

 

어렵다고 판단한 이유는 우선 협로미션이 어떤 미션인지 알아야 하는데 아래 그림에서 보는 것처럼 양 옆에 색상이 다른 러버콘이 놓여있고 그 사이를 주행하는 미션이다.

협로미션

 

카메라만 사용하는 경우, 물론 스테레오 카메라를 구성하면 거리를 파악할 수 있긴 하지만 정확도와 시야각 문제에서 자유롭지 못하다고 판단하였고, LiDAR 센서만 사용하는 경우, 급격한 커브나 경로 생성에 있어 단거리만 파악할 수 있는 문제점이 존재했다. 무엇보다 가장 큰 문제인 색상 정보를 얻을 수 없다는 문제가 존재했다. 이러한 이유를 들어 Camera-LiDAR 센서퓨전을 통해 거리정보와 색상정보를 얻어 해당 미션을 해결하려 하였다.

 

이렇게 쓰고 보니 센서퓨전에 대한 정의가 없는 것 같은데 센서퓨전이란, 간단하게 말해 센서들이 가지고 있는 장단점 중 장점만을 모아 데이터를 처리하는 방식이라고 생각하면 좋을 것 같다. 위에서 처럼 거리정보가 없는 대신 색상 정보가 있는 카메라와 색상 정보가 없는 대신 거리정보를 가진 LiDAR를 함께 이용함으로써 시너지를 내는 것처럼 말이다.

 

 

2. 길고  스터디

처음 Camera-LiDAR 센서퓨전을 하려고 했을 때, 솔직히 쉬울 줄 알았다......

"그거 그냥 LiDAR 포인트클라우드 이미지에 맞게 좌표계만 변환하면 되는 거 아냐?"라는 생각이 지배적이었다.

하지만 조금 시도해 보고 나니 카메라에 대한 지식과 라이다에 대한 지식 둘 다 왕창 필요하다는 사실을 알게 되었다. 그래서  팀원과 카메라, LiDAR에 대한 스터디를 진행하였고, 아래 다크프로그래머님의 블로그를 참고하며 부족한 내용을 학습하였다. 약간 기분이 좋았던 점은 학습하면서 조금씩 발전하는 우리를 확인할 수 있었다는 점이었다~!!

https://darkpgmr.tistory.com/category/%EC%98%81%EC%83%81%EC%B2%98%EB%A6%AC

 

'영상처리' 카테고리의 글 목록

영상처리 & 프로그래밍

darkpgmr.tistory.com

 

3. 센서퓨전에 근접하게 만들자 - 첫 코드 설계

대회 미션이 여러 개라 나는 처음부터 협로미션 코드를 함께 작성하지는 않았지만 센서퓨전을 어떻게 구현할 건지에 대한 얘기는 나눠보았는데 방법은 다음과 같았다.

코드 설계

 

step1. YOLO를 통해 러버콘에 대한 바운딩 박스를 찾는다. (object_detection.py)

step2. LiDAR를 이용해 설정한 범위 내에 들어오는 객체를 감싸는 가장 큰 바운딩 박스를 찾는다. (lidar_pre.cpp)

step3. 두 센서가 찾은 바운딩 박스의 겹치는 부분(IoU)이 일정 값 이상이면 LiDAR가 찾은 객체의 중심값을 타 파트에 보낸다. (fusion.cpp)

 

위의 3가지 단계를 통해 센서퓨전 기술에 근접하게 코드를 설계하려 하였다.

(LiDAR 범위 및 IoU, 객체 크기는 모두 경험적으로 찾은 값입니다.)

 

 

다음 글

 

2024.02.07 - [IT 개발/카메라-라이다 센서퓨전이 하고 싶다] - 일단 시도해보는 카메라-라이다 센서퓨전 #2