top drop menu

Recent Post

화요일, 8월 23

WebioPi와 UV4L를 이용하여 라즈베리파이 파이카메라 스트리밍 컨트롤러 만들기(1)

이 글에서는 WebioPi와 UV4L를 이용해서 파이카메라를 조작하여 원하는 방향을 촬영할 수 있도록 만들어 보자. 이 작업을 위해서는 아래 3가지를 설치해야 한다.

1. UV4L 설치하기
2. Servoblaster 설치하기
3. WebioPi설치하기

UV4L은 파이카메라의 비디오를 스트림하는 역활을 한다. Servoblaster는 파이카메라를 움직이는 서보모터 두개를 쉽게 조작할 수 있도록 해준다. WebioPi는 라즈베리파와 웹브라우저간에 통신을 하게 해서 영상과 컨트롤 정보를 주고 받게 해준다. 하나씩 설치해 보자.

1) UV4L 설치

http://www.linux-projects.org/

위 링크에 상세한 설치 방법이 소개되어 있다. 간단히 적어 보면 아래와 같다.

$ curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add -

$ sudo nano /etc/apt/sources.list 파일을 열어서 아래 한줄 추가해 주자.(자신의 설치 버전에 따라 다름)
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ jessie main

$ sudo apt-get update
$ sudo apt-get install uv4l uv4l-raspicam

$ sudo apt-get install uv4l-raspicam-extras
부팅시 모듈을 자동으로 드라이버를 로드하게 할려면  extras 패키지를 설치한다. 또한 서비스를 시작, 중지 재시작등의 편리한 기능을 제공한다.
편하게 살려면 해지...

$ sudo service uv4l_raspicam restart (서비스 실행하기)
서비스가 시작되면 기본적으로 UV4L은 /etc/uv4l/uv4l-raspicam.conf 파일을 참조해서 실행이된다. 기본값을 변경하고 싶다면 이 파일을 원하는대로 수정하면 된다. 해상도나 화면 반전등 다양한 옵션을 변경해 주면 된다. 이것은 나중에 웹페이지로 접속해서 변경을 해줄도 있는것 같다. 수동으로 실행할때 추가해 줄 수도 있다. 이 값을 초기 실행될때의 기본값이 들어 있는 파일인듯 하다.

$ sudo nano /etc/uv4l/uv4l-raspicam.conf


파이카메라가 준비 되었다. 테스트로 JPG 사진을 찍어 보자.

$ uv4l --driver raspicam --auto-video_nr --width 640 --height 480 --encoding jpeg
(이건 앞에서 extras를 설치하지 않고 수동으로 직접 로드해주는 방식이다. 아니면 다시 옵션을 다르게 해서 실행하고 싶을때 해 줄 수 있다. 파이 카메라를 어떤식으로 작동 시킬것인지 설정해 주는것 같다.)

$ dd if=/dev/video0 of=snapshot.jpeg bs=11M count=1 (찰칵!)
스트리밍 및 추가 기능을 사용하기 위해 아래 것들을 모두 추가 설치해 주자. 뭔지 정확히 모르겠지만 일단 모두 설치해 주자.

$ sudo apt-get install uv4l-server uv4l-uvc uv4l-xscreen uv4l-mjpegstream uv4l-dummy

$ pkill uv4l
실행중인 프로세스를 죽이는 명령이다.  앞의 설정을 지우고 다시 로드 하고 싶을때도 사용하면 되는것 같다. 즉, 뭔가 제대로 동작을 않을 때도 죽였다 다시 실행해 주자.
이렇게 하면 UV4L 코어 컴포넌트와 V4L2 드라이버 설치가 마무리된 것이다.
이제 웹브라우저에서 http://raspberrypi_ip:8080 으로 접속해보자. 다양한 옵션이나 기능을 보다 쉽게 이용하거나 변경해 줄 수 있다.



위 페이지로 접속한다. 터미널로 일일히 타이핑하는것보다 사용하기 쉽다. MJPEG/Stills stream을 선택하면 스트리밍되는 영상을 웹브라우저에서 확인할 수 있다. 크롬이나 파이어폭스에서 가능하다. 문제의 MS 익스플로러에서는 안되는것 같다. 안드로이드 폰 웹어플에서도 가능하다. Control Panel 아이콘을 선택하면 앞에서 해줬던 이런 저런 설정을 바로 변경해 줄 수 있다. 다른 아이콘 메뉴들은 개인적으로는 거의 사용할리 없거나 상관없는 것들이다. 일대일 혹은 다자간 화상회의 같은게 가능하다는 것 같다.
최신 기술로 WebRTC라는게 있는데 이게 라즈베리파이1에서는 안된다는 것 같다. 파이2부터는 된다고 ... 이런! 이건 포기하자.


해상도를 변경하고 화면 밝기나 콘트라스트 조절, 상하, 좌우 반전하기 등 잡다한 옵션을 설정할 수 있다. 역시 눈으로 보고 하는게 편하다. 파이카메라를 뒤집어 장착해 놔서 화면을 반전해주는 옵션을 선택했다. fullHD등 고해상도도 지원하지만 아무래도 재생 성능이 떨어지는 듯하다.



정확한 테스트인지는 모르겠지만 대략 가늠해 볼 수 있을듯 하다. 라즈베리파이에는 무선랜을 사용하였다. PC의 파이어폭스 브라우저로 접속하여 테스트 해 보았다. 스트리밍 해상도를 FullHD -> HD -> SD로 바꾸어 가며 촬영하였다. 이건 PC의 성능과도 연관이 좀 있을것 같고 ... SD급으로는 거의 지연없는 스트리밍이 가능해 보인다.
재미 있는 기능도 들어 있다. 바로 얼굴인식 ... 브라우저에서 컨트롤판넬에서 object/face detection에 사용함으로 변경해 주거나 아래 명령으로 실행해 주면 된다.

$ uv4l --driver raspicam --auto-video_nr --object-detection --min-object-size 80 80 --main-classifier /usr/share/uv4l/raspicam/lbpcascade_frontalface.xml --object-detection-mode accurate_detection --width 320 --height 240 --framerate 15 --encoding h264

이렇게 해서 파이카메라 사용과 영상 스트리밍을 위한 UV4L 설치와 설정에 대해 알아 보았다.

<다음편에 계속>


Blogger Widget