入門指南 (Smart blaze)#
有關 Smart blaze 相機的初始設定與 IP 設定資訊,請參閱 Camera Installation (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 建議在首次登入後變更密碼。請按一下網頁介面中的 Change Password 按鈕來執行此操作。
輸入目前密碼後,將顯示 Smart blaze VM Control 網頁介面:

在 VM 執行時,狀態資訊應顯示 kvm_machine.service 已載入且為啟用狀態。資訊區域應包含字串 Active: active (running)。
首次使用預設 VM 之前,您必須在彈出的訊息對話方塊中手動確認啟動。
指派 IP 位址給 VM#
根據預設,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 控制網頁介面(建議)#
如果在 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 位址後,您可以使用使用者名稱透過 SSH 連線至該 IP root 以及印在相機標籤上的密碼:
您可以執行 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。一個更有效率的替代方案是 rsync 公用程式,它已經安裝在 VM 上。
為 Smart blaze VM 開發軟體#
為了開發 Smart blaze VM 的軟體,Smart blaze SDK 提供了兩個交叉開發環境選項:
- ELBE SDK:ELBE (Embedded Linux Build Environment) 包含交叉開發工具鍊以及根據目標根檔案系統所需的全部開發套件。
- Docker container:包含交叉開發工具鍊以及所有需要的套件。
建置 blaze C++ 範例#
pylon Supplementary Package for blaze 包含多個 C++ 範例,演示瞭如何使用 Basler pylon SDK 控制相機。
如果您尚未安裝,請在您的開發電腦上安裝最新的 pylon SDK 以及適用於 Linux 的 pylon Supplementary Package for blaze。您可以從 Basler 網站取得這些套件。
您可以選擇以下建置環境:
使用 ELBE SDK 建置範例#
如果您尚未操作,請按照Cross-Building Using 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 Container 建置範例#
如果您尚未操作,請建立 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 Shell:
-
在該 Shell 中,啟動範例。
您應該會看到類似以下的輸出: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 Shell,您必須設定 GENICAM_GENTL64_PATH 環境變數:
網路轉發#
如果您將相機直接連接到電腦,相機上的虛擬機器將無法連線至網際網路。如果您需要在虛擬機器中使用網際網路存取權(例如,使用 apt-get從 Debian 封存檔安裝額外的套件),您需要在電腦上設定 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或-Y透過 SSH 連線時的選項: -
啟動會開啟影像視窗的範例:
您應該會看到電腦上開啟了一個視窗,顯示來自相機的灰階深度影像。
資訊
您可能會在終端機中看到類似以下的錯誤:
這是因為 X11 轉發需要額外時間,會拖慢抓取迴圈並導致遺失影格。這可以透過設定較低的影格率來避免。
若要了解如何降低影格率,請參閱 Controlling the Frame Rate。
另一種運作模式即使在進行 X11 轉發時也能正常運作而不會有遺失影格的風險,那就是使用軟體觸發功能,以便只有在目前影格處理完成後才觸發下一個影格。由於應用程式在請求下一個影格之前會先等待,因此這會導致較低的影格率。
執行 blaze Python 範例#
Python 範例使用 OpenCV 或 Open3D。若要執行 Python 範例:
-
開啟具有 X11 轉發功能的 SSH Shell:
-
在該 Shell 中,切換至範例目錄:
-
執行範例。您應該會看到類似以下的輸出以及 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.