OpenROV Cockpit說明

最近的工程要參考 OpenROV 的內容,在 Github 上找到了 OpenROV 的相關包與源碼,翻譯總結官方提供的 README.md 如下:

Cockpit 是爲任意遠程操作航行器或設備而開發的用戶操作界面與控制系統,它是 OpenROV 系列水下機器人的核心。Cockpit 構建在最新最全的網絡標準之上,與嵌入式 Linux 與微控制器共同工作,提供了這些系統的遙控。

一、主要特性

  • 連接手機、桌面、平板電腦的座艙,不需要安裝
  • 在瀏覽器中近於實時的顯示h.264/MJPEG視頻(近於120ms的延遲)
  • 遊戲本、鍵盤、搖桿可控
  • 陀螺儀 / 加速度計用於穩定飛行控制
  • 基於GPU的視頻過濾,電腦增強視頻
  • 基於可完全擴展插件的架構
  • 支持社區主題和插件
  • 瀏覽器中,記錄視頻回放和傳感器遙測
  • 支持語言翻譯
  • 在雲端備份數據與視頻
  • 通知並控制系統升級
  • 爲許多ROV電機配置構建相應配置
  • 實時視頻與控制的對等分配
  • 實時的視頻與數據流
  • 以及其他等等

二、相關工程

openrov-cockpit 是若干包中的一個,它將這些包結合在了一起,使其能夠控制一個 ROV。具體可以參考 openrov-software 中的其他包的說明列表。

1. 需要在本機運行的程序(機器人上嵌入式系統)

對於嵌入式機器人系統,openrov-cockpit 是通常與幾個不同的包一起安裝,這些包也包括了對於不同硬件解決方案的驅動與配置。我們爲 OpenROV 產品提供圖像。如果你有任何關於安裝在其他設備上的問題,請到我們的 Gitter 或者 OpenROV Forums 上聯繫。

三、如何在非嵌入式電腦環境下開發

該章節覆蓋了在你筆記本電腦或臺式機上的開發。

預先條件:

  • 完成 openrov-cockpit 倉庫的 git clone
  • 不使用 root 權限運行
  • 不運行在 ARM 上(以前存在一些只有在 intel 平臺下的開發以來,這將中斷標準的安裝過程)
  • 如果使用模擬視頻,需要在你的機器上安裝 FFMPEG

1. 安裝你需要安裝的所有依賴項

當運行該命令時,你需要連接實時網絡。

Linuxs/OSX:

npm run deploy:prod

Windows:

set NODE_ENV=production
set npm_config_shrinkwrap=true
npm install

如果你想安裝爲系統安裝依賴項,則必須忽略 shrinkwrap 的設置,具體命令如下:

Linuxs /OSX:

npm run deploy:dev

Windows:

set NODE_ENV=development
set npm_config_shrinkwrap=false
npm install

上述命令將遍歷所有路徑,尋找 bower.json 和 package.json 文件並安裝它們,這將花費幾分鐘運行。當安裝在 Intel 硬件上時,goemux 工程將展示一些錯誤信息,這些錯誤可以作爲工程被忽略,然後作爲附加依賴項進行安裝。安裝退出時,控制檯應該顯示如下內容:

  │   ├── lodash@3.10.1
  │   └── punycode@1.4.1
  ├─┬ tap-parser@1.2.2
  │ ├── events-to-array@1.0.2
  │ └─┬ js-yaml@3.5.5
  │   └── argparse@1.0.7
  └── tmatch@2.0.1

npm WARN OpenROV-Cockpit@30.1.0 No license field.
[brian@Babs openrov-cockpit]$

node 進程希望具體環境標誌位被設置改變其行爲。你可以覆蓋所有的設置,通過命令行將它們存儲進一個配置文件。

Windows 用戶:在執行 node 命令之前,你必須手動安裝環境變量。

運行模擬模式時,最少的選項如下所示:

  • USB_MOCK = true:Cockpit 將加載模擬依賴項,用來代替真實依賴項(可以產生虛假的實時事件);
  • HARDWARE_MOCK = true:Cockpit 將加載模擬 MCU 接口,用來模擬固件;
  • configfile = ‘< path >’:讀 / 寫 rovconfig.json 文件的位置。你的賬號需要具有訪問該地址的權限;
  • pluginsDownloadDirectory = ’ /tmp/plugins ‘:如果該文件夾缺失,則將會被創建。該文件夾用來下載插件。

運行命令:

USE_MOCK=true HARDWARE_MOCK=true configfile='/tmp/rovconfig.json' pluginsDownloadDirectory='/tmp/plugins' node src/cockpit.js

最小命令行將運行 node 進程,它將允許你連接到網址 http://localhost:8080,該網址將你帶入 Cockpit。模擬依賴項將傳遞虛假數據。最小命令行將不啓動任何視頻流。

一些更加通用的附加項如下:

  • MOCK_VIDEO_TYPE=MJPEG 或 MOCK_VIDEO_TYPE=GEOMUX:選擇視頻服務爲使用模擬模式
  • MOCK_VIDEO_HARDWARE=true:使視頻服務產生模擬數據,代替使用真實的硬件
  • env plugins__ui-manager__selectedUI=’classic-ui’:覆蓋已經加載的默認主題

運行命令:

USE_MOCK=true DEV_MODE=true HARDWARE_MOCK=true MOCK_VIDEO_TYPE=GEOMUX MOCK_VIDEO_HARDWARE=true configfile='/tmp/rovconfig.json' pluginsDownloadDirectory='/tmp/plugins' env plugins__ui-manager__selectedUI='classic-ui'  node src/cockpit.js

2. 調試 node 進程

有很多工具開發和調試,在我們提供的 ROV 鏡像中包含了 Cloud9 IDE。在本機開發時選擇工具的方式如下:

(1) 使用 node inspector

NPM 包允許你通過命令行開啓一個網絡服務器,命令行允許使用基於瀏覽器(Chrome, 火狐等)的網絡套件調試 node 進程。

安裝命令如下:

npm install -g node-inspector

To start node inspector:
啓動 node inspector:

node-inspector --web-port 3080

我們需要確定一個網絡端口選項,因爲對於瀏覽器,node-inspector 默認監聽端口 8080。
然後附帶上 debug 選項,啓動 cockpit 的 node 進程(或者如果你想令你的進程暫停知道你連接到你的調試會話,就附帶上選項–debug-brk)。命令如下:

USE_MOCK=true DEV_MODE=true configfile='/tmp/rovconfig.json' pluginsDownloadDirectory='/tmp/plugins' node src/cockpit.js --debug

現在你應該可以打開瀏覽器窗口,進入http://localhost:3080,並獲取一個調試會話。然後打開另一個瀏覽器窗口進入http://localhost:8080,啓動與 cockpit 的互動。

(2) 與 forever 共同使用 node inspector

你可以安裝你的調試會話,這樣當你的代碼改變時,系統將在背景中神奇且近於立即的重啓並重新加載 cockpit。
你需要安裝 forever,指令如下:

npm install -g forever

然後改變啓動 cockpit 的命令行,令 forever 程序加載 node inspector,指令如下:

USE_MOCK=true DEV_MODE=true HARDWARE_MOCK=true configfile='/tmp/rovconfig.json' pluginsDownloadDirectory='/tmp/plugins' forever -w -c 'node --debug' src/cockpit.js

(3) 使用 Visual Studio Code (VSC)

Visual Studio Code 是十分正式的跨平臺 IDE,它可以用來寫或調試不同種類的語言,主要是Node.JS。針對調試,cockpit 項目在模擬模式下包含了一系列默認配置文件。
帶 VSC 的調試步驟如下:

  1. 在你的平臺下安裝 Visual Studio Code;
  2. 在 VSC 中打開 openrov-cockpit 項目文件夾;
  3. 按下 F5 開始調試;
  4. 通常狀況下,cockpit 軟件現在可以訪問http://localhost:8080
  5. 使用 VSC 設置斷點,逐步調試代碼,檢查變量,以及其他操作。具體細節見 VSC 文檔。

此外,有一些插件允許同一時間在 VSC 與瀏覽器中同時調試,我們將在以後提供具體說明。

四、其他開發者任務

1. 擴充升級 node 依賴項

https://docs.npmjs.com/cli/update

ncu --updateAll

2. NPM shrinkwrap 所有包

當爲下一 release 準備進行 repo 操作,防止依賴項移動時,執行如下命令:

npm run shrinkwrap

在升級了新依賴項後,shrinkwrap 文件將自動重新生成。在用這些文件檢查源代碼之前要運行:

npm run prepshinkwrap

這將從 shrinkwrap 中移除 “OptionalDepenencies” 而不重新生成依賴項。

發佈了60 篇原創文章 · 獲贊 259 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章