嗨,大家好!我是Neo
最近幾年人工智慧(AI)可以說如火如荼。但不同於大疆的無人機或者各種VR設備,AI設備本身由於兼具了軟硬體的要求,門檻其實還是挺高的。
比如之前刷屏的波士頓動力的後空翻機器人Atlas,無論是機械結構,還是運動平衡算法,都是普通玩家沒法企及的。別的不說,數百甚至數千萬美元的研發投入,就讓大家只能看看而已了。
同時對於極客和硬體玩家來說,面對茫茫多的新概念,比如Raspberry Pi啦,Arduino啦,似乎都是非常火的產品二次開發社區。那麼到底該如何選擇呢,Neo我最近剛好在做一些個人項目,把周邊朋友手頭的這類設備都搜刮過來做了個全面解讀,才有了此文。希望感興趣的值友看完這篇文章,能對自己該選擇怎樣的產品能有一個比較明晰的概念。
一. 樹莓派 Raspberry Pi
啥是樹莓派?樹莓派是將電腦集成到了一塊電路板上的微型電腦。
可接顯示器、滑鼠、鍵盤等外設;基於linux的系統;是一臺功能完整的迷你電腦;存儲通過micro-SD卡來提供;內置乙太網接口可直接聯網 (Arduino也可以訪問網絡,但那需要一些額外的部件)。
對於偏編程開發的技術人員來說,樹莓派是一個非常低成本的開發平臺。同時,它的編程環境是標準的Linux編程環境,對於有經驗的程式設計師來說上手非常容易。
但這也就導致對於沒有相關經驗的人來說,樹莓派的軟體編程門檻有點高。並且如果想做運動實例的話,配置過程比較複雜,還需要外接驅動板,成本也就上去了。
二. Arduino
啥是Arduino?Arduino是一個完全開源,可以二次開發用於商業運營的開發平臺。
核心:AVR單片機
本質:單片機應用開發板
Arduino有簡單的函數,還有許多應用庫,這樣就不用直接去操作寄存器了,使得沒有很好的單片機基礎的人員也可以使用Arduino做出自己想要的東西。另外還有簡潔的集成開發環境(IDE)。
作為核心的Arduino開發板有多個版本,比如最常見的Arduino UNO板。此外,Arduino擁有自帶的軟體開發系統。目前非常的火的智能機械臂就是利用Arduino開發出的非常熱門的品類。
然而Arduino的開發成本其實不低,要求玩家必須有豐富的軟硬體知識和不錯的動手能力。而對於這樣的高階玩家來說,Arduino晶片本身的性能又顯得有些孱弱。
所以目前Arduino更多的還是作為一些高校學生的畢業設計,或者個人/小團隊練手的選擇。如果要做嚴肅的機器人/AI項目開發,Arduino的算力/複雜度比,還是稍微低了點。也就是說,玩家實力達到創客級別之後,Arduino平臺本身的硬體性能瓶頸,會明顯限制創客的想像力了。
三. 全地形可編程機器人HEXA
看到這裡可能有值友會說:聊了半天啥情況?
波士頓動力那種牛逼的我們買不起;
樹莓派那種偏軟體的不僅上手門檻很高,即便開發出應用,也仍屬於是一個PC設備,還稱不上是機器人;
而Arduino這種偏硬體的對於開發者來說,如果不太明白機械結構設計不會自己搭控制系統,那麼可玩性也非常低。
所以啥也幹不了?
好在,有需求就會有廠商來努力填補這個空缺。
Vincross最近新出的一款可編程全地形機器人HEXA,似乎就是一個不錯的嘗試。
我最早注意到這個產品,其實也是看什麼值得買的一篇眾測報告。
前不久還在《Wired》雜誌的年度產品「Gear of the Year」裡看到HEXA佔據了非常大的篇幅:
雖然沒有細看,但留下了印象。就是覺得這個產品蠻酷的,好像以前沒見過。
沒想到身邊的Geek小夥伴居然已經直接在KS上眾籌了一臺,趕快第一時間拿過來玩玩。首先HEXA本身的造型比較讓人印象深刻,把它放在辦公桌上可以達到超過100%的回頭率,不少同事甚至回頭了不下三次。紛紛表示,這個是什麼東西?能不能演示一下?
(直接導致我啥也沒幹就玩沒電了)
首先從外形來看,六足(Hexapod Robot)的結構會比傳統的輪式、或者履帶式結構更適合各種越野環境。美國NASA目前正在研製的登月機器人ATHLETE其實就是源於六足機器人的造型,從而可以更好的適應月球複雜的地表環境:
在一些地面比較不平整的環境中,足型機器人先天就會比輪式機器人擁有更強的通過能力。
對於一些溝壑,足型機器人也可以有更強的環境適應能力。而對於六足機器人來說,只要保證三足不離地,就可以非常穩定,而如果增加到八足或者更多又會造成對軟硬體資源要求增加,效果卻不明顯。所以其實六足是最具性價比的一個選擇。
而HEXA則將六足機器人的優勢進一步優化,從步態上來說,有跨步、正常、探洞三種步態,再加上它可以360°無限旋轉的頭部(後面有實例演示),使得HEXA在行動能力上更加靈活便捷。
我想HEXA的團隊在設計這款產品的時候,主要也是考量了如何兼具性能和成本的平衡,從而最大化的實現產品力。
聊完了六足結構,回到產品本身。HEXA在傳感器配置上也比較豐富,頭部除了高清攝像頭(有夜視功能)之外,還有測距傳感器和紅外發射器,可以比較充分的感知周圍世界。這也給後續我們編程實現各種複雜功能提供了底層支撐。
如果覺得官方自帶的傳感器不夠滿足創客們的開發腦洞,HEXA也提供了豐富的硬體開發接口(I²C,ADC,GPIO,USB,音頻接口等),可以擴展更多外設來DIY一些更複雜的功能。
這種科技感+神秘風的六足機器人,對於小朋友的吸引力實在是太大了。同事的兒子小C不過是來叫爸爸一起吃飯,直接就表示吃飯不急,得先玩玩這個高科技傢伙。
所以我乾脆說,那就由小C你作為我們的測試員,來評測一下這個機器人吧!
小C的毫不示弱,在我幫忙連接好之後,就用「Explore」這個機器人應用(官方稱為Skill)給小C用於「探險」。
作為一個沒有任何相關經驗的5歲孩子,小C直接上手,就可以通過觸控螢幕控制,玩出各種豐富的步伐和身體姿態:
而長時間不操作的話,HEXA也會自動「臥倒」進入休息模式。
所以從易用性的角度來說,HEXA確實做得不錯,沒有任何基礎的小朋友,也可以輕鬆上手。
不過,HEXA可不僅僅只是一個讓小朋友玩的機器人玩具產品。定位於可編程的它,更重要的給想研究機器人科學的創客們,提供一個機器人學習和開發的平臺。
對於初級的開發者,首先可以使用HEXA Simulater來進行入門學習。
在Simulator中,可以通過可視化的3D模擬器,讓開發者不用編寫代碼就可以直觀地進行動作設計。設計好的動作可以直接寫入HEXA的硬體中,輕鬆實現想要的功能。
而且除了預設的動作,我們也可以簡單地通過設置創造更多動作。
當然,對於有編程基礎的創客來說,HEXA也能夠滿足他們的機器人開發需求。HEXA搭載的是基於Linux內核定製優化的MIND OS作業系統。這個機器人作業系統其實類似智慧型手機裡的iOS或者Android。創客可以通過這個系統,使用GO語言,進行更為深度的開發(後面我會介紹一個實例)。
另外,在開發的便捷性上,Vincross不僅在官網提供了完整的開發文檔和教程,也同時在Github這樣的開源平臺上也進行了分享,方便了創客們的開發使用。
在完成相應的開發之後,創客可以將動作封裝成機器人應用,也就是我上面提到的Skill。值得一提的是,HEXA提供了專門的Skill Store,類似於App Store,開發者不僅可以將自己創建的Skill上傳到Skill Store上進行分享和售賣,其他的HEXA玩家也可以自行前往下載裡面的應用,增加HEXA的功能。
也就是說,HEXA並不是提供單純的一個機器人硬體,而是所謂的一個完整的Package:硬體(HEXA)和軟體(MINDOS)一同構建成一個完整的機器人開發生態,甚至一種機器人文化。作為一款新產品,這個完成度的確讓我有些意外。
不過可能光這樣羅列有些過於抽象,我們還是來看個實例吧~
實例機器人應用:鬥牛(Bullfight)
比如這裡我們以鬥牛「Bullfight」,來說明一下編寫過程。
這個Skill是由一位海外的Reddit用戶編寫的。具體來說主要就是分三步:頭部運動,捕捉紅色信號,Go Go Go!!!
而這位用戶也把完整的設計思路和原始碼開源了出來,方便大家取用。具體來說,這個skill需要教會機器人的主要是2點:
1. 啟動視頻捕捉系統
2. 找到紅色,然後啟動運動系統走向紅色目標
最終實現分為三步:
第一步:頭部轉動
具體的代碼,其實就是修改「hexabody」這個package裡面的頭部轉動參數:角度和時間。角度指的是接下來這個動作需要頭部轉動多少角度,而時間則代表了轉動速度。具體代碼如下:
func (skill *ScanRed) searchRed() {
for skill.status {
if skill.rotate {
direction :=hexabody.Direction()
direction +=30
hexabody.MoveHead(direction, 200)
skill.checkRedLightDistrict()
time.Sleep(time.Millisecond * 100)
}
time.Sleep(time.Millisecond * 200)
}
}
比如這裡我想讓HEXA轉頭的速度快一點或者慢一點,只有調整對應的參數就可以了。
第二步:偵測紅色
這一步,首先是使用SnapshotRGBA() 來抓取HEXA捕捉到的視頻圖像信息。然後,通過所以中心點範圍內的RGB值,來判斷是否超過了閾值(即紅色或者非紅色)。這裡的RGB算法其實也是多種多樣,不過要平衡準確性和速度,其實有時候不得不把備選的各個算法都嘗試一遍。這部分的代碼如下:
func isRed() bool {
thresHold := 200
subRed := 0
srcImg := media.SnapshotRGBA()
srcBounds := srcImg.Bounds()
m := image.NewRGBA(srcBounds)
ptX := (srcBounds.Size().X * 1) / 10
ptY := (srcBounds.Size().Y * 1) / 10
draw.Draw(m, srcImg.Bounds(), srcImg,image.Pt(ptX, ptY), draw.Src)
subBounds :=image.Rect(srcBounds.Min.X/2, srcBounds.Min.Y/2, srcBounds.Max.X/2,srcBounds.Max.Y/2)
newImg := m.SubImage(subBounds)
width := newImg.Bounds().Size().X
height := newImg.Bounds().Size().Y
for w := 0; w < width; w++ {
for h := 0; h < height;h++ {
r, g, b, _:= newImg.At(w, h).RGBA()
r = r>> 8
g = g>> 8
b = b>> 8
c := (int(r)- int(g)) + (int(r) - int(b))
if c >thresHold {
subRed++
}
}
}
log.Info.Printf("%d %d",subRed, width*height)
if subRed > (width*height)/200 {
return true
}
return false
}
當然了,掌握算法以後,也可以隨意更換顏色對象。
而第三步就是衝向紅色目標了
這一步其實就是直接調用WalkContinuously()命令。具體代碼如下:
func (skill *ScanRed) goToRed() {
for skill.status {
if skill.run{
log.Info.Printf("RUN...")
hexabody.Walk(hexabody.Direction(), 100)
}
else {
time.Sleep(time.Millisecond * 200)
}
}
}
最終的實現效果,還是不錯的:
所以,HEXA可以說是提供了一個完整的開發環境和比較嚴謹的進階之路:
1、酷炫的外形和自帶skill,比如Explore,可以吸引極客玩家對機器人的興趣,也讓任何零基礎的玩家操控HEXA來一段越野探險。
2、簡單易用的HEXA Simulator,可以讓不太懂編程的用戶,通過所見即所得的方式編寫和組合各種HEXA的新動作,實現相關的功能。對於培養青少年的編程、機械製造興趣,也是非常好的。
3、完整的HEXA Mind SDK,可以讓對機器人和AI感興趣的高校學生、從業人員或者Geek、創客們輕鬆發揮自己的想像力。創客們不需要精通機械設計,也不需要精通軟體編程和開發,就可以直接拿HEXA進行高級語言的動作程序開發,非常方便和高效。
HEXA不僅僅是降低了機器人學習和開發的門檻,也提供了一條學習曲線並不算陡峭的機器人入門之路。
當然,其實也不難看到HEXA的目標不止於此。HEXA結合MIND OS構建的機器人開發生態,讓用戶完全有能力超越目前的功能演示範疇,開發出一些有強大應用價值的功能(比如:極端狹窄環境的探險、搶險救援中提供一些協助、作為機器人寵物承擔家庭陪伴的功能等等)。
可以想像,當這些功能真正應用到實際生活中,機器人就不在只是一個生活在科幻電影中摸不著的,或者只是玩具一般的產物,而是像如今的智慧型手機一樣普及生活助手。
從機器人行業的角度來看,HEXA的價值更在於讓創客們對於機器人的想像有途徑可以實現,從而推動整個機器人產業的發展。當然了,光靠這一款產品顯然是不夠的,但顯然我們看到了好的跡象和趨勢。
四. 尾巴
回到最初的話題,現在國際化背景之下,我們接觸最新最高科技技術的方式的確是越來越多了。並且各種開源文化的影響之下,和世界一起開發新產品早就不是一句空話而已經成為了現實。
如果想要做一些個人創客項目,或者只是單純的做一些好玩的作品,樹莓派、Arduino或者HEXA這樣的成品,其實都提供的相當不錯的基礎。至於如何選擇,更多的可能還是看實際的需求來決定。
如果是做一些數據監控和處理任務,比如下載機、空氣監控、PM 2.5監控,樹莓派應該是最佳選擇,價格不貴幾百元搞定,實例也多;
如果是做一些運動控制的小作品,比如機械臂、微型3D印表機、智能小車,Arduino是更合適的選擇,並且拖各種改版的開源產品庫的福,在某寶上可以直接買到原始圖紙。一般一個項目的成本大約在1000-3000元;
如果想不只是學習DIY產品的過程,而是直接學習機器人從初級到高級的編程,對複雜環境、豐富視頻信號的捕捉、處理和進一步動作,從而實現真正的機器人應用,並且通過類Skill的形式在全球創客的智慧型手機上傳播,目前HEXA也可以說是這個品類下最佳的選擇。甚至,是唯一的選擇。感興趣的朋友可以去Vincross的官網,以及京東和淘寶看看。
總而言之,我們可能正處於創客最好的時代。
If you wanna DIY something, the best time is NOW!
隨著京東眾籌的HEXA的量產進入正軌,距離人類導師收到HEXA的時間也越來越臨近。在此給大家預告一下,在京東眾籌的HEXA發貨後,我們將舉辦#ChallengeHEXA#的活動。
屆時,只要你開發的Skill能夠通過審核上線到我們Skill Store,即有機會獲得現金獎勵。在此之前,大家可以開始熟悉我們的開發文檔,期待未來的Skill有大家的腦洞和智慧。
HEXA正在預售中,點擊連結(https://www.vincross.com/cn/hexa),即刻下單。