機器人成長之路——工具篇
作者:Top Liu
http://exbot.net
知乎問曰:為什麼說雞湯有毒?
神回復曰:因為沒給你勺子。
懷有機器人夢想是非常好的,但若是光給你談夢想,不告訴你方法,如同給你端上一碗雞湯,卻沒有勺子。有的童鞋會說:我直接抱著碗喝了,先干為敬!但實際上往往會因為姿勢不對,灑了一身。
受以下二者啟發:
1. YY碩的知乎文[機器人工程師之路——從大一到研究生,YY碩經驗談機器人工程師之路——從大一到研究生]啟發(我已經轉載至博客里);
2. 以及我和李博士最新翻譯的《機器人編程實戰》(主線是一個小白被困荒島,通過學習這本書從一無所知到能製作出完成任務的機器人的故事)。
是時候該把套路總結一下了!
搞好機器人,不外乎下面三個條件。
1. n夢想
2. n工具
3. n方法
楊帆兄在上一篇文已經介紹了我們的機器人夢想以及「星火計劃」的緣起,記得楊帆第一次和易科機器人小組成員討論還爭執地面紅耳赤。記得林博士半夜飛抵青島討論課程設計,然而他說的港式普通話我基本聽不懂啊,囧……然而,正式大家基於對機器人的共同追求和夢想,才克服了各種困難及分歧,堅持了下來。
社區里很多小夥伴從未見面,但大家一直能合作愉快,互相探討,共同進步。我們大家能走到一起來,以及你願意花時間來看這篇文章,無非是圍繞著「機器人」所產生的共同愛好、追求、以及夢想。
感謝各位,夢想有了,開始正題!
「工若善其事,必先利其器。」
自主機器人的開發的主要工作依然是編程。
學習編程,你首先得有個電腦。學習機器人,你首先得有個機器人,最起碼也得有個板子吧!
記得2000年我們學習編程那時,那時電腦還屬於奢侈品,上課時甚至需要用紙和筆寫程序。甚至還有的同學花了十元錢買了張紙,因為上面印有1:1的鍵盤,可以進行打字練習。
2001年,我們哥幾個一咬牙,張同學買來一台畢業學姐的二手電筒腦,李同學買來內存,楊同學加了硬碟,大家按照投資比例分配了上機時間,終於結束了「紙上談程序」的時代。
然而到了2003年,電腦行業飛速發展,合資的電腦就棄之不用了,因為已經實現了人手一台電腦了。
說起這個故事,對今天有什麼啟發呢?
1. n我相信未來2年機器人可能迅速普及,速度可能比我們想像的要快。
2. n我認為不要一個人玩機器人。最好加入一個機器人隊伍(戰隊更好),或是幾個同學組團DIY一個機器人,這樣的成長會更快,也更快樂。
在知乎文《機器人工程師之路》里已給出較為詳細的學習指導。在本文《工具篇》中則主要介紹的是硬體路徑,而在下一篇《方法篇-72本機器人書》里也會列出更為詳細的書單。
第一步你需要熟練掌握如何通過編程與世界進行交互,這是機器人與人工智慧以及計算機科學最大的不同。
小白:
兵器—Arduino
建議先使用Arduino做一個基礎的差分小車,接入各種感測器(大淘寶幾百元套件多的是)再配合Processing快速實現一個絢麗的控制台。做個超聲避障、PID控制、控制台無線遙控,機器人的「感知-控制-行動」基本流程統統都出來了。
另外推薦Makeblock,這是一個基於Arduino的機器人積木搭建平台,集成度比較高。推薦最新款的Ranger,可以變身為平衡車/履帶車等,我已將他通過藍牙與電腦上的Simulink連接起來,可以快速進行更為複雜的控制演算法的驗證。Ps:可視化編程那是給小孩子玩的,可以無視。
[http://blog.exbot.net/archives/2625 Matlab與MakeBlock:通過藍牙控制電機]
小白 Pro:武器—STM32
用一塊STM32407替代Arduino,可以運行更為複雜的程序。你可能會考慮整個四旋翼玩玩,這個時候你就會體會到IMU等感測器以及精準的控制的重要性。你也可能會考慮加個攝像頭再移植個opencv,可能你壓根就沒翻過任何一本《機器視覺》,但沒關係,也照樣可以玩,這樣至少對C++編程會有一個提高。或是移植某一操作系統如freeRTOS、uCOS,甚至Linux。
具體先玩那個不要緊,關鍵是訓練出一套查資料、debug的套路,這個套路是任何人無法一次教授的,你可能需要遇到並解決很多問題,請教很多人,最終慢慢形成一套適用於自身的有效套路。
STM32的開源工程非常之多,推薦開源飛控Pixhawk和PixRacer。其中PixRacer使用了Dronecode的標準介面,建議自己畫板子的時候多參考規範使用標準介面,以後外接其他設備時,不用為改線頭而苦惱。
即便你不玩飛控,Pixhawk也是值得研究的,你可以刷一個Rover固件,控制你的小車也是妥妥的,他兼容的地面站如QGroundControl或是Mission Planner都是極好的。通過MavLink標準協議和MavProxy甚至可以在網頁端通過互聯網來控制你的一個甚至多個機器人。
另外,STM32和普通單片機的一個很大的不同是 庫函數,介面寄存器啥的可以先不深究,但要了解並學會使用常用庫函數,會事半功倍。
做到這一步,相信你無論開發一個無人機還是機器人,在嵌入式硬體方面基本上能夠得心應手了。
老鳥:
武器—樹莓派
Raspberry Pi,是一款基於Linux系統的個人電腦,配備一枚700MHz的處理器,256Mb內存,支持SD卡和Ethernet,擁有兩個USB介面,以及 HDMI和RCA輸出支持。硬體基礎是nARM,操作系統採用開源的Linux系統,比如Debian、ArchLinux。
作為一隻老鳥,自然不再滿足於裸奔,得整個操作系統玩玩撒!雖然Pixhawk運行有Nuttex實時操作系統,但畢竟非主流,也很少有人會深入研究。你還是需要一枚能跑Linux的板子,自然首推樹莓派,當然各種水果派不勝枚舉,如果不是有特別的需求的話,還是老老實實的玩Raspberry,畢竟資源最多,各種支持也最豐富。這個時候你不得不走出各種舒服的IDE(如Keil),接觸各種交叉編譯、開始各種make、各種debug,小問題特別多。至於看啥書,我目前還沒有發現這方面比較好的書(誰有好的推薦,麻煩留言分享下!),主要還是靠多用多練,遇到問題多google。翻不了牆?好吧,簡單點的Ubuntu問題,baidu基本上也都能解決。
[Makefile詳解(超級好)_mingw吧 Makefile詳解]
[http://songjinshan.com/akabook/zh/index.htmlnLinux C/C++編程一站式學習]
大神
武器-複雜的開源機器人平台
主流平台有
TurtleBot:最早的ROS平台
HandsFree:Exbot社區支持的開源平台
Spark:星火計劃ROS課程標準平台,星火計劃--機器人操作系統ROS培訓
以ROS為代表的開源機器人平台,這一類機器人的特點是功能強大,但系統龐雜,所涉及的代碼可能永遠(也不必)完全看完,所涉及的技術細節可能永遠(也不必)完全搞懂。所以你需要一個系統化的、成熟的機器人平台帶你迅速進入機器人學的前沿地帶。理由之二就是要避免重複造輪子。理由之三就是你要加入一個大規模的協作體系,所以你必須選擇(服從)某一套架構和規範。
QQFly對ROS有一個很到位的總結,推薦大家看一下[機器人操作系統ROS機器人操作系統ROS | 簡介篇]。如何學習,推薦[http://blog.exbot.net/archives/2667n如何學習ROS——盛盛經驗談]。YY碩說「最好不要在大四之前去碰ROS。因為ROS用了很多操作系統和網路的底層技術。ROS的設計目標是把機器人的控制和感測器處理的軟體和它的硬體隔離開,用上ROS以後,你可以方便地用到很多能直接跑的軟體代碼。但是ROS從入門到精通需要至少一年以上的時間,你必須不斷地用,不斷地嘗試新的代碼和硬體,才能對它熟悉起來。」這是有道理的,其實ROS本身並不複雜,其實前期大部分時間是花在Linux環境下的編程的熟悉上,而後期的調試則需要更多的機器人學相關知識。
推薦幾個我感覺比較好用的開源平台。
TurtleBot自不用多說,是ROS界最早、軟體最豐富的平台。然而缺點是進口貨價格高,購買維修比較麻煩。
第二個則是ExBot開源社區里幾位大神發起的HandFree,軟硬體開源,散件大淘寶有售,但需要你有很強的DIY能力自己動手組裝調試,下面是基本介紹:
HandFree介紹
HANDS FREE 是一個面向機器人研究、開發的開源軟硬體系統。她有完備與科學的框架,以優秀的嵌入式系統框架為核心,精良的電路、機械設計為支撐,幫您快速實現多種形態的機器人。本系統包含機器人導航,SLAM,計算機視覺等模塊,並擁有自己上層軟體和調試系統。她支持國外其他的開源項目,如ROS,nMPRT, PIXHAWK等,這一切都為您帶來了無比的便捷和快樂!
介紹主頁:http://wiki.exbot.net/HandsFree
代碼下載: HANDS-FREE · GitHub
資料下載: http://pan.baidu.com/s/1c201NC
如果你時間非常寶貴,需要一台Ready-to-go的實驗平台,那還是推薦用Spark吧。這個是NXROBO公司專門為「ROS星火計劃公開課」(星火計劃--機器人操作系統ROS培訓)量身打造的高集成度機器人開發平台。初期主要兼容turtle的軟體庫,後續我們會持續開發新的軟體包。機械結構以及硬體方面,相比於美利堅洋龜turtle,Spark集成度更好、價格也更實惠一些,畢竟Made in ShenZhen嘍。我目前拿到了第一代測試樣機,SLAM跑的還挺穩當。
Dimension: 700mm X 340mm X 340mmWeight: 3.5kgMax Payload: 6kgMax Speed: 0.6m/sObstacle Clearance: 10mmBattery Capacity: 15,000mAhDrivers and API: ROS主要特點:
? n簡潔實用:能直接用上筆記本計算機的顯示器、攝像頭、揚聲器、麥克風等
? n續航力高:充電功率十足,能同時為機器人及高配筆記本計算機充電,實現無人干預長時間運行。
? n擴展性強:提供電源輸出及預留安裝位置,輕鬆外加各種配件,如
? n攝像頭雲台
? n載物平台
? n機械臂
? n激光雷達
平台到手後,下期我們再聊聊如何玩。(本期完)
推薦閱讀:
※拿下菜鳥百世2億投資後,它能成為中國的Kiva嗎?
※獵戶座之肩
※MIT 研究出腦控系統,讓你用意念糾正機器人錯誤的行為
※微型機器人(microrobotics)
※運行在樹莓派和 Arduino 上的開源社交機器人套件
TAG:机器人 |