일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- Humble
- 센서데이터
- 갤럭시s24
- 자율주행
- 메시지필터
- Ros
- 자율주행카메라
- foxy
- ROS2
- AI olympic
- lidar-camera
- message_filters
- ros2 docker
- 강화학습프로젝트
- AI올림픽
- 센서퓨전
- sensor fusion
- PPO알고리즘
- IJCAI-ECAI
- blackfly
- AMZ
- s24
- ubuntu
- AI Olympics 러닝
- 블랙플라이
- AI Olympics 레슬링
- docker
- cuDNN
- ubuntu22.04
- 강화학습
- Today
- Total
나름 공부하는 일상
일단 시도해 보는 카메라-라이다 센서퓨전 #1 본문
해당 포스팅에서는 센서퓨전의 필요성과 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
'IT 개발 > 센서 데이터 다루기' 카테고리의 다른 글
일단 시도해 보는 카메라-라이다 센서퓨전 #3 (27) | 2024.02.07 |
---|---|
일단 시도해 보는 카메라-라이다 센서퓨전 #2 (6) | 2024.02.07 |
Velodyne LiDAR를 살짝 기울여 보자 (1) | 2024.02.06 |
ROS2에서 FLIR BlackFly S 카메라 사용하기 #2 (1) | 2024.01.13 |
ROS2에서 FLIR BlackFly S 카메라 사용하기 #1 (0) | 2024.01.13 |