開發了一個純粹爲了比賽的機器人功能

原本在開始工作之前,我想得是開發一個機器人應用(Skill),可以讓HEXA能陪我外出散步,無論我想慢走或者是跑步,它都能跟上我的步伐。而當我停下的時候,HEXA也會停下來,它能根據我跑步的顛簸來調整他移動的快慢。

  但沒想到我做出的功能展示給我的同事後,他們覺得這個功能可以用於HEXA之間的賽跑——沒有人類什麼事了!可惜,我以及我們公司只有一臺HEXA,所以爲了驗證這個skill的實用性,我會盡快把它上傳到Skill Store。希望有其他人來挑戰我。

  好了,迴歸正題,來說說我怎麼開發的。

  首先我按照官網的說明運行起來了“hello world”。通過這個skill我瞭解到skill的內部結構:兩個文件夾(remote/robot),還有一個json文件(manifest.json)。我對golang和js都不是很熟,但是很快就找到了MIND SDK的hexabody庫裏面的WalkContinuously。

  “`

  func WalkContinuously(direction, speed float64) error

  “`

  我研究了一下它,發現真正掌握它還得邊嘗試邊摸索,後邊會說到具體問題。

  我google到了js的一個庫(library)(deviceMotion),它可以用來獲取到手機的搖擺速度(shake speed)。我把其中相關的代碼搬到了remote文件夾下面的html裏面,並且在裏面添加了一個簡單的html page(一個開始按鈕,一個定時器,一個label用來展示搖晃手機的速度)。接下來使用MIND SDK裏面的(sendData/OnRecvString)方法實現了js和golang的交互,傳遞一個speed value給WalkContinuously function,speed value的大小會控制hexa行走速度的快慢。

  在這個過程中我遇到了一些困難,比如說官網並沒有給WalkContinuously/sendData/sendJSON提供參數(parameter)說明和示例,導致我無從得知機器人的最大速度值和其他兩個方法的使用場景。還有在執行mind build命令的時候,無法正常執行,我是通過重啓docker才得以恢復正常。

  不過最終結果還挺有意思的,你只需要甩甩手機,HEXA就會開始向前爬。你甩得越迅速,HEXA爬得越快。可以想像如果我有兩臺HEXA,我會和同事競賽,看誰控制的HEXA會跑贏。而我之前期待的帶着HEXA去森林散步則遇到了困難,因爲除非我選了一條沒有“陷阱”的直線在走,否則HEXA自己會選擇一條它的路。我得不時回頭看着它摔進樹坑,翻下路基,我變成了機器人保姆(自願的)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章