上一篇 HEXA娛樂開發(fā)日志調(diào)研002(調(diào)研完畢)——彈幕獲取方法修正
整理
本項目的基本調(diào)研結(jié)束,把技術(shù)點與具體需求整理如下叁熔。
需求與技術(shù)依賴關(guān)系本階段的目的是驗證調(diào)研階段的結(jié)論矩桂,并對每個技術(shù)點進行demo沸移,本階段結(jié)束后,再進一步進行詳細的設(shè)計侄榴。針對上圖雹锣,demo的順序從Mind SDK開始,順著圖中箭頭依次進行癞蚕。
Mind SDK
要能夠?qū)崿F(xiàn)簡單HEXA應(yīng)用部署
Golang
要達到移植彈幕姬的編程水平
移植彈幕姬
要能獲取彈幕
C/C++動態(tài)庫使用與OpenCV
運行官方的OpenCV demo
RTMPDUMP
要能對有效地址進行推流蕊爵,可以先不帶stream key
標題解釋
Skill實際上就是官方對于應(yīng)用的稱呼,一個應(yīng)用就稱作一個Skill桦山。
簡單說一下Skill的原理攒射,我理解這個HEXA機器人實際上是以B/S模式工作的,即控制端(手機或電腦)使用瀏覽器恒水,機器人作為服務(wù)器会放,我們通過網(wǎng)頁元素與之交互。后面可以看到寇窑,一個Skill的目錄結(jié)構(gòu)中的文件主要是一個網(wǎng)頁文件和一個go源碼文件鸦概,前者是服務(wù)器發(fā)給控制端的網(wǎng)頁,讓我們通過瀏覽器與機器人交互甩骏,后者決定機器人的控制邏輯窗市。
提要
這次研究的是Mind SDK,它是下圖中這個機器人相關(guān)技術(shù)點中的起點饮笛。這個技術(shù)點demo的目的就是確定我可以將應(yīng)用部署到機器人上咨察,并正常使用,這次用的是官方的例子MovelegsSkill福青,運行后腿會動摄狱,就算demo成功了。其實所有過程按照官方文檔里做就行无午,我這里還要廢話一下媒役,有2個原因:
1.官方文檔是英文的,我這里用中文宪迟;
2.官方也是開始階段酣衷,有些地方說明還是有些坑的,我寫出來提醒后來者次泽。
喜歡看視頻的穿仪,可以看官方視頻(中文的哦):智能機器人開發(fā)入門:可編程全地形機器人HEXA技能開發(fā)實戰(zhàn)教程
成果展示
下圖就是他們的IDE席爽,叫Mind Studio,當然這IDE不是必須的啊片,實際上目前官網(wǎng)文檔沒有提到Mind Studio只锻,而是使用命令行方式,用不用IDE其實沒關(guān)系紫谷,IDE軟件只是對命令行包裝了一下齐饮,用著簡單一點。
請注意一下最下方的log碴里,有successful, Connected這種字樣沈矿,就說明這個應(yīng)用已經(jīng)部署到機器人上面了,下一個問題就是如何運行這個應(yīng)用了咬腋。
按照上面log指示,在瀏覽器中輸入紅框里那個網(wǎng)址睡互,就可以看到一個僅有2個按鈕的網(wǎng)頁根竿。這時候熟悉Web前端的同學(xué)應(yīng)該能容易的看出,上面IDE圖中就是網(wǎng)頁的代碼就珠,和下面的網(wǎng)頁圖是對得上的寇壳。即使不懂網(wǎng)頁代碼,我們也可以根據(jù)網(wǎng)頁里代碼字面猜一下:
"start"...onclick()...senddata...data:"start"
"stop"...onclick()...senddata...data:"stop"
不難猜到妻怎,兩個按鈕意思是壳炎,在點擊時會發(fā)送數(shù)據(jù)。我們在電腦上點擊按鈕逼侦,理所當然是發(fā)送給機器人咯匿辩,發(fā)送的data就是start和stop兩種命令。
上面這個網(wǎng)頁成功打開后榛丢,機器人就會做出對應(yīng)的行為铲球。當然,機器人做了啥不重要晰赞,我也沒看代碼稼病,不能確認它做的對不對,重點在于它確實能對我點擊按鈕這件事有響應(yīng)掖鱼,說明這次程序部署是有效的然走。
demo步驟
步驟目前有2種,一種是按照官方文檔做戏挡,另一種是按照我踩過的坑做芍瑞。我的環(huán)境是Mac OS。
一增拥、官方步驟
官方步驟我沒有完整驗證啄巧,我的步驟主要使用的IDE寻歧,比較簡單,希望用IDE的同學(xué)可以直接到后面看我的步驟秩仆。
1.安裝Docker
Docker相關(guān)的東西我也不懂码泛,Mind SDK依賴它,大概就是能像java虛擬機一樣抹平平臺差異的一種東西澄耍,反正按照Docker官網(wǎng)裝就行了噪珊,Mac平臺也就是下載個img文件,裝完它運行了就行了齐莲。
2.安裝Mind SDK
這步很簡單痢站,在控制臺中輸入下面兩句,即下載SDK并增加SDK主程序的執(zhí)行權(quán)限选酗。
$ 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.更新依賴庫
這一步看不出在更新什么芒填,官網(wǎng)說是更新Docker容器呜叫,以及一些需要的庫等,總之是不更不行殿衰,因為后面不管干啥朱庆,都要先更新,這一步是跳不過的闷祥。
$ mind upgrade
要注意的是娱颊,這一步很慢,可能要幾到幾十分鐘凯砍,控制臺會顯示正在下載幾項內(nèi)容箱硕,已經(jīng)下了多少。如果網(wǎng)速很慢有可能會覺得它卡死了果覆,不過我也不知道有什么別的辦法颅痊,還是得等。
4.登陸
這一步我不知道有什么用局待,先照做就是了斑响。
$ mind login <郵箱> <密碼>
5.創(chuàng)建Skill
從這一步開始,創(chuàng)建自己的Skill钳榨,比如創(chuàng)建一個helloworld舰罚。
$ mind init helloworld
$ cd helloworld
init就是創(chuàng)建一個應(yīng)用,實際上就是構(gòu)造了初始工程結(jié)構(gòu)薛耻,可以看一下前面圖中IDE左側(cè)的紅框营罢,或者官網(wǎng)的說明,就3個文件,最重要的就是網(wǎng)頁文件和go源碼文件饲漾,也就是本文開頭說的一個用來交互蝙搔,一個是機器人的控制邏輯。
下面2個命令很好理解考传,就是編譯和打包吃型,當你把代碼擼完,就可以進行開始下面的動作了僚楞。
$ mind build? # Will build an ARM binary into robot/skill
$ mind pack? ? # Will pack the Skill as an mpk file.
6.部署
現(xiàn)在勤晚,上位機的工作基本完成了,下面就是真正的部署了泉褐。
$ mind scan
10.0.0.51 HEXA
10.0.0.76 HEXA4XMZ
不難看出赐写,scan就是找出局域網(wǎng)內(nèi)的所有HEXA機器人,官方這個例子掃出了2臺膜赃,他們的ip和名字都不同挺邀。
$ mind set-default-robot HEXA4XMZ
$ mind get-default-robot # Just to be sure
HEXA4XMZ
$ mind run
set-default-robot顧名思義,就是設(shè)置默認的機器人财剖,我們得確定一會兒玩的是哪一臺機器人悠夯,get-default-robot就是問一下目前要被玩的機器人是哪臺。
run執(zhí)行后躺坟,這個Skill機會被部署到機器人里面,并開始運行了乳蓄,順利的話咪橙,控制臺里也能看到像成果展示里IDE一樣的log,也會有一個地址虚倒,瀏覽器打開它就可以使用應(yīng)用了美侦。
二、我的步驟
我是趟過了一些小坑魂奥,就因為我先打開的是官方的IDE網(wǎng)頁菠剩,而不是官方文檔網(wǎng)頁。我以為IDE一下載耻煤,跑一下官方例子具壮,應(yīng)該就是點幾個按鈕的事,結(jié)果被坑住幾下哈蝇,后來看到官方文檔頁面棺妓,照做幾步才順利進行,下面就是我的步驟和坑點炮赦。
1.安裝Docker和IDE安裝與登陸
安裝Docker同官方步驟怜跑,IDE也是無腦安裝,然后點界面上右上角那個地方登陸自己的賬號吠勘,點擊左上方的device list選好默認機器人就可以了性芬。安裝IDE這一動作實際上完成了上面官方步驟里的2峡眶、4步。
如果沒有安裝Docker植锉,也能打開IDE辫樱,只是基本不能用,很多關(guān)鍵操作會提醒你檢查Docker狀態(tài)汽煮。也就是說搏熄,如果你像我一樣先打開了官方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可以傻瓜式操作,就會在點界面上那個小紅框里的運行按鈕時卡住望众,沒有任何反饋匪补,就在那卡著。就像命運經(jīng)常無緣無故地改變或停滯烂翰,沒有誰有義務(wù)告訴你為什么夯缺。
入這個坑就是因為沒有做步驟2,只要完成了步驟2甘耿,這一步就很順利踊兜。
從結(jié)果上看,我覺得如果有耐心佳恬,卡住的時候捏境,只要一直等待,也可能完成殿怜,因為我猜那個時間實際上就是在更新典蝌。
總結(jié)
1.機器人工作模式為B/S,我們是B头谜,它是S;
2.我的demo步驟比較簡單骏掀,大部分工作由IDE完成,自己只要安裝Docker和更新依賴庫即可。