入門指南 (Smart blaze)#
如需有關 Smart blaze 相機初始設定與 IP 配置的資訊,請參閱 相機安裝 (blaze) 主題。
資訊
在本說明文件中,請將 ${cameraip} 替換為您使用 pylon IP Configurator所設定的 IP 位址。為求便利,您可以將下列行新增至電腦上的 ~/.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 之前,您必須在彈出的訊息對話方塊中手動確認啟動。
為 VM 指派 IP 位址#
根據預設,VM 會嘗試透過 DHCP 取得 IP 位址。如果相機直接連接到您的電腦且沒有可用的 DHCP 伺服器,這將會失敗。在這種情況下,請使用 Smart blaze VM Control 網頁介面來手動設定靜態 IP 位址。
-
在「IP 位址」輸入欄位中輸入IP 位址以進行手動 IP 位址設定時,請使用以下格式:
a.b.c.d/掩碼位元
末尾的掩碼位元值定義了子網掩碼中被設定的位元數。 範例:
當輸入192.168.1.127/24 時,系統會對虛擬機器套用以下設定:
IP 位址:192.168.1.127
子網遮罩:255.255.255.0 -
請以以下格式輸入用於手動 IP 設定的主域名伺服器與次域名伺服器(DNS ),或留空:
a.b.c.d - 請以以下格式輸入閘道,或留空:
a.b.c.d
若將此欄位留空,系統將使用DHCP 提供的閘道;若輸入值,則該閘道將用於手動 IP 設定。
顯示當前 IP 位址以進行DHCP 設定#
如果您已設定好可正常運作的DHCP 環境,虛擬機器會自動從DHCP 伺服器取得 IP 位址。若要確認已指派的 IP 位址,您可以採取以下幾種方式:
使用 Smart Blaze VM Control 網頁介面(建議)#
若虛擬機器上已安裝qemu-guest-agent套件,Smart Blaze VM Control 網頁介面即可自動顯示該虛擬機器的當前 IP 位址。qemu-guest-agent 是一個在客體虛擬機器內部運行的輔助守護程式,負責向主機系統提供有關客體虛擬機器的資訊,包括網路設定。
資訊
若虛擬機器上已安裝並執行 qemu-guest-agent,則可透過 Smart Blaze VM Control 網頁介面顯示該 IP 位址。若未安裝該代理程式,網頁介面僅能在虛擬機器透過網路與 Blaze 主機系統通訊時,才能擷取虛擬機器的當前 IP 位址。
qemu-guest-agent 套件已設定為在虛擬機器建置過程中一併安裝。此設定載於blazevm.xml檔案中。該檔案位於預設安裝目錄:/opt/pylon/share/pylon/Samples/blaze/smartblaze/vm/elbe/blazevm.xml
如果您正在建立自訂虛擬機器映像檔,請確保配置檔案中的套件清單已包含 qemu-guest-agent。
在安裝並啟動代理程式後,Smart Blaze VM Control 網頁介面會自動在狀態資訊區域中顯示虛擬機器的當前 IP 位址。
檢查路由器設定#
要查明虛擬機器被指派了哪個 IP 位址,另一種方法是查看路由器的「DHCP 」客戶端清單或設定介面。
透過 Telnet 連線至虛擬機器開機主控台#
若未安裝qemu-guest-agent,或您偏好直接存取,請連線至虛擬機器的開機主控台。要啟用此功能,請確保在網頁介面中勾選了「啟用序列主控台 Telnet 埠」核取方塊。之後,您即可透過 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 連線至虛擬機器#
資訊
與 ${cameraip} 變數, ${vmip} 在本文件中,將使用此術語來指稱在攝影機上運行的虛擬機器(VM)的 IP 位址。請在您的 ~/.bashrc 為方便起見,請參閱此檔案(請依實際情況調整 IP 位址):
取得虛擬機器 (VM) 的 IP 位址後,即可使用使用者名稱透過 SSH 連線至該虛擬機器 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 在您的電腦上,您可以依照以下步驟建立一組金鑰對:
-
執行以下指令,並確認所有提示:
-
將您的公開金鑰複製到虛擬機器中。
您必須最後一次使用 root 密碼進行確認。
現在,您可以在不需每次輸入密碼的情況下,從這台電腦連線至您的虛擬機器。
透過此驗證方式,您亦可使用 scp 工具。一種更有效的替代方案是 rsync 該實用程式已安裝在虛擬機器上。
為 Smart blaze VM 開發軟體#
為了開發適用於 Smart blaze VM 的軟體,Smart blaze SDK 提供了兩種跨平台開發環境選項:
建立 C++ 範例#
pylon Supplementary Package for blaze 包含數個 C++ 範例程式,展示如何使用 Basler pylon SDK 控制相機。
若您尚未安裝,請在您的開發電腦上安裝最新的 pylon SDK 以及適用於Linux 的pylon Supplementary Package for blaze 。您可從Basler 網站取得這些套件。
您可以從以下建置環境中進行選擇:
使用 ELBE SDK 建立範例#
若您尚未執行此步驟,請依照「使用 ELBE SDK 進行跨平台建置」一節中的說明,建立並安裝 ELBE SDK。
要建置範例並將其複製到相機虛擬機器中,請執行以下指令:
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 容器中執行指令.
要建置範例並將其複製到相機虛擬機器中,請執行以下指令。該容器已定義了環境變數 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 幀畫面,並輸出一些像素值。要執行此範例程式:
-
開啟通往虛擬機器的 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 環境變數:
網路轉發#
若將相機直接連接至電腦,相機上的虛擬機器將無法連上網。若您需要在虛擬機器中存取網際網路(例如,要使用 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或-Y透過 SSH 連線時的選項: -
執行一個會開啟圖片視窗的範例:
您的電腦上應會彈出一個視窗,顯示來自攝影機的灰階深度影像。
資訊
您可能會在終端機中看到類似以下的錯誤訊息:
這是因為 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.