USB 웹캠을 하나 주워 왔는데 동작이 잘돼서 라즈베리파이에 달아주기로 했습니다.
웹캠 제품은 Logitech Orbit/Sphere AF입니다.
uvcdynctrl 를 통해서 webcam에 Pan/Tilt를 조정할 예정입니다.
0. uvcdynctrl 설치
sudo apt-get install uvcdynctrl
1. uvdynctrl 도움말
uvcdynctrl -h
2. uvdynctrl 사용 가능한 장치 리스트 확인
uvcdynctrl -c
2. uvdynctrl 컨트롤
Controls that work
# uvcdynctrl -s "Pan/tilt Reset" -- 1
# uvcdynctrl -s "Pan/tilt Reset" -- 2
# uvcdynctrl -s "Pan/tilt Reset" -- 3
# uvcdynctrl -s "Pan (relative)" -- -700
$ uvcdynctrl -s "Pan (relative)" -- 700
# uvcdynctrl -s "Tilt (relative)" -- -500
# uvcdynctrl -s "Tilt (relative)" -- 500
# uvcdynctrl -s "Brightness" -- 1
# uvcdynctrl -s "Brightness" -- 255
# uvcdynctrl -s "Contrast" -- 1
# uvcdynctrl -s "Contrast" -- 255
# uvcdynctrl -s "Saturation" -- 1
# uvcdynctrl -s "Saturation" -- 255
# uvcdynctrl -s "Gain" -- 1
# uvcdynctrl -s "Gain" -- 255
# uvcdynctrl -s "Backlight Compensation" -- 0
# uvcdynctrl -s "Backlight Compensation" -- 1
# uvcdynctrl -s "Backlight Compensation" -- 2
# uvcdynctrl -s "Power Line Frequency" -- 0
# uvcdynctrl -s "Power Line Frequency" -- 1
# uvcdynctrl -s "Power Line Frequency" -- 2
# uvcdynctrl -s "White Balance Temperature" -- x
# uvcdynctrl -s "LED1 Mode" -- 0 LED off
# uvcdynctrl -s "LED1 Mode" -- 1 LED on
# uvcdynctrl -s "LED1 Mode" -- 2 LED blinking
# uvcdynctrl -s "LED1 Mode" -- 3 LED on
# 장치가 여러개 잡혀있을 때 명시적으로 지정
# uvcdynctrl ( --device=video0 ) -s "Pan/tilt Reset" -- 1
3. uvdynctrl 문제
a. uvdynctrl이 오래된 라이브러리이고, 더 이상 업데이트가 안됨.
b. tilt는 되지만, pan이 명령이 없음. 저 같은 경우는 추가해주었기 때문에 'pan (relative)'가 있습니다.
명령 추가해줍니다.
sudo vim /usr/share/uvcdynctrl/data/046d/logitech.xml
문자열 찾기 : V4L2_CID_PAN_RELATIVE
2008년도에 Pan 관련해서 업데이트를 했다고 합니다.
문자열 찾기 : V4L2_CID_TILT_RELATIVE
저 같은 경우는 노란색으로 부분 ID 쪽에 공백으로 돼있었습니다.
V4L2_CID_PAN_RELATIVE 추가해주면 됩니다.
추가가 되었으면,
uvcdynctrl --import=/usr/share/uvcdynctrl/data/046d/logitech.xml
혹시 모르니 재부팅도 해줍니다.
sudo reboot
4. 그래도 안 될 경우
docs.ros.org/en/jade/api/tuw_uvc/html/dynctrl-logitech_8h.html#a193f86e1414943187cb3c847358c0275
혹시 모르니, 위 URL에 맞춰 value 값을 바꿉니다.
V4L2_CID_PAN_RELATIVE = 0x009A0904
V4L2_CID_PAN_RESET = 0x009A0906
V4L2_CID_TILT_RELATIVE = 0x009A0905
V4L2_CID_TILT_RESET = 0x009A0907