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” 而不重新生成依赖项。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏静晴轩

Npm vs Yarn 之备忘大全

有则笑话,如此讲到:“老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成。我嘴一抽,来了句:...

2539
来自专栏LEo的网络日志

coding感想(三)

3528
来自专栏FreeBuf

如何逆向破解HawkEye keylogger键盘记录器,进入攻击者邮箱?

这一切要从一次恶意邮件攻击活动开始。下图为我们最近监测到的一个以恶意文件为发送附件的邮件攻击,请注意邮件信息中的英语写作水平是多么差劲,其实,这也是恶意邮件的一...

1868
来自专栏玄魂工作室

Hacker基础之工具篇 Automater

用白话来说,就是相当于哈勃那种的东东,你给个网址,它会去这些网站上找这个网址是否是安全的,是否有什么不良历史记录这个意思

842
来自专栏杨建荣的学习笔记

shell脚本心得(r2笔记58天)

零零星星的接触到写一些shell也有一些日子了,发现自己已经犯了不少的错误,自我总结下。 选择合适的shell shell本身有很多种,大体有如下的几种。 /...

2708
来自专栏草根博客站长有话说

WordPress 恶意代码的分析和排查方法

自【网站安全的「灯下黑」隐患:账号安全】一文发表后,明月收到了很多站长们有关 WordPress 站点安全的问题咨询,明月总结分析了一下几乎 90%以上都是“恶...

755
来自专栏FreeBuf

Python渗透测试工具都有哪些?

如果你热爱漏洞研究、逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言。它包含大量实用的库和工具,本文会列举其中部分精华。 网络 Scapy, ...

2678
来自专栏程序员宝库

Python库大全(涵盖了Python应用的方方面面),建议收藏留用!

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。

1094
来自专栏FreeBuf

Oracle人力资源管理系统PeopleSoft未授权远程代码执行漏洞解析

几个月前,我有幸参与几个Oracle PeopleSoft建设项目的安全审计,审计对象主要为PeopleSoft系列的人力资源管理系统(HRMS)和开发工具包(...

2955
来自专栏开心的学习之路

Fedora27搭建GPU版TensorFlow

主机:华硕(ASUS)G11飞行堡垒 显卡:GeForce 1070 原操作系统为win10,准备安装Fedora 27,从零开始搭建GPU版TensorF...

2847

扫码关注云+社区