공학, 컴퓨터.

제가 좋아하는 것들 입니다.

3d Printing/Klipper

Klipper - Crowsnest를 이용한 카메라 추가

webcur21 2024. 2. 15. 23:45

저번의 첫번째 출력 이후로 매트 PLA의 안착실패와 기타 문제들로 인한 몇번의 스파게티와 아마테라스를 겪으니, 출력 버튼을 누르는 데만 해도 손이 덜덜 떨리게 됬다. 이렇게 된거, 웹캠을 내 계획보다 더 일찍 설치하기로 하였다. 마침 당근마켓에 Logitech C922 중고 매물이 괜찮은 가격에 올라와 있어서, 덥썩 집어오게 되었다.

(그때 까지는 다음의 고난이 얼마나 힘들지 모른채로..)

 

https://github.com/mainsail-crew/crowsnest

 

GitHub - mainsail-crew/crowsnest: Webcam Service for multiple Cams

Webcam Service for multiple Cams. Contribute to mainsail-crew/crowsnest development by creating an account on GitHub.

github.com

 

설치 방법은 이미 파이에 KIAUH를 설치하였다면 매우 간단하다. Manual Installation으로 설치하였다 이미 봉변을 당한 자로서, KIAUH를 통한 자동설치 적극 권장한다.

 

 

정 수동 설치를 원하는 독자들을 위해서 Mainsail Document 링크를 아래에 남겨두겠다.

https://crowsnest.mainsail.xyz/

 

Crowsnest - Crowsnest

This has only been tested on Raspberry Pi OS/MainsailOS so far. If you test it on other distributions, feel free to create a pull request for the readme, or contact us on Discord.

crowsnest.mainsail.xyz

 

일단 KIAUH를 통한 설치과정과 몇가지 세팅값 (C922에 알맞은)을 알려주겠다.

 

 

먼저 당연하게도, KIAUH를 쓰기 위해선 기본적으로 파이에 연결해야 한다. 맥 유저의 경우, Terminal에서

ssh ( 파이 유저 이름, 기본:pi )@( ip주소 )

 

를 입력하면 쉽게 pi와 연결할 수 있다. 만약 ssh연결을 허용하지 않아 정확히 값을 입력했음에도 불구, 연결이 안된다면 일단 유선으로 연결, raspi-config를 통해 ssh 커넥션을 허용시키는 것이 추후에 유용할 것이다.

 

다음으로,

./kiauh/kiauh.sh

 

를 입력, KIAUH 설정 창에 진입한다.

 

 

맥의 경우, ssh (자신이 설정한 유저이름, 기본: pi)@(파이 ip 주소) 로 무선연결

 

그리고 1을 입력하여 설치창에 진입, 그다음 12를 입력하여 Crowsnest를 설치한다.

 

 

설치하고 재부팅을 하면, Klipper config 폴더에 crowsnest.conf가 생겼을 것이다.

'Machine' 탭의 config 폴더 확인. Klipper 테마 변경 방법도 추후 타 글에 서술할 예정.

 

crowsnest.conf 를 처음 열면 복잡해 보이지만, 사실 그 종류와 설정방법이 단순하니 걱정하지 않아도 될 듯 하다.

기본적인 내용은 다음과 같다:

[crowsnest]
log_path: /home/webcur2010/printer_data/logs/crowsnest.log
log_level: verbose                      # Valid Options are quiet/verbose/debug
delete_log: false                       # Deletes log on every restart, if set to true
no_proxy: false

# 위 crowsnest 섹션은 설치시 기본적으로 다 설정되기에 약간은 위와 다르더라도 변경 X


[cam 1]
mode: ustreamer                           # ustreamer - Provides mjpg and snapshots. (All devices)
                                          # camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
enable_rtsp: false                        # If camera-streamer is used, this enables also usage of an rtsp server
rtsp_port: 8554                           # Set different ports for each device!
port: 8080                                # HTTP/MJPG Stream/Snapshot Port
device: /dev/video0                       # See Log for available ...
resolution: 640x360                      # widthxheight format
max_fps:60                                # If Hardware Supports this it will be forced, otherwise ignored/coerced.
# custom_flags:                           # You can run the Stream Services with custom flags.
# v4l2ctl: focus_automatic_continuous=1   # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.

 

ustreamer / camera-streamer

전자는 일반적인 USB 웹캠, 후자는 라즈베리파이에 CSI 로 직접 연결하는 파이 카메라 등에 쓰인다. 후자가 화질, 속도면에서 유리하지만 일반적인 상황이라면 전자도 충분한 듯 하다

 

rtsp

온라인(와이파이) 웹캠? 을 설정할 수 있다. USB 웹캠 / 파이카메라 라면 rtsp 관련 2개의 값은 주석처리 (ex. # enable_rtsp: false) 해도 괜찮다.

 

port

crowsnest, 즉 백엔드에서 받은 정보를 프론트엔드, Mainsail/Fluidd 로 보내는 포트이다. 카메라가 여러대라면 두번째 카메라부터는 8081, 8082 등으로 중복되지 않게 변경해야 한다.

 

device

여러개의 USB 장치중 카메라의 시리얼을 넣으면 된다. 편리하게도, crowsnest는 자동적으로 카메라를 인식, 길고 복잡한 시리얼을 "/dev/video(카메라 인식순서대로 번호)"로 변경하기에 오류가 나지 않는 이상 변경할 필요가 없다. 만약 모종의 이유로 동작하지 않는 듯 하다면, logs 폴더에서 crowsnest.log를 보면 원래의 시리얼을 알 수 있다.

 

resolution / max_fps

말 그대로 화질/프레임 설정이다. 앞서 언급한 crowsnest.log를 보면 각 카메라별 지원되는 화질, 프레임이 나온다. 그중에서 자신의 SBC(라즈베리파이 류) 스펙, 인터넷 환경등에 적합한 값을 찾아서 적용하길 바란다. 참고로 나의 경우 웹캠이 지원하더라도, 웹의 한계인지 프레임수가 그리 높게 나오지 않아서 보통의 경우 부드러운 화면을 위해 화질을 조금 낮추고 프레임을 높게 잡는것이 적절할 것 같다.

 

custom_flags / v4l2ctl

카메라의 자동초점, 자동조도 등을 수동으로 값을 변경하거나 그외 다른 카메라 설정들을 조절할 수 있다. 여러개를 변경하려면 A=1,B=2 식으로 사용하면 된다. 나도 아직 입문자인 터라, 더 깊이 들어가보진 못했지만, 로지텍 C920(922) 의 경우 v4l2ctl에서

focus_automatic_continuous 를 통해 =1은 자동초점, =0은 고정 초점으로 사용할 수 있다. 고정 초점의 거리 설정이나 더 자세한 설정은 검색 바란다.

 

 

내가 사용하는 설정값은 다음과 같다:

[crowsnest]
log_path: /home/webcur2010/printer_data/logs/crowsnest.log
log_level: verbose                      # Valid Options are quiet/verbose/debug
delete_log: false                       # Deletes log on every restart, if set to true
no_proxy: false

# 위 crowsnest 섹션은 설치시 기본적으로 다 설정되기에 약간은 위와 다르더라도 변경 X


[cam Logitech_C922]
mode: ustreamer                         # ustreamer - Provides mjpg and snapshots. (All devices)
                                        # camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
# enable_rtsp: false                    # If camera-streamer is used, this enables also usage of an rtsp server
# rtsp_port: 8554                       # Set different ports for each device!
port: 8080                              # HTTP/MJPG Stream/Snapshot Port
device: /dev/video0                     # See Log for available ...
# resolution: 864x480                   # widthxheight format
# resolution: 640x360
resolution: 1280x720
# resolution: 1920x1080
max_fps:60                             # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags:                          # You can run the Stream Services with custom flags.
v4l2ctl: focus_automatic_continuous=1   # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.

 

 

위 설정값을 모두 설정한 후, Klipper(프론트 엔드: Mainsail) 설정에서 Webcam 하나를 추가하면 완성이다.

출력하는 모습

 

'3d Printing > Klipper' 카테고리의 다른 글

Klipper - 사파이어 플러스 V3(직구) printer.cfg  (0) 2024.02.03