반응형

라즈베리 파이3 : 카메라 모듈 v2

알아야 했던 배경

참여한 프로젝트에서 다수의 라즈베리 파이기기에서 사진을 찍어서 가져와야 되므로 반드시 알아야 했던 기능이다.


하드웨어 설치

하드웨어는 방향을 잘 살피고 꼿으면 된다(참 쉽죠?). 


카메라 제어하기(소프트웨어)

공식 라즈베리 파이 카메라 모듈 v2를 사용한다면, 라즈비안에 기본적으로 카메라를 컨트롤 할 수 있는 프로그램을 이미 갖고 있다. 소프트웨어를 개발할 경우 파이썬에는 라이브러리를 제공하고 있다. bash 쉘에서 프로그램 실행이 가능하다면, 다른 JAVA, C/C++ 기타 가벼운 프로그래밍 언어로도 카메라를 컨트롤을 할 수 있다.


기존 프로그램 사용방법은 라즈베리 파이 공식 문서에 있다. 크게 raspistill, raspivid, raspistillyuv라는 프로그램이 존재하는데, 이중 raspistill, raspistillyuv는 이름처럼 거의 비슷한 사진 촬영(영문으로는 image capture로 되어 있지만 기능상 사진 촬영이적절하다)기능이고 raspivid는 비디오 촬영 기능이다.


카메라 설치 테스트

 공식문서에서 소개하는 방식으로 카메라가 정상적으로 설치되었는지 확인하기 위해서는 터미널 창에 다음 명령어를 실행한다.

raspistill -v -o test.jpg

 정상적으로 하드웨어가 설치되어 있다면, 약 5초간 실시간 동영상이 화면이 보이고 난다음에 카메라 모듈에 대한 정보를 출력된다. 여기서 '-'붙은  명령어는 옵션을 의미하므로 해당 문서를 참고를 해야 한다.

공식 프로그램 옵션 문서[참조링크]

(귀찮아서 그렇지 나중에는 어딘가에 따로 적어 놔야 할 것이다)

카메라 모듈 정보에서 주목해야 할 것은 기본적인 화질이 75~85로 출력되도록 설정이 되어 있다는 것을 알 수 있다. 이처럼 디폴트 설정값이 무엇인지 알아야 자신의 프로젝트에 적절히 사용할 수 있다.


필자 기준으로 가장 기본적으로 알아야 하는 옵션은 다음과 같다. 공식문서와 순서가 다르다.

 -rot

화면 회전각도 단위는 도(dgree)이다(각도가 나오면 단위가 매우 민감함)

 -t

옵션뒤에 입력된 수치만큼 마이크로초(ms)후의 카메라에서 캡쳐한다 0을 입력하면, 무한대가 된다. 기본적으로는 5000으로 되어 있어서 5초후에 사진이 찍힌다.

 -k

사진을 x키나 enter키의 입력을 감지해서 이미지를 찍는다. -t 옵션을 0으로 하고 연동하면 자연스러운 디지털 사진기처럼 구현할 수 있다.

 -o

경로를 포함한 파일저장 이름을 적되 확장자까지 적어야 한다. 

 -q

앞서 언급한 화질로 0~100까지 정할 수 있다. 

 -n

미리보기 화면을 끈다. 미리보기 설정은 기본적으로 되어 있다. 

 

 -w

이미지의 가로길이 단위는 픽셀이다 

 -h

이미지의 세로길이 단위는 픽셀이다. 

 -md

모드로 기본적으로 정해져 있는 화면비와 화면 길이로 잡아준다 0~7까지 있다(이름을 잘못 지은것 같다). 


다음은 이미지나 사진에 대해서 조금 알때 먼저 살펴보게 되는 옵션이다.

 -e

인코딩을 변경할 수 있다. 변경가능한 인코딩은 jpg, bmp, gif, png인데 기본적으로는 jpg로 되어 있다. 

 -ss

셔터 스피드를 설정할 수 있다 최대 6000마이크로 초로 할 수 있다. 


이 밖에 문서에서 제공하는 기능은 다양하다. 화면 밝기 조절에서 나이트 모드 등 다양한 기능들이 있지만, 일반적으로 많이 사용하지 않는 기능들이기 때문에 여기에는 정리 하지 않았다.


카메라 접근 설정

 말이 접근 설정이지만 실제로는 퍼미션(permission)설정이다. 리눅스 시스템에서는 기본적으로 폴더와 파일에서 접근 권한을 3단위로 나누어진다. 읽기/쓰기/실행 단계로 나누어지며, 이 접근관한을 각각 수퍼계정(root)/소유계정(user)/아무나(anyones) 기본적으로 프로그램을 네트워크 통신을 통해서 실행하게 되는 경우 아무나(?)에 해당된다. 때문에 라즈베리파이에 키보드와 마우스를 꼿고 실행하거나 ssh로 원격상태로 실행할 경우에는 대부분 소유계정에서 실행을 하기 때문에 문제없이 작동이 된다.


 하지만, 자신이 만든 웹 앱이나 프로그램으로 실행할 경우에는 계정이 아무나(혹은 게스트)가 되는데 이때 디바이스는 기본적으로 아무나 접근할 수 없게 설정되어 있다. 때문에 이러한 설정을 변경해줘야 한다. 카메라 모듈 v2의 디바이스 파일은 /dev/vchiq이다. 익숙한 리눅스 유저들은 다음 명령어를 실행할 것이다.

sudo chmod 766 /dev/vchiq

하지만, 이렇게 변경을 해도 디바이스 쪽은 다시 재부팅을 하면 초기상태로 되돌아가 버린다. 이를 위해서는 초기 퍼미션을 바꿔야 하는데 열심히 포럼글을 찾다가 알게 되었다. 물론 포럼에 올라와있는 글대로 하면 안되고 의미를 생각하고 설정을 하니 된것이다(우연한 실수로 성공함).

다음경로에 파일을 생성한다.

sudo nano /etc/udev/rules.d/10-vchiq-permissions.rules

다음 한줄을 입력한 다음에 저장한다.

SYSTEM=="vchiq",GROUP="video",MODE="766"


그리고 재부팅을 한뒤에 다음 명령어로 지속적으로 적용이 되는지 확인하면된다.

ls -al /dev/vchiq


반응형
반응형

라즈베리 파이3 고정 IP 설정

알아야 했던 배경

 진행하는 프로젝트 특성상 폐쇄적인 네트워크 환경에서 진행을 한다. 네트워크 관련 지식이 부족한 관계로 무선 공유기를 이용하되 각 기기별로 정해진 IP를 할당해서 사용해야 했다. 따라서 고정 IP 설정이 필수였다.


 문제는 웹 검색시 많은 정보가 있었음에도 쉽게 되지 않았었다. 공식 포럼에 올라온 방법은 2가지의 파일을 수정하는데, 실제로 해본결과 한개의 파일만 수정해도 적용이 되었었다.


네트워크 정보 입력

 고정 IP를 할당을 한다는건 기기가 네트워크 정보에 대해서 알고 있다는 의미이다. 이러한 정보를 기기에 입력해 줘야 한다. 다행히 무선네트워크는 GUI 환경에서 한번 접속을 하면 SSID와 PW는 아래의 경로에 저장이 된다.

/etc/wpa_supplicant/wpa_supplicant.conf


네트워크 환경 입력

 터미널 창(Ctrl + Alt + T)을 열고 다음 경로의 설정파일을 수정한다.


sudo nano /etc/network/interfaces
nano외에 자신이 편한 편집기를 사용해도 된다. 파일을 열람하다보면 다음과 같은 내용을 볼 수 있다.

#(중략)
iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface eth0 inet manual
#(중략)

위의 부분을 아래와 같이 수정을 한다.

#(중략)
#iface wlan0 inet manual
iface wlan0 inet static    #고정IP로 설정
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
address 192.168.0.xxx    #할당받을 주소
netmask 255.255.255.0    #공유기에서 확인한다
network 192.168.0.0       #공유기IP주소에서 마지막 실주소가 0
gateway 192.168.0.1      #공유기IP주소

iface eth0 inet manual
#(중략)

 여기서 #은 주석처리를 의미하므로 해당 줄은 실행은 안한다는 의미이다. Wlan0은 WiFi랜이고, eth0는 유선랜을 의미한다.


 address는 해당 기기가 요청한 IP 주소, netmask는 주소 할당방식인데, 기본적인 설정은 위와 같지만, 자신의 공유기설정에서 넷마스크가 어떻게 되어 있는지 확인을 하면 된다. network는 공유기가 갖는 실 주소체계에서 0이 되어야 하며, gateway는 공유기의 ip주소를 입력하면된다.


nano로 편집했을 경우 Ctrl + x를 눌러서 변경내용을 저장하고 종료하면 된다. GUI환경에서는 공유기접속을 시키면 된다.


IP할당 확인

 만약 이미 IP를 할당받은 상태라면, 방금 수정한 내용이 적용이 안되어 있다. 그럴경우 다음 명령어로 와이파이 랜 디바이스를 껐다가 켜본다.


sudo ifdown wlan0
sudo ifup wlan0
디파이스가 켜진다음에 $ifconfig 를 실행하여 확인하면 IP충돌이 나지 않은 이상 wlan0 부분에 정상적인 IP를 할당 받는다.


반응형
반응형

라즈비안(라즈베리 파이3) 초기 설정

라즈베리 파이3는 운영체제를 갖은 상태에서 동작하는 기기이기 때문에 작은 기기치고는 상당히 높은 스펙을 갖고 있다. 때문에 공식 홈페이지에서 운영체제 다운로드에서 공식적 운영체제인 라즈비안(Raspbian)외에도 우분투 마테(나는 매이트로 읽었었다), 윈도우10 IoT 코어 등을 설치할 수 있다.


하지만, 가능하면 공식 제공되는 라즈비안을 사용하도록 하고 나중에 기회가 되면 다른 운영체제도 건들여 보거나 다른 사람이 건들인걸 구경해봐야 겠다.


 운영체제를 설치한 이후에는 제일 먼저 해야 할 일은 메모리 확장인데, ISO 이미지로 설치를 했다면, 최근 버전에서는 부팅시 자동으로 확장이 되니 메모리 확장에 대해서는 신경을 안써도 된다.


초기 환경설정


 상단 우측의 라즈베리 아이콘을 클릭하여 [Preferences->Raspberry Pi Configuration]을 클릭하여 셋팅 창을 열고 해당되는 항목을 수정하면 된다.


Interface

자신이 사용하고자 하는 디바이스를 사용할 수 있도로 해준다. 현재 카메라를 사용할 것이므로 카메라부분을 사용가능하게 하면 된다.


Localisation

Locale : English / Us

Timezone : Aisa / Seoul

Keyboard : Korean of Republic / Korean

WiFi Country : US


 Wifi를 미국(US)로 해야 되는 이유는 운영체제상의 버그로 인해서 한국(KR)로 하면 와이파이 기기를 인식 못 한다. 이때문에 라즈베리파이3가 처음 출시 되었을때 곳곳에서 멘붕 소리가 커뮤니티에서 들려 왔었다. 언젠가는 패치를 하겠지만, 글을 적는 시점까지는 버그가 여전히 유효하다. 설정을 마치고 OK를 클릭하면, 설정 적용을 위해서 재부팅 할 것을 권고한다.


터미널 update, upgrade

 재부팅 후 터미널 창(Ctrl + Alt + T)을 열고 다음과 같이 업데이트를 한다.


sudo apt-get update && sudo apt-get upgrade -y


 리눅스를 좀 다뤄본 사람은 알겠지만, && 명령어는 리눅스 쉘 매크로중 하나로 여러개의 명령을 실행할 수 있도록 해준다.

 update가 끝나면, 바로 upgrade를 시작한다. 이전에는 자동으로 마쳤는데, 요즘(2016년 11월 이후)에는 확인 문서가 확인할때까지 중단된다. 시간이 좀 걸리니 잠시 티타임을 갖고 오면 된다.

 중간에 확인해서 선택해야 하는 상황이 발생한다면, 가능하면, default가 무엇이지 확인을 하고 선택하는 것이 좋다.

반응형
반응형

회사에서 내게 준 프로젝트로 라즈베리 파이3로 카메라를 조합하여 3D 스캐너를 만들라는 것이다.


 최근 기술 트렌드가 예전에 비해서 여러장의 사진과 해당 사진의 카메라 위치정보만 있다면, 이론적으로는 3D 모델링을 할 수 있다. 문제는 각 이미지가 어느 부분인지 컴퓨터가 알기위해서 들어가는 기술들 간의 정확도 따라서 성공률 차이가 많이 나게 된다.


 비상업용 및 상업용으로 많은 꽤 많은 소프트웨어들이 나와 있다. 

성공한 실제 사례의 경우 Pi 3D scan[링크] 정도 있다. 소프트웨어는 파이썬으로 작성되어 있고, 파이썬이 느리다는 단점이 있지만, 요즘에는 아주 신생 벤쳐기업이 아니라면, 컴퓨팅 파워를 빵빵하게 해주는 장비가 많아서 무리가 없을 것 같다.


 아무튼 사진을 가지고 3D 모델링 하는 프로그램은 이미 많이 나와 있지만, 사진을 가져오는 작업은 알아서 해야 하는지라 본의 아니게(사실 원했지만..) 라즈베리 파이3를 사용하게 되었다. 일단은 3D 스캐너를 만든다기 보다는 여러대의 라즈베리 파이3에서 사진을 가져오는 소켓 프로그램을 만드는 것이다(총 1대의 PC에서는 약 20~40여개의 라즈베리 파이3로부터 사진을 가져와야 한다).


 소켓 통신 프로그램이 완성된 후에 사진 정합을 위한 특징점 및 카메라 모델에 대한 연구도 진행할 계획이긴 한데, 회사의 입장은 소켓 통신 프로그램 완성까지만 바라고 있는 상황이다.

반응형

+ Recent posts