跳轉到內容

SwisTrack/多攝像頭客戶端

來自華夏公益教科書

SwisTrack 多攝像頭客戶端是一個客戶端工具,用於與多個 SwisTrack 例項通訊。它使用 wxWidgetsC++ 編寫。透過 TCP 連線接收到的資料將在顯示在視窗上之前合併並同步。 SwisTrack 是連線的伺服器部分,SwisTrack 多攝像頭客戶端是客戶端。


縮放/聚焦功能

[編輯 | 編輯原始碼]

您可以使用滑鼠滾輪放大和縮小。要聚焦在特定區域,請右鍵單擊該區域。左鍵單擊將在點選機器人時獲得一些資訊。透過單擊滑鼠滾輪,檢視將重置。


類層次結構

[編輯 | 編輯原始碼]

我們有 10 個類,其中 "ClientFrame" 是主要的類。


SwisTrack Multi-Camera Client class hierarchy


名稱 解釋
ClientFrame 定義一個新的幀型別(主類)
CommunicationMessage 建立可以傳送給機器人和 SwisTrack 例項的新訊息。
CommunicationNMEAInterface 用於解析傳入訊息和傳送傳出訊息的介面
MapPanel 負責繪製面板
Robot 建立用於通訊和繪製的新機器人
RobotSocketManager 負責機器人和 SwisTrack 多攝像頭客戶端之間的通訊
SavePosition 如果啟用,則將每個機器人分開儲存在一個檔案中,以儲存它們的位置
STClient 定義應用程式型別
SwisTrack 建立用於通訊和繪製攝像頭區域的新 SwisTrack 物件
SwisTrackSocketManager 負責 SwisTrack 例項和 SwisTrack 多攝像頭客戶端之間的通訊


編輯設定

[編輯 | 編輯原始碼]

如果選擇選單“編輯/編輯設定”,將彈出一個編輯視窗,您將能夠更改設定。注意語法,否則程式將無法正常執行。以“#”開頭的行被視為註釋。

SwisTrack 多攝像頭客戶端設定的正確語法是(示例)


SwisTrack

[編輯 | 編輯原始碼]
型別 Adress:port; 參考點 (x,y); 向量 1 (x,y); 向量 2 (x,y); 寬度、高度 (w,h);
cam localhost:3000; 2,3; 1,0; 0,1; 4,6


型別 Adress:port; id
robot 127.0.0.1:4002; 5


注意,在型別之後始終緊跟一個“:” ,否則在每個條目之後都緊跟一個“;”,最後一個條目除外,它後面沒有任何字元。請檢視截圖以瞭解實際示例。


儲存跟蹤位置:檔案語法

[編輯 | 編輯原始碼]

如果需要,可以將機器人的移動儲存到 "robotX.txt" 檔案中(X 是機器人的 ID)。每幀將使用一行。語法如下


幀號、x 方向位置、y 方向位置、角度

示例:217,0.669787,8.297836, 6.210000


攝像頭區域定義

[編輯 | 編輯原始碼]

如上所示,我們使用一個參考點和 2 個向量、一個寬度和高度來定義一個攝像頭區域。


SwisTrack Multi-Camera Client camera setting


NMEA 0183 協議

[編輯 | 編輯原始碼]

SwisTrack 多攝像頭客戶端使用 NMEA 0183 協議與 SwisTrack 例項和機器人通訊。


SwisTrack

[編輯 | 編輯原始碼]

請記住,每個命令都封裝在一條訊息中,該訊息包含一個訊息頭(命令)和一個根據特定命令的論證列表。每個命令都以“$”開頭,並使用大寫字母。


傳送命令

[編輯 | 編輯原始碼]
命令 論證 描述
$START 啟動 SwisTrack 例項並將當前幀號設定為 0,但在傳送 $STEP 之前不會處理任何內容。
$STOP 停止當前跟蹤並將當前幀號重置為 0。
$STEP 指示 SwisTrack 例項處理下一張影像幀。

程式可以暫停(不再發送 $STEP 命令)並透過選單命令“ST 控制/暫停跟蹤”和“ST 控制/恢復跟蹤”恢復。


接收命令

[編輯 | 編輯原始碼]
命令 論證 描述
$PARTICLE int id, double x, double y, double angle 在幀上識別到的每個機器人都會使用這些引數單獨傳送
$BEGINFRAME int frameNb 指示在此命令之後到達的資料屬於傳送的幀號
$ENDFRAME 指示當前處理的幀已完成

備註:一個或多個 $PARTICLE 命令只能在 $BEGINFRAME 和 $ENDFRAME 命令之間接收!


傳送命令

[編輯 | 編輯原始碼]
命令 論證 描述
$STATUS 獲取機器人的當前狀態(例如:跟蹤、空閒、搜尋)。
$POSITION double position x, double position y 重置機器人的當前位置。

接收命令

[編輯 | 編輯原始碼]
命令 論證 描述
$STATUS string status 返回其當前狀態。


以下是從 SwisTrack 多攝像頭客戶端擷取的一些截圖

SwisTrack Multi-Camera Client "main" window SwisTrack Multi-Camera Client "edit" window

華夏公益教科書