Ricoh Theta

前言大綱

從 2.1.0 版本開始,我們提供了一個新的 Ricoh Theta 示例,供開發人員學習如何創建與 Ricoh Theta 相機通信的 標準波士頓動力 API 圖像服務standard Boston Dynamics API image service。 

此示例假設您使用 Ricoh Theta 相機的默認設置並安裝 Spot CORE。

必需項目

  • Spot CORE
  • Ricoh Theta V or Z1
  • 個人電腦

安裝步驟

以下安裝步驟假設您: 
  • 已閱讀 Ricoh Theta 在線手冊並了解客戶端模式操作
  • 已在您的 PC 上下載並安裝最新的 spot-sdk 
  • 熟悉 SSH 並使用命令行界面 (CLI)

在 PC 上安裝套件

通過 PC 上的 CLI 導航到 python 示例 ricoh_theta 目錄並在繼續之前查看此示例的 requirements.txt 文檔。 需要與標準 SDK 一起安裝幾個 python 套件:
python3 -m pip install -r requirements.txt

測試 Ricoh Theta

包含一個 test_driver.py 腳本,它將顯示相機的狀態並拍照。

腳本中的 SSID 字段必須更新以匹配您相機的 theta_ssid。 此外,在運行示例驅動程序之前,您必須從要運行此示例的計算機無線連接到 Ricoh Theta 相機。 請注意,當相機通過 USB 端口插入計算機時,Ricoh Theta 的無線網絡可能不會出現或不可用。 對於 Ricoh Theta Z,檢查 OLED 顯示屏上的 WiFi 圖標以確認網絡正在廣播。 對於 Ricoh Theta V,如果處於接入點模式,無線指示燈應呈藍色亮起。

該腳本當前配置為用於在您的 PC 上運行的直接模式 IP 設置。 根據需要編輯 python 腳本以啟用/禁用 Ricoh Theta 相機驅動程序的不同功能。
python3 test_driver.py

將 Ricoh Theta 連接到 Spot

在您的 PC 上執行以下步驟以設置 Ricoh Theta 客戶端模式,這意味著 Ricoh Theta 將連接到不同的網絡(在這種情況下,Spot 的 WiFI)而不是廣播自己的網絡(這是直接模式)。 這個例子需要下面的python腳本來設置靜態ip,這是應用程序不允許的。

在理光 Theta 上啟用無線連接,並通過 WiFi 將您的 PC 連接到理光 Theta。

通過 CLI 在您的 PC 上運行 ricoh_client_mode.py。 將下面命令中的大寫字母替換為您的 Ricoh Theta SSID(從末尾刪除 .OSC)、Spot 的 WiFi SSID 和 Spot 的 WiFi 密碼。 disable-sleep-mode 將禁用 Ricoh Theta 在不活動模式下的自動睡眠。 注意,這也可以通過 Ricoh Theta 的電話應用程序來完成,在這種情況下,運行客戶端模式腳本時不需要提供此參數。
python ricoh_client_mode.py --theta-ssid THETAYL00196843 --wifi-ssid WIFI_SSID --wifi-password WIFI_PASSWORD --disable-sleep-mode

如果一切順利,您應該會看到一個顯示新靜態 ip 的正面響應:

Response Below:
{
 "name": "camera._setAccessPoint",
 "state": "done"
}
New static ip: 192.168.80.110
上述腳本將指定 Ricoh Theta 客戶端模式的接入點設置和靜態 IP 地址。

對於開發人員:作為附加選項,您可以通過直接在 ricoh_theta.py 中編輯 __init__ 函數或在創建 Theta() 對象時配置 ip 設置。 這些設置如下所示,並且已經在 Spot CORE 上進行了測試。
def __init__(..., static_ip="192.168.80.110", subnet_mask="255.255.255.0", default_gateway="192.168.80.1"):

在您的 Ricoh Theta 上啟用客戶端模式(按下相機上的無線按鈕)並確認與 Spot 接入點的連接。 在 Ricoh Theta V 的客戶端模式下,無線指示燈應停止閃爍並變為穩定的綠色。 在 Ricoh Theta Z 上,在相機的 OLED 顯示屏上,無線指示燈旁邊將有一個“CL”圖標。 通常需要 Ricoh Theta 電源循環。 請注意,客戶端模式下 Ricoh Theta 的新靜態 IP 將在攝像機重新啟動後保持不變。

運行圖像服務

影像服務腳本創建了一個標準的波士頓動力 API 影像服務,該服務與 Ricoh Theta 相機進行通信。

要從已註冊的負載計算機(例如 Spot CORE)啟動 GRPC 圖像服務,使用負載的身份驗證對機器人連接進行身份驗證,並最終將服務註冊到服務名稱為“ricoh-theta-image-service”的目錄中, 發出以下命令:
python3 ricoh_theta_image_service.py --theta-ssid THETA_SSID --theta-client --host-ip HOST_COMPUTER_IP --guid GUID --secret SECRET --port PORT_NUMBER ROBOT_IP

此示例將兩個不同的 IP 地址作為參數。 --host-ip 參數描述將運行網絡攝像頭圖像服務的計算機的 IP 地址。 存在幫助程序來嘗試確定正確的 IP 地址。 此命令必須在將運行 ricoh theta 圖像服務的同一台計算機上運行:

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

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

由於該示例是為在外掛負載計算機上運行而創建的,因此它需要輸入參數 --guid(唯一生成的外掛負載說明符)和 --secret(與外掛負載關聯的私有字符串)用於將運行 Ricoh 的已註冊外掛負載計算機 Theta 影像服務。 對於 Spot CORE,默認情況下,此信息將位於文件 /opt/payload_credentials/payload_guid_and_secret  中。 請注意,您可以使用 負載示例 the payloads example   將 Ricoh Theta 圖像服務註冊為 失重負載 並為您的計算機創建 GUID 和密碼,從而在您的 PC 上本地運行 Ricoh Theta 圖像服務。 有關詳細信息,請參閱有關 外掛負載軟件配置 configuration of payload software  的文檔。

如果提供了 --theta-client 參數,Ricoh Theta 將在客戶端模式下連接。 否則,它將默認為直接 ip 模式連接,需要運行圖像服務腳本的計算機無線連接到理光 Theta 的 WiFi。 如果在客戶端模式下使用 Ricoh Theta,請確保 ricoh_client_mode.py 腳本已運行以使用正確的靜態 ip 創建到 Spot 的 WiFi 的連接。 --theta-ssid 參數用於傳遞 Ricoh Theta 相機的 SSID,該相機將拍攝圖像並應刪除 .OSC。 這將被設置為服務的圖像源名稱。 此外,如果 Ricoh Theta 的密碼與相機的默認密碼不同,則可以使用 --theta-password 參數提供。

Ricoh Theta 圖像服務將默認僅在通過 GetImage gRPC 調用請求時嘗試從 Ricoh Theta 相機捕獲圖像。要讓 Ricoh Theta 嘗試連續捕獲圖像,請傳遞命令行參數 --capture-continuously。這將導致影像服務創建後台線程並嘗試以高速率查詢理光 theta。請注意,Ricoh Theta 圖像的分辨率非常高,從魚眼圖像到處理後圖像的拼接過程非常耗時,因此有時連續捕獲會迅速耗盡相機的電池電量或使相機處理器不堪重負。

最後,可以使用 --port 參數指定影像服務的端口號。可以繞過端口參數並允許選擇隨機端口號,但不鼓勵這樣做,因為重新啟動可能會導致對舊端口上偵聽服務的意外更改。此端口號將與主機 IP (HOST_COMPUTER_IP) 一起使用,以完全指定影像服務的運行位置。該端口號必須是開放的,不能被本地防火牆屏蔽,否則機器人和目錄註冊服務將無法訪問ricoh-theta圖像服務。

Ricoh Theta Image 服務配置

Ricoh Theta 影像服務配置為在無法與 Ricoh Theta 相機建立通信時阻止目錄註冊。 這意味著圖像服務不會出現在目錄列表、數據採集服務的已知捕獲或平板電腦的可用相機源集中。

此外,如果在啟動時無法與相機通信以及由於與網絡不同的原因捕獲嘗試失敗,該服務將引發服務故障Service Faults 。 這些故障將在機器人狀態下可見,並會在平板電腦上顯示警告指示器。

請注意,由於在相機上將兩個魚眼圖像拼接在一起需要時間,因此 Ricoh Theta 圖像請求可能會很慢。

除錯技巧

以下是除錯 Ricoh Theta 圖像服務的一些建議:

檢查 Ricoh Theta 是否配置正確。如果在本地運行影像服務,Ricoh Theta 可以採用 direct-ip 模式,本地計算機可以連接到 Ricoh Theta 的網絡。如果在 Spot CORE 或不同的 Spot 負載計算機上運行,Ricoh Theta 應處於客戶端模式。對於理光 Theta V,無線指示燈應該是穩定的綠色;對於理光 Theta Z,OLED 顯示屏在無線指示燈附近會有一個“CL”圖標。重新運行 ricoh_client_mode.py 腳本以完全確保它已設置為在 Spot 網絡上進行通信可能會有所幫助。

使用命令行工具檢查圖像服務是否出現在目錄中: 
python3 -m bosdyn.client --username {USER} --password {PWD} {ROBOT_IP} dir list

使用 影像服務測試器程序 image service tester program 確保服務可以成功通信並且每個 RPC 都將正確完成。

當圖像服務測試程序的所有測試都通過時,通過查看相機源下拉菜單(狀態欄的左上角)檢查平板電腦是否正在檢測 Ricoh Theta 圖像服務,然後通過選擇檢查圖像是否出現理光Theta。

使用 Docker 運行 Ricoh Theta Image Service

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

按照本節 this section 中有關如何構建和使用 docker 映像的說明進行操作。 在此示例中運行 Ricoh Theta 應用程序所需的應用程序參數是
--theta-ssid THETA_SSID --theta-client --host-ip HOST_COMPUTER_IP --guid GUID --secret SECRET --port PORT_NUMBER ROBOT_IP。

提醒:在負載計算機上運行圖像服務時,Ricoh Theta 需要處於客戶端模式。 按照上面的初始說明設置客戶端模式。

開發者評論

有關 Ricoh Theta API 文檔,請訪問  https://api.ricoh/products/theta-api/

參考資料

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

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

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

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

下載網頁使用 requests 模組