為 VEX AI 機器人編寫程式碼

本文將介紹一個範例項目,該項目顯示一個儀表板,報告使用 VEXlink 的機器人到機器人通訊的狀態以及 Jetson 的狀態。 ai_demo 專案託管在我們的 Github上。 此示範專案透過 USB 串列連接從 Jetson 處理器收集資料。 接收到資料後,資料會顯示在 V5 Brain 的螢幕上,並傳送到透過 VEXlink 連接的合作夥伴 V5 機器人。

:此專案需要最新版本的 VS Code Extension for V5。 在此下載 V5 的 VS Code 擴充功能


NVIDIA Jetson Nano 與 VEX V5 大腦通信

Jetson 處理器包含一個從 VEX AI 軟體收集以下資料的應用程式:

上下.png

機器人位置數據:

  • 機器人距離場地中心的 X、Y 位置(以公尺為單位)。
  • 機器人的方位角(航向)、仰角(俯仰)、旋轉(滾動)皆以弧度表示。

物體偵測資料(三種):

像素 (0,0).png

影像檢測(類型一):
  • 此數據代表 VEX AI 英特爾相機偵測到的物體。
  • 此數據參考相機影像描述物件。
  • X、Y、寬度和高度的值以像素為單位。 像素值參考影像和物件偵測框的左上角。 影像解析度為 640x480。

 

人工智慧XY (1).png

地圖檢測(類型二):

  • 此數據表示與 GPS 感測器相同的座標系中物體在場地上的位置,以公尺為單位報告。
  • 每個物件也包含該物件相對於場中心的位置。 X 和 Y 的值以各自軸上的場中心的公尺為單位。 Z 的值是距場地圖塊的米(高度)。

檢測對象(類型三):

結構.PNG

  • 這封裝了有關檢測到的對象的所有資訊。
  • 每個物件都包含一個表示偵測到的物件的分類的值。 (類別 ID:0 = GreenTriball、1 = RedTriBall、2 = BlueTriBall)
  • 每個物件還包含一個機率,代表 VEX AI 對偵測的置信度。 這是在 model.py 中刪除低機率檢測的過濾器之後。
  • 此外,VEX AI 英特爾攝影機還以公尺為單位報告物體的深度。
  • 影像偵測和地圖偵測附加到每個對象,以表示影像上以及現實世界中的物件的座標。

ai_demo 程序的細分:

主要.cpp

圖片5.png

VEX 專案的標準包括:

圖片7.png

聲明 Jetson 類別的實例。 此類用於向 Jetson 發送資料請求以及透過 USB 串列連接接收資料。

#定義MANAGER_ROBOT 1

Define_manager_robot_1.png

聲明 robots_link 類別的實例。 該物件將用於在該機器人和夥伴機器人之間連接和傳輸資料。 可以將同一專案下載到兩個單獨的機器人。 一個機器人需要有以下線路:

//#定義MANAGER_ROBOT 1

在將程式碼載入到第二個機器人之前,您需要註解掉該行:

robots_link 類別設定機器人的 VEXlink 並處理兩個機器人之間的資料傳輸和接收。 我們不會在本文中詳細介紹該類別的工作原理。 首先了解 VEXlink 的工作原理是個好主意。 有關使用 V5 VEXlink API 的更多詳細信息, 本文檔 解釋了新庫以及如何有效地使用它們進行機器人間通信。

  • 競賽活動處理者

    第一個自動標誌.png

    VAIC和VRC最大的區別之一是沒有驅動器控制週期。 相反,有兩個自主時期:隔離時期和互動時期。 在此範例中,每個自治週期都有單獨的例程。 由於VEX API不支援兩種不同的回調,因此程式中必須有一個標誌來決定要執行哪個例程。 在本範例程式中,「firstAutoFlag」用於呼叫第一次啟用autonomous時的Isolation函數,以及第二次啟用autonomous時的互動函數。 需要注意的一點是,如果由於某種原因需要重置比賽,則需要重新啟動演示程序,以便重置firstAutoFlag。

  • 主要的()

    主要(1).PNG

    這是該項目的主要任務。 它首先呼叫 vexcodeInit() 來正確設定 VEXcode 環境。 接下來,宣告一個本機 AI_RECORD 物件來儲存我們從 Jetson 接收的資料。 還設定了一個單獨的任務來處理使用最新資料更新畫面。 該任務的程式碼包含在dashboard.cpp 檔案中。 自治回調也被註冊來處理自治週期何時啟動。

    主 while() 迴圈首先將 jetson_comms 物件中的最新資料複製到本機 AI_RECORD 物件中。 然後,它將機器人的位置資訊傳遞給連結對象,以便將其傳輸給我們的夥伴機器人。 一旦處理完數據,它就會向 Jetson 要求更多數據並休眠 66 毫秒。 該數據的輪詢率為 15Hz。 由於 AI 系統資料更新速度約為 15Hz,因此沒有理由更快進行輪詢。

    :Jetson 地圖資料僅需由單一任務請求。

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: