embedded/ROS

6. ROS & opencv (cv_bridge) 실시간 스트리밍...성공!

crab. 2021. 9. 1. 08:52

나를 꽤나 괴롭힌 화면인데 우선 처음 맞이하는 참고사이트에 없는 오류였다.

 

그래도 처음에는 나쁘지 않게 생각한 게 단순히 일단 카메라가 나오기는 하고 뭔가 소프트웨어적인 문제라 직감했기 때문이다.

 

이제 구글링을 하며 문제해결에 나섰는데

 

우선 에러코드부터 확인했는데 

 

의외로 싱겁게 찾은것이 failed to load module canberra-gtk-module였다.

 

https://mondaysickness.com/2019/09/23/%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%EB%B2%95-failed-to-load-m odule-canberra-gtk-module/

 

에러 해결법 : Failed to load module “canberra-gtk-module” – 월요병 탈출기

Failed to load module “canberra-gtk-module” 위와 같은 에러가 떠서 검색해보니 아래 명령어를 입력해주면 해결이 된다. sudo apt install libcanberra-gtk-module libcanberra-gtk3-module === 해결한 후에는 canberra-gtk-module

mondaysickness.com

sudo apt install libcanberra-gtk-module libcanberra-gtk3-module

을 쳤다. 그리고 역시 안된다...

 

쉽지 않은 놈이다..

 

다음으로는 pipeline have not been created을 찾아봤는데 이건 자료가 거의 없었다. 

 

약간의 힌트는 얻은 게 나는 선배가 하던걸 받아서 하는 중인데 거기에는 파이 카메라가 달려있었고 

 

이 pipeline have not been created에서는 파이카메라가 자꾸 등장한다는 점이었다.

 

이제 마지막으로 나와 같은 증상이 있는지 jetson nano opencv green screen이라고 쳐봤는데 놀랍게도

 

은근히 같은 증상의 사람들이 있었다...

 

일단 쓸만한 사이트 두 개를 얻었고

 

https://stackoverflow.com/questions/64272731/open-cv-shows-green-screen-on-jetson-nano

 

open cv shows green screen on jetson nano

My camera shows a green screen. I am using IMX 219 I don' know why the camera gives this output import cv2 cap=cv2.VideoCapture(0) while True: r,im=cap.read() cv2.imshow('dd',im)...

stackoverflow.com

https://forums.developer.nvidia.com/t/how-to-slove-opencv-green-screen/82803

 

How to slove opencv green screen?

When I use cv2.VideoCapture(0), no matter use opencv3.3.1 or opencv4.1.0 and use cap.Open(0) it will print green screen. like thishttps://imgur.com/g5fIUTp import cv2 cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read() cv2.imshow(‘frame’, fr

forums.developer.nvidia.com

거기서 유의미한 수확을 얻었는데 첫 번째 사이트의 

gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! nvoverlaysink

를 하자 카메라가 정상 작동했다는 점이다.

이건 많은 것을 추리할 수 있게 해 주었는데 확실하게 카메라는 하드웨어적으로 문제가 없다는 점과 코드에서 무언가 

 

수정이 필요하다는 점 GST와 GSTREMER라는 문구가 계속 나온다는 점이다. 자체적으로의 결론은 이 사이트의 저자는 

 

나와 다른 카메라를 썼기 때문에 이 문제를 피할 수 있었고 나는 파이 카메라를 쓰기 때문에 생긴 문제이며 해결에는

 

GSTREMER가 필요하다는 점이다. 이후 위의 두 사이트에서 시키는 것을 다 해봤지만 개선은 안됐다. 심지어 진행하다가 

 

종종 (core dumped)가 떠 재부팅을 해야 했었다. 그렇게 오랜 시간 골머리를 앓다가 결국 강사님께 전 기수에서도 이런 

 

문제가 발생했었냐 묻자 바로 유명한 문제라는 답이 나왔다... 전의 기수는 이 문제 때문에 몇 줄을 보냈으며 

 

한 조는 이 문제로 젯슨 나노가 아닌 라즈베리에서 올리게 되었다는 말도 나왔다.. 거기다 그다음에 갑자기 딱 든 생각이 

 

전에도 이런 적이 있었는데 정말 부끄러운 실수지만 훗날을 위해 기록하자면 make를 빠뜨리고 계속 코드를 수정하고 있었다.. 그 많은 시간을...

 

현실적으로 이 상황에서 더 진행하는 건 효율이 나지 않을 것 같고 시간도 많이 지나서 우선 다시 포맷하고(나 자신의 멘털도 포맷하고) 내일 하기로 했다.

 

============================================================================

 

다음날 리프레시한 마음으로 다시 도전했다. 집으로 가면서 또 집에서 든 생각은 정상적으로는 이 문제를 혼자서 해결할 수 없다는 점이다.

 

그래서 전에 선배가 학원에 잠시 왔을 때 받은 깃 헙을 뒤져보기로 했다.

 

의외로 코드는 금방 찾을 수 있었는데 나와 경로가 비슷했고 파일 이름이 rasp_cam이었기 때문이다.

 

(여기에 그 코드를 적지는 않을 것이다.. 문제 될 것 같기 때문이다...)

 

그 코드를 분석해본 결과 애초에 내가 계속 해결하고 싶었던 VideoCapture cap() 부분만 잘 따오면 실행이 될 것도 같아 그 코드와 연결된 부분을 차근차근 옮겼고 결국 해내었다.

 

기쁘다

의외로 생각보다 쉽게 해결되었지만 치트키를 쓴 느낌이다.. 대충 빨리 잘 의 과정대로 지금은 대충 넘어가지만 나중에는 확실히 이 문제를 분석해야 할 것이다.

 

지금 간단히 문제를 잠깐 분석해보면 gstreamer의 pipeline문제와 그에 따른 카메라 화면의 크기 & 속성 문제이지 않았나 싶다. 

 

이제 드디어 다음 단계로 넘어갈 수 있다. 

 

+)만약 위 과정으로 안 될시 

 

$ sudo apt-get install v4l-utils

 

$ v4l2-ctl --list-formats-ext

 

$ sudo shutdown -r now

 

$ gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! nvoverlaysink

 

로 확인해본다 지금으로는 될 때도 있고 안될때도 있다.

'embedded > ROS' 카테고리의 다른 글

8. depth camera(실패)  (0) 2021.09.08
7. GAZEBO  (0) 2021.09.03
5. ROS & opencv (cv_bridge) 실시간 스트리밍...실패  (0) 2021.09.01
4. pub & sub 메시지 통신  (0) 2021.08.31
3. ROS 설치완료  (0) 2021.08.31