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

시작하기 (Smart blaze)#

이 항목에서는 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 Address 입력 필드에 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 설정이 있는 경우, VM은 DHCP 서버로부터 자동으로 IP 주소를 가져옵니다. 할당된 IP 주소를 확인하는 방법은 다음과 같습니다.

VM에 qemu-guest-agent 패키지가 설치되어 있는 경우, Smart blaze VM Control 웹 인터페이스에서 VM의 현재 IP 주소를 자동으로 표시할 수 있습니다. qemu-guest-agent는 게스트 VM 내부에서 실행되며 네트워크 구성을 포함하여 게스트 VM에 대한 정보를 호스트 시스템에 제공하는 도우미 디먼입니다.

정보

qemu-guest-agent가 VM에 설치되어 실행 중인 경우, Smart blaze VM Control 웹 인터페이스를 통해 IP 주소를 표시할 수 있습니다. 에이전트가 설치되어 있지 않은 경우, VM이 네트워크를 통해 blaze 호스트 시스템과 통신할 때만 웹 인터페이스에서 VM의 현재 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의 부트 콘솔에 연결하십시오. 이를 활성화하려면 웹 인터페이스에서 Enable the serial console telnet port 확인란이 선택되어 있는지 확인하십시오. 그 후 Telnet을 통해 콘솔에 액세스할 수 있습니다.

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를 통해 VM에 연결#

정보

다음과 유사하게 ${cameraip} 변수, ${vmip} 본 문서 전체에서 카메라에서 실행되는 VM의 IP 주소를 지칭하는 데 사용됩니다. 편의를 위해 다음 줄을 ~/.bashrc 파일에 추가하십시오(IP 주소는 그에 맞게 조정하세요).

export vmip=192.168.1.127

VM의 IP 주소를 얻은 후, 사용자 이름과 root 카메라 라벨에 인쇄된 비밀번호를 사용하여 SSH를 통해 연결할 수 있습니다.

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으로 복사합니다.
    루트(root) 비밀번호로 마지막으로 한 번 확인해야 합니다.

    ssh-copy-id root@${vmip}
    

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

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

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

Smart blaze VM용 소프트웨어를 개발하기 위해, Smart blaze SDK는 다음과 같은 두 가지 크로스 개발 환경 옵션을 제공합니다.

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

blaze 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
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에 인터넷 연결이 제공되지 않습니다. (예: Debian 아카이브에서 추가 패키지를 설치하기 위해) 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
    

    카메라의 그레이스케일 깊이(depth) 이미지를 보여주는 창이 PC에 열리는 것을 볼 수 있습니다.

정보

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

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

이는 X11 포워딩에 추가 시간이 소요되어 그랩 루프가 느려지고 프레임 누락이 발생하기 때문입니다. 프레임 레이트를 낮게 구성하면 이를 방지할 수 있습니다.

프레임 레이트를 줄이는 방법을 알아보려면 프레임 레이트 제어하기를 참조하세요.

X11 포워딩 중에도 프레임 드랍 위험 없이 작동하는 또 다른 작동 모드는 소프트웨어 트리거 기능을 사용하는 것입니다. 이를 통해 현재 프레임 처리가 완료된 후에만 다음 프레임이 트리거됩니다. 응용 프로그램이 다음 프레임을 요청하기 전에 대기하므로 프레임 레이트가 낮아집니다.

blaze Python 샘플 실행#

Python 샘플은 OpenCV 또는 Open3D를 사용합니다. Python 샘플을 실행하려면:

  1. X11 포워딩을 사용하여 SSH 셸을 엽니다.

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

    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.