美文网首页HEXA机器人嵌入式 Linux C ARM 我爱编程
HEXA娱乐开发日志技术点000——整理&第一个Skil

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

作者: 阿棍儿_Leon | 来源:发表于2018-03-18 18:23 被阅读24次

    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——上位机成功获取弹幕

    相关文章

      网友评论

        本文标题:HEXA娱乐开发日志技术点000——整理&第一个Skil

        本文链接:https://www.haomeiwen.com/subject/xxmeqftx.html