⑴ 如何系統地學習機器人
作者:鄭帆
鏈接:http://www.hu.com/question/22390802/answer/21350061
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
作為在校工科生,只回答問題中關於如何自學機器人方面的問題。
1. 基礎知識入門
教材大同小異,推薦常用的兩本:
克萊格:機器人學導論 (豆瓣)
蔡自新:機器人學 (豆瓣)
配合教材可以看斯坦福大學的公開課:斯坦福大學公開課:機器人學
以上內容,幫助在腦海中建立機器人學的大概圖景和基本概念。當然,不必盡看,實際上認真鑽研一套足矣。通常機器人學基礎討論都基於機械臂,需要弄懂的幾個問題:機械臂的空間描述和坐標變換;機械臂運動學;機械臂逆運動學;機械臂動力學;軌跡規劃;機械臂的控制;其他如機械設計、感測器、圖像處理etc。
基礎內容中,個人認為最重要的必須掌握的幾個概念:
①剛體位姿的坐標描述和變換:機器人模型的基礎,於機器人學的重要性猶如英文字母至於英文;
②D-H坐標變換:機械臂建模的重要方法,以簡潔的數學語言描述由一連串剛體組成的機械臂;
③雅克比矩陣:機械臂運動學的核心,用於關節速度和末端速度的換算;
④拉格朗日動力學:力和速度加速度之間換算的橋梁。
最重要的工具:數學,尤其是線性代數。
2. 基礎動手入門
工科不動手,學過也沒有。如果你覺得上述基礎內容很枯燥(實際上確實很枯燥),不放自己動手增加趣味性。
軟體上,可以使用萬能的matlab。實際上,克萊格的《機器人學導論》里就有大量matlab習題,可以參考。當然這里不得不提Perter Corke編寫的robotics toolbox for matlab :http://petercorke.com/Robotics_Toolbox.html。
安裝這個toolbox之後,你可以在matlab上通過D-H方法建立機器人模型,並避開底層繁瑣的矩陣運算,通過簡單的函數進行一些運動學計算——不過逆運動學求解經常不收斂,畢竟不涉及底層嘛。更多的細節題主可以自己摸索。貼一個自己開始瞎搗騰時弄的模型圖(害羞>.<):
<img src="https://pic1.mg.com/_b.jpg" data-rawwidth="744" data-rawheight="352" class="origin_image zh-lightbox-thumb" width="744" data-original="https://pic1.mg.com/_r.jpg">
硬體上,個人DIY機器人的話成本是很高的,定位為科教功能的nao機器人(此著名萌貨見下圖,為什麼我要貼這個無關緊要的圖因為它實在是太萌了),一台就賣十幾萬呢。
<img src="https://pic2.mg.com/_b.jpg" data-rawwidth="3264" data-rawheight="2448" class="origin_image zh-lightbox-thumb" width="3264" data-original="https://pic2.mg.com/_r.jpg">
但是學生黨個人DIY相對簡陋的機械臂也是可行的。買幾個幾十塊錢的電機,精度雖低,能轉起來就行。買幾塊控制板。如果你電路夠牛逼,也可以自行設計電路畫電路圖送加工然後自行焊接,但總還是買現成的板子方便嘛。對於初級選手,控制板可以選擇學生黨最常用的單片機,這里我推薦自己搗騰過的開源項目arino:Arino - HomePage
<img src="https://pic4.mg.com/_b.jpg" data-rawwidth="926" data-rawheight="400" class="origin_image zh-lightbox-thumb" width="926" data-original="https://pic4.mg.com/_r.jpg">(圖片來自arino官網首頁)(圖片來自arino官網首頁)
arino的好處是,編程語法簡單,只要能理解基礎的C語言即可,幾乎零入門;編輯器自帶很多sample可以參考;編程模板通用性強,很多時候編程只需要在模板上改動設計實現功能的語句即可;作為開源項目,google一下就可找到很多國外強人做的狂拽酷炫的DIY項目,比如:DIY Robotic Hand Controlled by a Glove and Arino 很多DIY的人願意將程序公開,可以拿來參考;還有就是,價格不貴。
不管買電機還是控制板,可以求助萬能的淘寶。一個簡單的機械臂搭起來,幾百塊錢夠了。
貼一張我使用arino板子和簡單電機瞎倒騰的機械臂:
<img src="https://pic3.mg.com/_b.jpg" data-rawwidth="2000" data-rawheight="3552" class="origin_image zh-lightbox-thumb" width="2000" data-original="https://pic3.mg.com/_r.jpg">用它在紙上畫線,因為精度低,所以直線抖成那副挫樣(害羞>.<)。用它在紙上畫線,因為精度低,所以直線抖成那副挫樣(害羞>.<)。
3. 進階
進階就沒法在知乎里講了。首先方向太多,在學習完基礎知識以後,你要做什麼(工業機械手臂,運動型仿人機器人,etc),你要做哪一塊(機械設計,電路,圖像處理,控制演算法,步態規劃etc)。再者,成本太高,你懂的。最後,進階的機器人DIY沒有必要,財力成本高是一回事,更甚的是時間精力成本高。如果不以機器人為專業,那麼到1、2階段,自己玩玩即可。如果有志於從事機器人相關研究或工作,那麼在大學里參與相關研究項目即可。