시작하기 (Smart blaze)#
Smart blaze 카메라의 초기 설정 및 IP 구성에 대한 정보는 카메라 설치 (blaze) 항목을 참조하십시오.
정보
이 설명서 전체에서 다음을 바꿉니다. ${cameraip} 을(를) 사용하여 구성한 IP 주소로 대체합니다. pylon IP Configurator. 편의를 위해 컴퓨터의 다음 줄을 ~/.bashrc 파일에 추가할 수 있습니다(IP 주소를 실제 IP 주소로 대체):
이렇게 하면 수정할 필요 없이 이 항목의 명령을 터미널에 직접 복사하여 붙여넣을 수 있습니다. 이 줄을 추가한 후 구성을 다시 로드하는 것을 잊지 마십시오.
카메라 설정 및 IP 구성#
Smart blaze VM 웹 인터페이스 액세스#
Smart blaze는 Debian Trixie 기반의 기본 가상 머신과 함께 배송됩니다.
Smart blaze VM Control 웹 인터페이스를 사용하여 VM을 제어하고 상태를 확인할 수 있습니다. 웹 인터페이스에 액세스하려면 터미널에 다음 명령을 입력하십시오.
이 명령을 실행하면 기본 웹 브라우저가 열리고 Smart blaze VM Control 로그인 웹 인터페이스가 표시됩니다. 로그인하려면 기본 비밀번호를 입력하십시오. 기본 비밀번호는 카메라의 라벨에서 확인할 수 있습니다. 보안상의 이유로 Basler는 최초 로그인 후 비밀번호를 변경할 것을 권장합니다. 웹 인터페이스에서 비밀번호 변경 버튼을 클릭하여 변경하십시오.
현재 비밀번호를 입력하면 Smart blaze VM Control 웹 인터페이스가 표시됩니다.

VM이 실행되는 동안 상태 정보에 kvm_machine.service가 로드되어 활성화 상태임을 나타내야 합니다. 정보 영역에는 Active: active (running) 문자열이 포함되어야 합니다.
기본 VM을 처음 사용하기 전에, 팝업으로 표시되는 메시지 대화 상자에서 시작을 수동으로 확인해야 합니다.
VM에 IP 주소 할당#
기본적으로 VM은 DHCP를 통해 IP 주소를 할당받으려고 시도합니다. 카메라이 컴퓨터에 직접 연결되어 있고 사용 가능한 DHCP 서버가 없는 경우 이 작업은 실패합니다. 이 경우 Smart blaze VM Control 웹 인터페이스를 사용하여 수동으로 고정 IP 주소를 구성하십시오.
-
수동 IP 주소 구성을 위해 IP Address 입력 필드에 IP 주소를 입력할 때는 다음 형식을 사용하십시오.
a.b.c.d/maskbits
후행 마스크 비트 값은 서브넷 마스크에 설정된 비트 수를 정의합니다. 예:
192.168.1.127/24를 입력하면 VM에 다음 구성이 적용됩니다.
IP 주소: 192.168.1.127
서브넷 마스크: 255.255.255.0 -
수동 IP 구성을 위해 기본 및 보조 DNS(도메인 이름 서버)를 다음 형식으로 입력하거나 비워 둡니다.
a.b.c.d - 다음 형식으로 게이트웨이를 입력하거나 비워 둡니다.
a.b.c.d
필드를 비워 두면 DHCP에서 제공하는 게이트웨이가 사용됩니다. 값을 입력하면 해당 게이트웨이가 수동 IP 구성에 사용됩니다.
DHCP 설정의 현재 IP 주소 표시#
작동 중인 DHCP 설정이 있는 경우, VM은 DHCP 서버로부터 자동으로 IP 주소를 가져옵니다. 할당된 IP 주소를 확인하는 방법은 다음과 같습니다.
Smart blaze VM Control 웹 인터페이스 사용(권장)#
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을 통해 콘솔에 액세스할 수 있습니다.
사용자 이름으로 로그인 root 및 카메라 라벨에 인쇄된 비밀번호를 입력합니다. 다음 명령을 입력하여 IP 주소를 확인합니다.
출력은 다음과 유사해야 합니다(실제 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 주소는 그에 맞게 조정하세요).
VM의 IP 주소를 얻은 후, 사용자 이름과 root 카메라 라벨에 인쇄된 비밀번호를 사용하여 SSH를 통해 연결할 수 있습니다.
가상 머신 내부에서 실행 중인 항목을 보려면 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 에 아직 키를 생성하지 않았다면, 다음 단계에 따라 키 쌍을 생성할 수 있습니다.
-
다음 명령을 실행하고 모든 프롬프트에 확인을 누릅니다.
-
공개 키를 VM으로 복사합니다.
루트(root) 비밀번호로 마지막으로 한 번 확인해야 합니다.
이제 매번 비밀번호를 입력하지 않고도 이 컴퓨터에서 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개의 프레임을 캡처한 다음, 일부 픽셀 값을 출력합니다. 샘플을 실행하려면 다음을 수행하십시오.
-
VM에 대한 SSH 셸을 엽니다.
-
해당 셸 내에서 샘플을 시작합니다.
다음과 유사한 출력이 표시되어야 합니다.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 환경 변수:
네트워크 포워딩#
카메라를 컴퓨터에 직접 연결하면 카메라의 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 포워딩을 활성화하려면:
-
다음 명령을 사용하여
-X또는-YSSH를 통해 연결할 때 옵션을 사용합니다. -
이미지 창을 여는 샘플을 시작합니다.
카메라의 그레이스케일 깊이(depth) 이미지를 보여주는 창이 PC에 열리는 것을 볼 수 있습니다.
정보
터미널에서 다음과 유사한 오류가 표시될 수 있습니다.
이는 X11 포워딩에 추가 시간이 소요되어 그랩 루프가 느려지고 프레임 누락이 발생하기 때문입니다. 프레임 레이트를 낮게 구성하면 이를 방지할 수 있습니다.
프레임 레이트를 줄이는 방법을 알아보려면 프레임 레이트 제어하기를 참조하세요.
X11 포워딩 중에도 프레임 드랍 위험 없이 작동하는 또 다른 작동 모드는 소프트웨어 트리거 기능을 사용하는 것입니다. 이를 통해 현재 프레임 처리가 완료된 후에만 다음 프레임이 트리거됩니다. 응용 프로그램이 다음 프레임을 요청하기 전에 대기하므로 프레임 레이트가 낮아집니다.
blaze Python 샘플 실행#
Python 샘플은 OpenCV 또는 Open3D를 사용합니다. Python 샘플을 실행하려면:
-
X11 포워딩을 사용하여 SSH 셸을 엽니다.
-
해당 셸 내에서 샘플 디렉토리로 이동합니다.
-
샘플을 실행합니다. 다음과 유사한 출력 및 OpenCV 또는 Open3D 시각화 창이 표시되어야 합니다.
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.