콘텐츠로 바로 가기
STAGING SERVER
DEVELOPMENT SERVER

시작하기 (스마트 블레이즈)#

이 항목에서는 Smart Blaze 카메라를 설치하고 설정하는 방법을 설명합니다.

Smart Blaze 카메라의 초기 설정 및 IP 구성에 대한 자세한 내용은 ‘카메라 설치(Blaze) ’ 항목을 참조하십시오.

정보

이 문서 전체에서 다음을 ${cameraip} 다음에서 설정한 IP 주소를 사용하여 pylon IP Configurator. 편의를 위해 다음 줄을 ~/.bashrc 컴퓨터에 있는 파일 (IP 주소를 실제 IP 주소로 변경하세요):

export cameraip=192.168.1.123

이를 통해 이 항목에 있는 명령어를 수정할 필요 없이 터미널에 바로 복사하여 붙여넣을 수 있습니다. 이 줄을 추가한 후 설정 파일을 다시 불러오는 것을 잊지 마세요:

source ~/.bashrc

카메라 설정 및 IP 구성#

Smart Blaze VM 웹 인터페이스에 접속하기#

Smart Blaze에는 Debian Trixie를 기반으로 한 기본 가상 머신이 함께 제공됩니다.

Smart Blaze VM Control 웹 인터페이스를 사용하여 VM을 제어하고 상태를 확인할 수 있습니다. 웹 인터페이스에 접속하려면 터미널에 다음 명령어를 입력하십시오:

xdg-open http://${cameraip}

그러면 기본 웹 브라우저가 실행되고 Smart Blaze VM Control 로그인 웹 인터페이스가 표시됩니다. 기본 비밀번호를 입력하여 로그인하십시오. 기본 비밀번호는 카메라에 부착된 라벨에서 확인할 수 있습니다. 보안상의 이유로, Basler는 첫 로그인 후 비밀번호를 변경할 것을 권장합니다. 비밀번호를 변경하려면 웹 인터페이스에서 ‘비밀번호 변경’ 버튼을 클릭하십시오.

현재 비밀번호를 입력하면 Smart Blaze VM Control 웹 인터페이스가 표시됩니다:

Smart Blaze VM Control 웹 인터페이스

VM이 실행 중일 때, 상태 정보에는 kvm_machine.service가 로드되어 활성 상태임을 나타내야 합니다. 정보 영역에는 “Active: active (running)”이라는 문자열이 표시되어야 합니다.

기본 VM을 처음 사용하기 전에, 표시되는 메시지 대화 상자에서 수동으로 시작을 확인해야 합니다.

VM에 IP 주소 할당하기#

기본적으로 VM은 DHCP 을 통해 IP 주소를 획득하려고 시도합니다. 카메라가 컴퓨터에 직접 연결되어 있고 DHCP 서버를 사용할 수 없는 경우, 이 작업은 실패합니다. 이 경우 Smart Blaze VM Control 웹 인터페이스를 사용하여 고정 IP 주소를 수동으로 설정하십시오.

  1. 수동 IP 주소 구성을 위해 IP 주소 입력 필드에 IP 주소를 입력할 때는 다음 형식을 사용하십시오.
    a.b.c.d/maskbits
    마지막에 오는 마스크 비트 값은 서브넷 마스크에서 설정된 비트 수를 정의합니다. 예:
    192.168.1.127/24를 입력하면 VM에 다음 구성이 적용됩니다.
    IP 주소: 192.168.1.127
    서브넷 마스크: 255.255.255.0

  2. 수동 IP 설정을 위해 주 및 보조 도메인 네임 서버(DNS)를 다음 형식에 따라 입력하거나 비워 두십시오:
    a.b.c.d

  3. 게이트웨이를 다음 형식으로 입력하거나 비워 두십시오:
    a.b.c.d
    이 필드를 비워 두면 DHCP 에서 제공하는 게이트웨이가 사용됩니다. 값을 입력하면 해당 게이트웨이가 수동 IP 구성에 사용됩니다.

DHCP 설정을 위한 현재 IP 주소 표시#

DHCP 이 정상적으로 설정되어 있다면, 가상 머신은 DHCP 서버로부터 자동으로 IP 주소를 할당받습니다. 할당된 IP 주소를 확인하려면 다음과 같은 몇 가지 방법이 있습니다:

VM에 qemu-guest-agent 패키지가 설치되어 있으면, Smart Blaze VM Control 웹 인터페이스에서 VM의 현재 IP 주소를 자동으로 표시할 수 있습니다. qemu-guest-agent는 게스트 VM 내에서 실행되는 보조 데몬으로, 네트워크 구성을 비롯한 게스트 VM에 대한 정보를 호스트 시스템에 제공합니다.

정보

가상 머신(VM)에 qemu-guest-agent가 설치되어 실행 중이라면, Smart Blaze VM Control 웹 인터페이스를 통해 IP 주소를 확인할 수 있습니다. 에이전트가 설치되어 있지 않은 경우, 웹 인터페이스는 가상 머신이 네트워크를 통해 Blaze 호스트 시스템과 통신할 때에만 가상 머신의 현재 IP 주소를 가져올 수 있습니다.

qemu-guest-agent 패키지는 VM 빌드 과정에서 설치되도록 구성되어 있습니다. 이는 blazevm.xml 파일에 명시되어 있습니다. 이 파일은 기본 설치 디렉터리인 /opt/pylon/share/pylon/Samples/blaze/smartblaze/vm/elbe/blazevm.xml에서 확인할 수 있습니다.

사용자 정의 VM 이미지를 구축하는 경우, 구성 파일의 패키지 목록에 qemu-guest-agent가 포함되어 있는지 확인하십시오.

에이전트가 설치되고 실행되면, Smart Blaze VM Control 웹 인터페이스의 상태 정보 영역에 해당 VM의 현재 IP 주소가 자동으로 표시됩니다.

라우터 설정 확인#

가상 머신(VM)에 어떤 IP 주소가 할당되었는지 확인하는 또 다른 방법은 라우터의 ‘ DHCP ’ 클라이언트 목록이나 설정 인터페이스를 확인하는 것입니다.

Telnet을 통해 VM 부팅 콘솔에 연결하기#

qemu-guest-agent가 설치되어 있지 않거나 직접 접속을 원할 경우, VM의 부팅 콘솔에 연결하십시오. 이를 활성화하려면 웹 인터페이스에서 ‘시리얼 콘솔 텔넷 포트 활성화’ 확인란이 선택되어 있는지 확인하십시오. 그런 다음 텔넷을 통해 콘솔에 접속할 수 있습니다:

telnet ${cameraip} 4446

사용자 이름으로 로그인하세요 root 그리고 카메라 라벨에 인쇄된 비밀번호입니다. 다음 명령어를 입력하여 IP 주소를 확인하십시오:

$ ip address

출력 결과는 다음과 비슷하게 표시됩니다(실제 IP 주소는 다를 수 있습니다):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 3e:41:20:7e:d2:ba brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.127/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

SSH를 통해 가상 머신에 연결하기#

정보

다음과 마찬가지로 ${cameraip} 변수, ${vmip} 이 문서 전체에서 카메라에서 실행 중인 VM의 IP 주소를 가리키는 데 사용될 것입니다. 다음 줄을 ~/.bashrc 편의를 위해 파일을 작성하세요(IP 주소는 상황에 맞게 조정하세요):

export vmip=192.168.1.127

VM의 IP 주소를 확인한 후에는 사용자 이름을 사용하여 SSH를 통해 해당 VM에 연결할 수 있습니다. root 그리고 카메라 라벨에 인쇄된 비밀번호:

ssh root@${vmip}

다음 명령을 실행할 수 있습니다. htop 가상 머신 내에서 어떤 프로그램이 실행 중인지 확인하려면 다음 명령어를 입력하세요:

$ htop
    0[|                                   0.7%] Tasks: 15, 2 thr, 66 kthr; 1 running
    1[|                                   0.6%] Load average: 0.00 0.00 0.00
    2[|                                   2.0%] Uptime: 17:37:58
    3[|                                   0.6%]
  Mem[|||||||                      71.5M/5.79G]
  Swp[                                   0K/0K]

  [Main] [I/O]
    PID USER       PRI  NI  VIRT   RES   SHR S  CPU%-MEM%   TIME+  Command
    643 root        20   0  4740  3156  2428 R   2.6  0.1  0:00.16 htop -M
      1 root        20   0  164M 11032  8308 S   0.0  0.2  1:06.60 /sbin/init
    141 root        20   0 33368 10308  9300 S   0.0  0.2  0:01.34 /lib/systemd/systemd-journal
    162 root        20   0 24824  5752  4108 S   0.0  0.1  0:01.34 /lib/systemd/systemd-udevd
    163 systemd-ti  20   0 90448  6804  5924 S   0.0  0.1  1:44.70 /lib/systemd/systemd-timesyn
    179 systemd-ti  20   0 90448  6804  5924 S   0.0  0.1  0:58.75 /lib/systemd/systemd-timesyn
    193 avahi       20   0  7224  3172  2820 S   0.0  0.1  0:00.13 avahi-daemon: running [Blaze
    194 messagebus  20   0  8304  3436  3000 S   0.0  0.1  0:00.24 /usr/bin/dbus-daemon --syste
    198 root        20   0 16876  6852  5940 S   0.0  0.1  0:01.25 /lib/systemd/systemd-logind
    200 avahi       20   0  7116   308     0 S   0.0  0.0  0:00.00 avahi-daemon: chroot helper
    203 root        20   0  2640   764   688 S   0.0  0.0  0:00.00 /sbin/agetty -o -p -- \u --n
    205 root        20   0  2684   812   736 S   0.0  0.0  0:00.01 /sbin/agetty -o -p -- \u --k
    208 root        20   0 16280  8776  7488 S   0.0  0.1  0:00.09 sshd: /usr/sbin/sshd -D [lis
F1Help  F2Setup F3SearchF4FilterF5Tree  F6SortByF7Nice -F8Nice +F9Kill  F10Quit

보다 안전하고 편리한 접속을 위해 인증용 키 쌍을 설정하세요. 아직 ~/.ssh/id_rsa 컴퓨터에서 다음 단계를 따라 키 쌍을 생성할 수 있습니다:

  1. 다음 명령을 실행하고 모든 확인 메시지를 확인하십시오:

    ssh-keygen
    
  2. 공개 키를 VM에 복사하세요.
    마지막으로 루트 비밀번호를 한 번 더 입력하여 확인해야 합니다.

    ssh-copy-id root@${vmip}
    

이제 매번 비밀번호를 입력하지 않아도 이 컴퓨터에서 가상 머신에 연결할 수 있습니다.

이 인증 방식을 사용하면 다음을 통해 VM으로 파일을 전송할 수도 있습니다. scp 도구. 더 효율적인 대안은 rsync 가상 머신에 이미 설치되어 있는 유틸리티.

Smart Blaze VM용 소프트웨어 개발#

Smart Blaze VM용 소프트웨어를 개발하기 위해 Smart Blaze SDK는 두 가지 크로스 개발 환경 옵션을 제공합니다:

  • ELBE SDK: ELBE(Embedded Linux Build Environment)에는 크로스 개발 툴체인과 대상 루트 파일 시스템에 필요한 모든 개발 패키지가 포함되어 있습니다.
  • Docker 컨테이너: 크로스 개발 툴체인과 필요한 모든 패키지가 포함되어 있습니다.

C++ 샘플: 건물 화재#

pylon Supplementary Package for blaze 에는 Basler pylon SDK를 사용하여 카메라를 제어하는 방법을 보여주는 여러 C++ 예제가 포함되어 있습니다.

아직 설치하지 않으셨다면, 개발용 컴퓨터에 최신 pylon SDK와 Linux 용 pylon Supplementary Package for blaze 를 설치하십시오. 이 패키지들은 Basler 웹사이트에서 다운로드할 수 있습니다.

다음 빌드 환경 중에서 선택할 수 있습니다:

ELBE SDK를 사용하여 샘플 빌드하기#

아직 수행하지 않으셨다면, ‘ELBE SDK를 사용한 크로스 빌딩’ 섹션에 설명된 대로 ELBE SDK를 생성하고 설치하십시오.

샘플을 빌드하고 카메라 VM으로 복사하려면 다음 명령어를 실행하십시오:

cp -r /opt/pylon/share/pylon/Samples/blaze/cpp ./blaze_samples
cd blaze_samples
. /opt/elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2/environment-setup-elbe-aarch64-linux-gnu-BlazeVM-1.2
# Adjust the path for the CMake toolchain file from the Smart blaze SDK as needed.
export CMAKE_TOOLCHAIN_FILE=/opt/pylon/share/pylon/Samples/blaze/smartblaze/vm/elbe/cross-toolchain.cmake/cross-toolchain.cmake
cmake -B build .
cmake --build build -j$(nproc)
ssh root@${vmip} mkdir -p samples
scp $(find build/ -type f -executable | egrep -w -v "ColorAndDepth|CMakeFiles") root@${vmip}:samples

Docker 컨테이너를 사용하여 샘플 구축하기#

아직 만들지 않으셨다면, 다음을 생성하십시오. dockerDo 아래에 설명된 별칭 Docker 컨테이너에서 명령어 실행하기.

샘플을 빌드하고 카메라 VM으로 복사하려면 다음 명령을 실행하십시오. 컨테이너에는 이미 환경 변수가 정의되어 있습니다. CMAKE_TOOLCHAIN_FILE, 이는 CMake가 ARM64 크로스 컴파일러 툴체인을 사용하도록 지시합니다.

dockerDo cp -r /opt/pylon/share/pylon/Samples/blaze/cpp ./blaze_samples
cd blaze_samples
dockerDo cmake -B build .
dockerDo cmake --build build -j$(nproc)
ssh root@${vmip} mkdir -p samples
scp $(find build/ -type f -executable | egrep -w -v "ColorAndDepth|CMakeFiles") root@${vmip}:samples

Blaze C++ 예제 실행하기#

첫 번째 샘플은 발견되는 첫 번째 Blaze 카메라를 열고, 10프레임을 캡처한 다음, 몇 가지 픽셀 값을 출력합니다. 샘플을 실행하려면:

  1. VM에 SSH 셸을 엽니다:

    ssh root@${vmip}
    
  2. 해당 셸에서 샘플을 실행하세요.
    다음과 유사한 출력이 표시되어야 합니다:

    root@BlazeCustomerVM:~# ./samples/FirstSample
    Connected to camera Basler blaze-102S (40560199)
    User-defined name:
    Serial Number: 40560199
    x=  11.9 y=  27.4 z=1753.7
    intensity=51091 confidence=25577
    x=  11.9 y=  27.4 z=1754.9
    intensity=51006 confidence=25471
    x=  11.9 y=  27.4 z=1755.7
    intensity=51011 confidence=25478
    x=  11.9 y=  27.4 z=1756.5
    intensity=50728 confidence=25126
    x=  11.9 y=  27.4 z=1757.1
    intensity=50965 confidence=25420
    x=  11.9 y=  27.5 z=1757.7
    intensity=50963 confidence=25417
    x=  11.9 y=  27.5 z=1758.3
    intensity=50963 confidence=25417
    x=  11.9 y=  27.5 z=1758.9
    intensity=50859 confidence=25289
    x=  11.9 y=  27.5 z=1759.5
    intensity=50820 confidence=25240
    x=  11.9 y=  27.5 z=1760.1
    intensity=50803 confidence=25219
    
    Press Enter to exit.
    

대화형 SSH 셸을 열지 않고 샘플을 직접 실행하려면 다음을 설정해야 합니다. GENICAM_GENTL64_PATH 환경 변수:

ssh root@${vmip} GENICAM_GENTL64_PATH=:/opt/pylon/lib/gentlproducer/gtl ./samples/FirstSample

네트워크 전달#

카메라를 컴퓨터에 직접 연결하면 카메라 내의 가상 머신(VM)은 인터넷에 연결되지 않습니다. 가상 머신에서 인터넷 접속이 필요한 경우(예를 들어, 다음 명령어를 사용하여 데비안 아카이브에서 추가 패키지를 설치하려는 경우 apt-get), 컴퓨터에서 NAT 전달 규칙을 설정해야 합니다:

function setIptables() {
    echo "iptables: $@"
    if ! sudo iptables -C "$@"; then
        sudo iptables -A "$@";
    fi
}
DEVICE_WITH_CAMERA=eth0   # The network device on your PC to which the camera is connected
DEVICE_WITH_INTERNET=eth1 # The network device on your PC which provides the internet connection
OWN_IP=192.168.1.2        # Your PC's IP address on $DEVICE_WITH_CAMERA
VM_NET_PREFIX=24

setIptables FORWARD -s ${vmip} -o $DEVICE_WITH_INTERNET -i $DEVICE_WITH_CAMERA -j ACCEPT
setIptables FORWARD -i $DEVICE_WITH_INTERNET -d ${vmip} -m state --state RELATED,ESTABLISHED -j ACCEPT
setIptables POSTROUTING -t nat -o $DEVICE_WITH_INTERNET -j MASQUERADE

ssh root@${vmip} ip r add default via $OWN_IP dev eth0
ssh root@${vmip} bash -c "'echo nameserver 8.8.8.8 >> /etc/resolv.conf'"

이러한 설정을 적용하면 추가 패키지를 설치할 수 있을 것입니다:

ssh root@${vmip} apt-get update
ssh root@${vmip} apt-get install chocolate-doom
ssh -X root@${vmip} /usr/games/chocolate-doom

X11 포워딩#

일부 프로그래밍 예제에서는 OpenCV 시각화 창을 사용하여 카메라로 촬영한 이미지를 표시합니다. 개발 과정에서 촬영하거나 처리한 이미지를 시각화하는 것은 매우 유용합니다. 이는 성능 저하를 감수하고 X11 포워딩을 통해 구현할 수 있습니다. X11 포워딩을 사용하면 가상 머신에서 실행 중인 애플리케이션이 로컬 머신의 화면에 그래픽 사용자 인터페이스를 표시할 수 있습니다.

X11 전달을 활성화하려면:

  1. 다음 명령을 사용하여 -X 또는 -Y SSH를 통해 연결할 때의 옵션:

    ssh -X root@${vmip}
    
  2. 이미지 창을 여는 샘플을 실행해 보세요:

    ./samples/GrabDepthMap
    

    컴퓨터 화면에 카메라에서 전송된 그레이스케일 심도 이미지가 표시된 창이 열릴 것입니다.

정보

터미널에서 다음과 유사한 오류 메시지가 표시될 수 있습니다.

grab loop: Buffer grabbed but no user input buffer available , block ID = 435.

이는 X11 전달에 추가적인 시간이 소요되어 캡처 루프의 속도가 느려지고, 그 결과 프레임이 누락되기 때문입니다. 프레임 속도를 낮게 설정하면 이러한 현상을 방지할 수 있습니다.

프레임 속도를 낮추는 방법은 ‘프레임 속도 제어’를 참조하십시오.

X11 전달 중에도 프레임 드롭의 위험 없이 작동하는 또 다른 방식은, 현재 프레임의 처리가 완료된 후에만 다음 프레임이 트리거되도록 소프트웨어 트리거 기능을 사용하는 것입니다. 이 경우 애플리케이션이 다음 프레임을 요청하기 전에 잠시 대기하기 때문에 프레임 속도가 낮아집니다.

Blaze Python 예제 실행하기#

파이썬 예제 코드에서는 OpenCV 또는 Open3D를 사용합니다. 파이썬 예제 코드를 실행하려면:

  1. X11 전달이 활성화된 SSH 셸을 엽니다:

    ssh -X root@${vmip}
    
  2. 해당 셸 내에서 sample 디렉토리로 이동합니다:

    cd /opt/pylon/share/pylon/Samples/blaze/Python/pypylon
    
  3. 샘플을 실행해 보세요. 다음과 유사한 출력 결과와 OpenCV 또는 Open3D 시각화 창이 표시되어야 합니다:

    python3 SimpleGrab/simple_grab.py
    
    Using device  blaze-102S
    OperatingMode:  LongRange
    FastMode:  False
    FilterSpatial:  True
    FilterTemporal:  True
    FilterStrength:  220
    OutlierRemoval:  True
    ConfidenceThreshold:  320
    GammaCorrection:  True
    Min. Depth [mm]:  0
    Max. Depth [mm]:  9990
    To exit, press ESC in one of the image windows
    
    $ python3 ShowPointCloud/show_point_cloud.py
    Using device  blaze-102S
    [Open3D DEBUG] GLFW init.
    To exit, press ESC in one of the image windows.
    To save a point cloud as .pcd file, press S in one of the image windows.
    [Open3D DEBUG] Add geometry and update bounding box to [(-1565.8367, -1279.5530, 0.0000) - (1694.7946, 50.7543, 2803.0823)]
    [Open3D DEBUG] Global colormap init.