나름 공부하는 일상

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

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

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

hi_g1 2024. 2. 7. 16:59
해당 포스팅에서는 카메라 문제와 데이터 동기화 문제의 해결 과정을 포함하고 있습니다.

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

[이전 글]

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

6. 카메라 문제 with v4l

다른 미션에서는 Blackfly_S 카메라를 사용하고 있어 안정적인 Hz를 유지해줬는데 이상하게 협로미션에서 사용 중인 logitech 웹캠은 뭔가가 이상했다. 강한 빛을 보면 영상이 확 밝아진 상태에서 돌아오지 않고, 또 어두운 환경에서 초점을 잃은 상태에서 장시간 돌아오지 않는 문제가 발생했다.

 

당시에는 저렴한 카메라라서 그럴 수 있지 하면서 넘겼는데, 다른 자료를 찾다가 이 같은 문제를 해결할 수 있는 방법에 대해 알게 되었다. 바로바로 v4l API를 통해 초점거리며 노출, 등등 다양한 설정을 고정할 수 있다는 사실이었다. 설정하는 방법도 굉장히 쉬우니 다른 블로그를 참고하면 좋을 것 같다!

 

아주 간단하게 보여주자면 아래처럼 v4l2-ctl-d 카메라 --list-ctrls를 입력하면 어떤 옵션들을 건드릴 수 있는지 나온다. 그리고 본인의 환경에 맞게 값을 세팅하면 된다.

카메라 옵션 설정

 

[번외]

그리고 추가적으로 한 가지도 또 재밌는 사실을 알았는데 웹캠의 경우 밤에 프레임이 30에서 15 프레임으로 드랍되는 문제가 발생했었다. 해당 문제 때문에 sensor_fusion 코드에서도 publish 주기가 낮아져 주행이 불가능했는데, 원인이 굉장히 허무하면서 놀랐었다. 

 

먼저 사람의 눈을 한번 생각해보자 어두운 환경에서는 빛을 받아들이기 위해 동공이 확장되는 걸로 안다. 로지텍 웹캠은 어땠을까? 로지텍 웹캠도 어두운 환경에서 빛을 많이 받아들이기 위해 업데이트 주기를 낮추고 빛을 많이 받아들이는 식으로 동작했기에 위와 같은 프레임 드랍 문제가 발생한 거였다. 물론 이도 v4l 값 세팅을 통해 해결할 수 있었다. 혹시나 밤에 웹캠을 가지고 실험하는 경우 이 점도 고려해 보면 좋을 것 같다.

 

7. 데이터 동기화 문제

일반적인 직선 주행에서는 크게 눈에 띄는 문제가 없었는데 코너링 같이 급격하거나 YOLO에서 데이터 처리량이 많아지는 순간 LiDAR와 Camera 데이터가 다음과 같이 어긋나는 문제가 발생하였다....이러한 문제를 해결하고자 ros의 message_filters라는 라이브러리를 활용하였고 이는 다른 포스팅에 정리해 두었다. [동기화 문제 해결]

데이터 불일치

 

message_filters를 적용한 결과 다음과 같이 코너링에서도 안정적인 결괏값을 보여주었으며 8.최종결과에서 진짜 진짜 최종 결과를 확인할 수 있다.

동기화 전(좌측) 동기화 후(우측)

 

8. 최종 결과

위 과정들을 거쳐 최종적으로 4~10Hz의 러버콘에 대한 색상과 거리에 대한 정보를 퍼블리쉬할 수 있었다. 발행 주기가 아쉽긴 하지만 우리의 뛰어난 Planning, Localization 파트가 이를 가지고 훌륭한 결과물을 만들어 주었다. 다음은 실제 대회에서 만들어진 클로징 맵으로 볼 때마다 너무 예뻐서 반하는 기분이다. 대회 영상도 있지만 다들 너무 자만심이 강한 멘트가 많아서 나만 볼 거다 후후후

클로징 맵

 

그리고 또다시 우디 친구의 영상을 잠시 빌리자면 코너링에서 다음과 같은 영상을 확인할 수 있다.

최종 결과