嗨,你們好!我是Neo。最近幾年人工智能(AI)能夠說是個如火如荼的新銳概念。但不一樣於大疆的無人機或者各類VR設備,AI設備自己因爲兼具了軟硬件的要求,門檻其實仍是挺高的。linux
好比對於以前刷屏的波士頓動力的後空翻機器人Atlas,不管是機械結構,仍是運動平衡算法,都是普通玩家無法企及的。別的不說,數百甚至數千萬美圓的研發投入,就讓你們只能看看而已了。程序員
同時對於極客和硬件玩家來講,面對茫茫多的新概念,好比Raspberry Pi啦,Arduino啦,彷佛都是很是火的產品二次開發社區。那麼到底該如何選擇呢,Neo我最近恰好在作一些我的項目,把周邊朋友手頭的這類設備都搜刮過來作了個全面解讀,纔有了此文。但願感興趣的值友看完這篇文章,能對本身該選擇怎樣的產品能有一個比較明晰的概念。算法
啥是樹莓派?編程
樹莓派是將電腦集成到了一塊電路板上的微型電腦。網絡
可接顯示器鼠標鍵盤等外設;基於linux的系統;是一臺功能完整的迷你電腦;存儲經過micro-SD卡來提供;內置以太網接口可直接聯網 (Arduino也能夠訪問網絡,但那須要一些額外的部件)。函數
也就是說,樹莓派其實就是一臺小電腦,而且已經兼容了完整的軟硬件系統,能夠直接進行開發。性能
這樣對於偏編程開發的技術人員來講,樹莓派是一個很是低成本而又可靠的開發平臺。學習
而且編程環境就是標準的Linux編程環境,對於有經驗的程序員來講上手很是容易。但這也就致使對於沒有相關經驗的人來講,樹莓派的軟件編程門檻有點高。而且若是想作運動實例的話,配置過程比較複雜,還須要外接驅動板,成本也就上去了。測試
啥是Arduino?優化
Arduino是一個徹底開源,能夠二次開發用於商業運營的開發平臺。
核心:AVR單片機 本質:單片機應用開發板
優點:簡單的函數,還有許多應用庫,這樣就不用直接去操做寄存器了,使得沒有很好的單片機基礎的人員也可使用Arduino作出本身想要的東西。
簡潔的IDE(集成開發環境):也就是寫代碼,編譯,調試,下載的上位機軟件。
做爲核心的Arduino開發板有多個版本,好比最多見的Arduino UNO板。此外,Arduino擁有自帶的軟件開發系統。目前很是的火的智能機械臂就是利用Arduino開發出的很是熱門的品類。
然而Arduino的開發成本其實不低,要求玩家必須有豐富的軟硬件知識和不錯的動手能力。而對於這樣的高階玩家來講,Arduino芯片自己的性能又顯得有些孱弱。
因此目前Arduino更多的仍是做爲一些高校學生的畢業設計,或者我的/小團隊練手的選擇。若是要作嚴肅的機器人/AI項目開發,Arduino的算力/複雜度比,仍是稍微低了點。也就是說,玩家實力達到創客級別以後,Arduino平臺自己的硬件性能瓶頸,會明顯限制創客的想象力了。
看到這裏可能有值友會說:聊了半天啥狀況?
波士頓動力那種牛逼的咱們買不起; 樹莓派那種偏軟件的不只上手門檻很高,即使開發出應用,也仍屬因而一個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點:
最終實現分爲三步:
第一步:頭部轉動
具體的代碼,其實就是修改"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能夠說是提供了一個完整的開發環境和比較嚴謹的進階之路:
一、酷炫的外形和自帶skill,好比Explore,能夠吸引極客玩家對機器人的興趣,也讓任何零基礎的玩家操控HEXA來一段越野探險。 二、簡單易用的HEXA Simulator,可讓不太懂編程的用戶,經過所見即所得的方式編寫和組合各類HEXA的新動做,實現相關的功能。對於培養青少年的編程、機械製造興趣,也是很是好的。 三、完整的HEXA Mind SDK,可讓對機器人和AI感興趣的高校學生、從業人員或者Geek、創客們輕鬆發揮本身的想象力。創客們不須要精通機械設計,也不須要精通軟件編程和開發,就能夠直接拿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!
好了,此次對於機器人開發入門的介紹就到這裏,若有未盡之處,還請你們在評論區指出。 若是你們感興趣的話,後續我也會帶來更詳盡的項目開發實例介紹。 我是(微博:沈少Neo),咱們下次見!