HEXA娱乐开发日志技术点000——整理&第一个Skill

HEXA开发日志目录

上一篇 HEXA娱乐开发日志调研002(调研完毕)——弹幕获取方法修正


整理

本项目的基本调研结束,把技术点与具体需求整理如下。

需求与技术依赖关系

需求与技术依赖关系本阶段的目的是验证调研阶段的结论,并对每个技术点进行demo,本阶段结束后,再进一步进行详细的设计。针对上图,demo的顺序从Mind SDK开始,顺着图中箭头依次进行。

Mind SDK

要能够实现简单HEXA应用部署

Golang

要达到移植弹幕姬的编程水平

移植弹幕姬

要能获取弹幕

C/C++动态库使用与OpenCV

运行官方的OpenCV demo

RTMPDUMP

要能对有效地址进行推流,可以先不带stream key

标题解释

Skill实际上就是官方对于应用的称呼,一个应用就称作一个Skill。

简单说一下Skill的原理,我理解这个HEXA机器人实际上是以B/S模式工作的,即控制端(手机或电脑)使用浏览器,机器人作为服务器,我们通过网页元素与之交互。后面可以看到,一个Skill的目录结构中的文件主要是一个网页文件和一个go源码文件,前者是服务器发给控制端的网页,让我们通过浏览器与机器人交互,后者决定机器人的控制逻辑。

提要

这次研究的是Mind SDK,它是下图中这个机器人相关技术点中的起点。这个技术点demo的目的就是确定我可以将应用部署到机器人上,并正常使用,这次用的是官方的例子MovelegsSkill,运行后腿会动,就算demo成功了。其实所有过程按照官方文档里做就行,我这里还要废话一下,有2个原因:

1.官方文档是英文的,我这里用中文;

2.官方也是开始阶段,有些地方说明还是有些坑的,我写出来提醒后来者。

喜欢看视频的,可以看官方视频(中文的哦):智能机器人开发入门:可编程全地形机器人HEXA技能开发实战教程

成果展示

下图就是他们的IDE,叫Mind Studio,当然这IDE不是必须的,实际上目前官网文档没有提到Mind Studio,而是使用命令行方式,用不用IDE其实没关系,IDE软件只是对命令行包装了一下,用着简单一点。

请注意一下最下方的log,有successful, Connected这种字样,就说明这个应用已经部署到机器人上面了,下一个问题就是如何运行这个应用了。

Mind Studio

按照上面log指示,在浏览器中输入红框里那个网址,就可以看到一个仅有2个按钮的网页。这时候熟悉Web前端的同学应该能容易的看出,上面IDE图中就是网页的代码,和下面的网页图是对得上的。即使不懂网页代码,我们也可以根据网页里代码字面猜一下:

"start"...onclick()...senddata...data:"start"

"stop"...onclick()...senddata...data:"stop"

不难猜到,两个按钮意思是,在点击时会发送数据。我们在电脑上点击按钮,理所当然是发送给机器人咯,发送的data就是start和stop两种命令。

上位机网页

上面这个网页成功打开后,机器人就会做出对应的行为。当然,机器人做了啥不重要,我也没看代码,不能确认它做的对不对,重点在于它确实能对我点击按钮这件事有响应,说明这次程序部署是有效的。

demo步骤

步骤目前有2种,一种是按照官方文档做,另一种是按照我踩过的坑做。我的环境是Mac OS。

一、官方步骤

官方步骤我没有完整验证,我的步骤主要使用的IDE,比较简单,希望用IDE的同学可以直接到后面看我的步骤。

1.安装Docker

Docker相关的东西我也不懂,Mind SDK依赖它,大概就是能像java虚拟机一样抹平平台差异的一种东西,反正按照Docker官网装就行了,Mac平台也就是下载个img文件,装完它运行了就行了。

2.安装Mind SDK

这步很简单,在控制台中输入下面两句,即下载SDK并增加SDK主程序的执行权限。

$ sudo curl -o /usr/local/bin/mind https://cdn-static.vincross.com/downloads/mind/latest/mind-`uname -s`-`uname -m`

$ sudo chmod +x /usr/local/bin/mind

之后可以在控制台里敲mind看看,确认安装成功,成功啥样子就看看官方文档

3.更新依赖库

这一步看不出在更新什么,官网说是更新Docker容器,以及一些需要的库等,总之是不更不行,因为后面不管干啥,都要先更新,这一步是跳不过的。

$ mind upgrade

要注意的是,这一步很慢,可能要几到几十分钟,控制台会显示正在下载几项内容,已经下了多少。如果网速很慢有可能会觉得它卡死了,不过我也不知道有什么别的办法,还是得等。

4.登陆

这一步我不知道有什么用,先照做就是了。

$ mind login <邮箱> <密码>

5.创建Skill

此步骤的官方说明

从这一步开始,创建自己的Skill,比如创建一个helloworld。

$ mind init helloworld

$ cd helloworld

init就是创建一个应用,实际上就是构造了初始工程结构,可以看一下前面图中IDE左侧的红框,或者官网的说明,就3个文件,最重要的就是网页文件和go源码文件,也就是本文开头说的一个用来交互,一个是机器人的控制逻辑。

下面2个命令很好理解,就是编译和打包,当你把代码撸完,就可以进行开始下面的动作了。

$ mind build  # Will build an ARM binary into robot/skill

$ mind pack    # Will pack the Skill as an mpk file.

6.部署

现在,上位机的工作基本完成了,下面就是真正的部署了。

$ mind scan

10.0.0.51 HEXA

10.0.0.76 HEXA4XMZ

不难看出,scan就是找出局域网内的所有HEXA机器人,官方这个例子扫出了2台,他们的ip和名字都不同。

$ mind set-default-robot HEXA4XMZ

$ mind get-default-robot # Just to be sure

HEXA4XMZ

$ mind run

set-default-robot顾名思义,就是设置默认的机器人,我们得确定一会儿玩的是哪一台机器人,get-default-robot就是问一下目前要被玩的机器人是哪台。

run执行后,这个Skill机会被部署到机器人里面,并开始运行了,顺利的话,控制台里也能看到像成果展示里IDE一样的log,也会有一个地址,浏览器打开它就可以使用应用了。

二、我的步骤

我是趟过了一些小坑,就因为我先打开的是官方的IDE网页,而不是官方文档网页。我以为IDE一下载,跑一下官方例子,应该就是点几个按钮的事,结果被坑住几下,后来看到官方文档页面,照做几步才顺利进行,下面就是我的步骤和坑点。

Mind Studio

1.安装Docker和IDE安装与登陆

安装Docker同官方步骤,IDE也是无脑安装,然后点界面上右上角那个地方登陆自己的账号,点击左上方的device list选好默认机器人就可以了。安装IDE这一动作实际上完成了上面官方步骤里的2、4步。

如果没有安装Docker,也能打开IDE,只是基本不能用,很多关键操作会提醒你检查Docker状态。也就是说,如果你像我一样先打开了官方IDE那个页面,装好了IDE就连接机器人时,如果对Docker一无所知,立刻得懵逼,这就是第一个坑

2.更新依赖库

这一步同官方步骤3,也是用upgrade命令。

但是要注意,IDE安装的Mind SDK与官方步骤中安装的位置不同,在Mac平台,我找到的SDK的主程序在

/Applications/MIND Studio.app/Contents/Resources/mind-Darwin-x86_64

如果觉得我还没有讲清楚的话就直接敲下面的命令,如果遇到permission问题就在命令最前面加上sudo

$ cd /usr/local/bin

$ ln -s <SDK主程序路径> mind

3.build and run Skill

这就是第二个坑,因为如果傻天真的以为IDE可以傻瓜式操作,就会在点界面上那个小红框里的运行按钮时卡住,没有任何反馈,就在那卡着。就像命运经常无缘无故地改变或停滞,没有谁有义务告诉你为什么。

入这个坑就是因为没有做步骤2,只要完成了步骤2,这一步就很顺利。

从结果上看,我觉得如果有耐心,卡住的时候,只要一直等待,也可能完成,因为我猜那个时间实际上就是在更新。

总结

1.机器人工作模式为B/S,我们是B,它是S;

2.我的demo步骤比较简单,大部分工作由IDE完成,自己只要安装Docker和更新依赖库即可。


下一篇 HEXA娱乐开发日志技术点001——上位机成功获取弹幕

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,808评论 25 707
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,607评论 1 180
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,514评论 15 147
  • 打卡同级生和白夜行 一下飞机就看见爸爸妈妈 去吃螺蛳粉碰到一个阿姨 还送了草莓给我吃 粉店的老板娘都还记得我 很久...
    抱抱兔子写写文_阅读 117评论 0 0
  • 第二章阐明了一个观点:没有什么比信息更加强大,尤其是当信息这种力量被滥用的时候。第二章和第一章有着很大的联系。在第...
    kateyin阅读 913评论 0 0