數據採集服務 Data Acquisition Service

前言大綱

示例程序演示如何創建數據採集插件服務並運行該服務,以便它可以與機器人上的數據採集服務進行通信。 數據採集插件服務用於與外部負載和硬件通信,從這些傳感器檢索數據,並將數據保存在數據採集存儲服務中。

DataAcquisitionPluginService 基礎類別(在 data_acquisition_plugin_service.py 中定義)可用於創建數據採集插件服務。 示例目錄包含多個不同的示例插件,每個插件都包含在自己的文件夾中,這些插件使用這些幫助函數來創建插件服務,這些服務可以從各種傳感器(包括 Piksi GPS 或點雲生產服務,例如 Velodyne)收集數據 ,或保存與傳感器相關的 json 格式的元數據  ( gps_metadata_plugin_service.py )。

設置相依性

此範例需要安裝 bosdyn API 和客戶端,並且必須使用 python3 運行。使用 pip,可以使用以下命令安裝這些相依性:
python3 -m pip install -r requirements.txt

請注意,此命令必須從包含將運行的特定插件服務文件的目錄中運行。

運行數據採集範例插件服務

每個數據採集插件示例都將在本地運行服務,並使用目錄保持活動將其註冊到機器人的目錄服務。 運行插件服務後,機器人上的數據採集服務會檢測註冊並採用插件功能。 這將允許您的數據採集插件的功能在平板電腦或與數據採集服務通信的其他應用程序中可用。

要從此示例目錄運行插件服務,請發出以下命令:

python3 {PLUGIN_FILE_NAME} --guid {GUID} --secret {SECRET} --host-ip {IP_WHERE_PLUGIN_WILL_RUN} --port {PORT_THE_PLUGIN_WILL_MONITOR} {ROBOT_IP}

注意:點雲插件將要求您傳遞註冊的服務名稱。 您可以通過運行 python -m bosdyn.client --username {USER} --password {PASSWORD} {ROBOT_IP} 目錄列表來找到它。

此示例將兩個不同的 IP 地址作為參數。 --host-ip 參數描述將運行數據採集插件服務的計算機的 IP 地址。 存在幫助程序來嘗試確定正確的 IP 地址。 此命令必須在將運行插件服務的同一台計算機上運行:

python3 -m bosdyn.client --username {USER} --password {PASSWORD} {ROBOT_IP} self-ip

另一個 IP 地址是傳統的機器人主機名(“ROBOT_IP”)參數,它描述了託管目錄服務的機器人的 IP 地址。

由於示例是為運行負載計算機而創建的,因此它需要輸入參數 --guid(唯一生成的負載說明符)和 --secret(與負載關聯的私有字符串)用於將運行示例的已註冊負載計算機插件。有關詳細信息,請參閱有關  外掛負載軟件配置 configuration of payload software  的文檔。

對於 Spot CORE,默認情況下,此信息將位於文件 :  /opt/payload_credentials/payload_guid_and_secret  中。

請注意,您可以通過使用 負載範例 the payloads example  將其註冊為失重負載並為您的計算機創建 GUID 和密碼,從而在您的 PC 上本地運行示例插件。

最後,可以使用 --port (”PORT_THE_PLUGIN_WILL_MONITOR”) 參數指定示例插件服務的端口號。可以繞過端口參數並允許選擇隨機端口號,但不鼓勵這樣做,因為重新啟動可能會導致服務偵聽端口發生意外更改。端口號將與 --host-ip  ("IP_WHERE_PLUGIN_WILL_RUN") 一起使用,以完全指定兩個服務在外掛負載 計算機上運行的位置。不同插件的端口號不能相同,必須是開放的,不能被本地防火牆屏蔽,否則機器人和其他應用程序將無法訪問該服務。

可以通過在主機 (Linux) 上運行以下命令來打開服務使用的網絡端口:

sudo ufw allow {PORT_NUMBER}

測試數據採集插件

有一個  插件測試器腳本 plugin tester script   可以在開發新的數據採集插件服務時使用,以幫助確保該服務可以按預期進行通信和行為。 該腳本通過一系列測試來檢查每個插件的 RPC 的網絡和功能。

與數據採集服務通信

數據採集示例顯示了一個程序,該程序與機器人上的數據採集服務進行通信,並通過不同的數據採集服務 RPC 運行。 數據獲取服務將聚合來自每個插件服務的響應,並將通信和請求定向到特定插件。

運行與數據採集服務通信的示例:

python3 data_acquisition_example.py --username {USER} --password {PASSWORD} {ROBOT_IP}

從數據採集商店下載

數據採集下載腳本允許用戶使用 REST 調用從 DataAcquisitionStore 服務下載數據。 該腳本僅支持基於時間的查詢來過濾哪些數據被下載並保存到本地。 以下命令是基於時間的查詢和下載的示例。 時間戳以 RFC 3339 日期字符串格式指定(YYYY-MM-DDTHH:MM::SS.SZ, Y:year, M:month, D:day, H:hours, M:minutes, S:seconds as double, Z:zulu時區)

python3 data_acquisition_download.py --username {USER} --password {PASSWORD} {ROBOT_IP} --query-from-timestamp 2020-09-01T00:00:00.0Z --query-to-timestamp 2020-09-04T00:00:00.0Z

請注意,默認情況下,下載腳本會將數據保存到當前目錄,但 --destination-folder 參數可用於更改下載數據的保存位置。

使用 Docker 運行數據採集插件服務

有關如何在計算負載上作為 docker 容器運行軟件應用程序的一般說明,請參閱本文檔。

安裝和設置 docker 後,可以將任何數據採集插件服務創建到 docker 容器中,保存為 tar 文件,然後使用 Portainer 在 Spot CORE 上運行。 在插件的特定目錄中,每個插件服務都有 Dockerfile。 這些文件將創建一個安裝了所有必要相依性的 docker 容器,並將啟動插件服務。

按照 本節 this section  開始的有關如何構建和使用 docker 鏡像的說明進行操作。 運行本示例中包含的插件所需的應用程序參數是 --host-ip HOST_COMPUTER_IP --guid GUID --secret SECRET ROBOT_IP


參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

下載網頁使用 requests 模組