반응형

[라즈베리 파이]비공식 멀티카메라 모듈 후기(ivport v2)

배경

 많은 수의 카메라 컨트롤을 해야 하는 프로젝트를 진행하고 있었기 때문에 카메라 수를 줄이고 싶었다.

 비공식적으로 터키에 소재하는 ivmech 업체에서 Ivport v2 라는 이름으로 단일 카메라 포트를 여러개의 pi camera로 확장하는 모듈을 제작했다. 기존에도 Ivport v1으로 pi camera v1에 대해서 멀티카메라 모듈을 제공한 적 있는 업체였다.

 ivport v2 중첩으로 연결이 가능하고 최대 4번 중첩하여 16개의 카메라 연결이 이론적으로 가능하다(실제로는 여러 에러사항 때문에 중첩하여 사용하지 않을 것을 권장한다).



모듈 드라이버

 제조사에서 드라이버를 제공하는데, Python으로 작성되어 있다(ivport 드라이버 링크). CSI(Camera Serial Interface)포트 하나와 GPIO 핀과 연결이 되어 있어야 한다. 드라이버의 역할은 GPIO의 신호를 바꿔서 Ivport v2 모듈에 신호를 줘서 연결되어 있는 카메라를 바꾸는 방식이다.


 만약 Python 이외에 다른 언어로 구현을 해야 하는 경우라면 직접 드라이버를 만들어야 할 것이다. 그렇다면 드라이버 코드를 보고 GPIO 신호를 바꿔주는 것을 구현해야 한다. 이에 적합한 건 C 라이브러인 Wiring이 있다.


 그 외 이미지 데이터를 얻는 방법은 공식 프로그램인 raspistill 과 같은 프로그램을 사용하거나 동일하게 제공는 라이브러리르 사용해서 얻을 수 있다.



원리

 드라이버에 대해서 분석이 되면, 눈치가 빠른 사람은 모듈이 한번에 하나씩 카메라에 접근하는 방식으로 동시에 카메라에 접근 할 수 없다는 것을 알게 될 것이다. 이는 카메라로 부터 얻는 이미지 데이터의 크기가 커질 수록 느릴 수 밖에 없다.



성능

 제조사 측에서는 스테레오 카메라로 라이브 스트리밍을 시연 동영상을 유투브에 올려놨는데, 중간에 일시 정지 해보면 0.03 ~0.05초 정도 차이가 나서 준수해 보이지만, 역시 화질과 이미지 사이즈를 언급이 안되어 있다(모니터에 보이는 큰 화면은 출력해서 resize한다면 큰 문제가 아니다).


 하드웨어 조건 고려해서 Pi Camera v2 의 최대 고화질 카메라 이미지 수신에 걸리는 시간을 계산했을 때 최대 약 0.05초 정도 걸린다는 걸 계산했었다. 이는 이론 값이니 실제로는 더 걸릴 것이다.


 해당 내용을 PM에게 보고 하자 제조사측에도 공식 문의를 하기로 결정했고, 그 결과 얻는 답변은 Low 단으로 수정했을 경우 2대의 카메라간 동기오차는 0.10 ~ 0.15초의 오차를 얻을 수 있을 것이라고 했다. 즉, 동기가 중요한 경우 그냥 여러대의 라즈베리 파이를 구매해서 신호 동기화를 시키는 게 낫다.


 또 테스트를 직접 했을 때 재미있는 현상이 몇 가지 있었는데, 1번 카메라가 없으면 모듈이 아예 인식이 안된다.



평가

 해당 모듈은 라즈베리 파이 재단에서 제작하지 않은 비공식적인 모듈이다. 해당 모듈은 라즈베리 파이 본체가 있어야 사용할 수 있는 모듈인데, 라즈베리 파이 본체보다 금액이 좀 더 비싸다. 물론 카메라 4대를 전부 연결해서 본체를 덜 구매 한다면 이득이지만, 동기화에 한계가 있다.

 심지어 ivport v2 모듈이 소모하는 전력이 의외로 많은지 4개의 카메라를 전부 연결하면 1개는 인식이 안되었다.


 취미로 하는게 아니라면, 오히려 제약이 많기 때문에 가능하면 사용하지 않는 것이 좋다.

반응형
반응형

라즈비안 : Pi Camera v2 에러 메시지


배경

 라즈베리 파이에서 공식적으로 제공하는 카메라의 경우 라즈비안의 raspistill 등 공개 표준 프로그램과 라이브러리가 함께 제공된다. 공식적으로는 Python 라이브러리만 제공되지만, C 라이브러리도 존재한다.


 라즈베리 파이와 같이 PC에 비해서 저사양의 불안정한 기기에서는 종종 소프트웨어에서 문제인지 아니면, 하드웨어에서 문제인지 판단해야 한다. 사실 오류(혹은 에러) 메시지를 잘 확인 하기만 해도 대부분의 문제의 원인을 알 수 있다. 따라서 필자가 경험한 오류 메시지에 대해서 사례로 기록을 한다.


 여기서 언급한 에러 메시지는 raspistill을 실행하다가 반환되는 에러 메시지를 적어 놓았다.



카메라 인식 문제

 에러 메시지1

mmal: Cannot read camera info, keeping the defaults for OV5647
mmal: mmal vc component create: failed to create component 'vc_ril.camera'(1:ENOMEM)
mmal: mmal component create core: could not create component 'vc.ril.camera'(1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly


 이 경우는 인식 아예 못하는 경우다.

 에러 메시지에서 확인할 수 있듯이 운영체제에서는 카메라에 접근하기 위해서 단계적으로 카메라에 관련되 드라이버와 컴포넌트를 생성을 하는데 이 모든 단계가 실패를 하게 된다. 대부분 이 경우 선이 연결이 잘못되었다던가 선이 문제가 있는 경우이다.


 아주 드문 경우로 만약 정상적으로 선으로 연결이 되었음에도 이 메시지가 뜬다면, 카메라 하드웨어 모듈내의 회선이나 끊어진 경우일 수 있다.



카메라 회신 문제(고장)

에러 메시지2

mmal: No data received from sensor. Check all connections, including the Sunny one on the camera board



 이 경우는 약 5초간 응답이 없다가 보게 되는 에러 메시지이다.

 이 경우는 하드웨어적으로 연결은 잘 된 상태이다. 그리고 드라이버도 잘 인식이 된 것이다. 하지만, 이미지 데이터를 요청을 해도 그 요청에 대해서 응답이 없는 상태이다. 이 경우 대부분 카메라 하드웨어 모듈에 문제(고장)이 있는 상태이다.


 아주 드물게 카메라 하드웨어 모듈의 점퍼 부분이 느슨하게 연결이 되거나 선이 연결이 되었지만, 느슨하게 연결되서 생길 수도 있지만, 말 그대로 아주 드물다.



참조자료

겸험과 오류 메시지 내용

반응형
반응형

라즈베리 파이 한글문서(링크)

 기존 라즈베리 파이의 공식 문서(영문)을 비공식적으로 번역을 해놓은 페이지 이다. 영어 문서를 봐도 상관이 없겠지만, 아무래도 읽는 속도에서 차이가 나기 때문에 가능하면 한글 문서를 보는 것이 유리할 듯하여 기록을 남긴다.


유용했던 분은 이런 일 하는 분들의 문서에 추천을 눌러주자(여기글 말고 링크한 글)


링크

라즈베리 파이 문서(한글)




반응형
반응형

라즈베리 파이3 라즈비안 : 화면 회전

알게된 배경

 진행하던 프로젝트에서 라즈베리 파이가 있는 자리와 코딩하는 자리의 거리가 먼관계로 좁은 책상에 비집고 자리를 만들어서 회전되는 모니터를 설치하고 라즈베리 파이에 연결했다. 자동으로 회전이 되면 좋겠지만, 라즈비안에서 설정을 새로 잡아 줘야 했다.


설정 방법

화면의 회전은 부팅할때 결정되는 듯 하다.

sudo nano /boot/config.txt


 파일의 마지막에 한줄을 추가를 하면 된다. 여기서 숫자는 0 = 0도, 1 = 90도, 2 = 180도, 3 = 270도 를 의미한다.

display_rotate=3


부트 설정 파일을 바꿨으니 이제 재부팅을 해보자.

sudo reboot


참조자료

PSNA Simulation 게시판 글

라즈베리파이 포럼


반응형

+ Recent posts