上一篇 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这种字样,就说明这个应用已经部署到机器人上面了,下一个问题就是如何运行这个应用了。
按照上面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一下载,跑一下官方例子,应该就是点几个按钮的事,结果被坑住几下,后来看到官方文档页面,照做几步才顺利进行,下面就是我的步骤和坑点。
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和更新依赖库即可。