當前位置: 華文問答 > 科學

如何系統地學習機器人?

2013-12-28科學

作為在校工科生,只回答問題中關於如何自學機器人方面的問題。

1. 基礎知識入門

教材大同小異,推薦常用的兩本:

克雷格:

機器人學導論 (豆瓣)

蔡自新:

機器人學 (豆瓣)

配合教材可以看史丹佛大學的公開課:

史丹佛大學公開課:機器人學

以上內容,幫助在腦海中建立機器人學的大概圖景和基本概念。當然,不必盡看,實際上認真鉆研一套足矣。通常機器人學基礎討論都基於機械臂,需要弄懂的幾個問題:機械臂的空間描述和座標變換;機械臂運動學;機械臂逆運動學;機械臂動力學;軌跡規劃;機械臂的控制;其他如機械設計、傳感器、影像處理etc。

基礎內容中,個人認為最重要的必須掌握的幾個概念:

剛體位姿的座標描述和變換 :機器人模型的基礎,於機器人學的重要性猶如英文字母至於英文;

D-H座標變換 :機械臂建模的重要方法,以簡潔的數學語言描述由一連串剛體組成的機械臂;

雅各比矩陣 :機械臂運動學的核心,用於關節速度和末端速度的換算;

拉格朗日動力學 :力和速度加速度之間換算的橋梁。

最重要的工具:數學,尤其是 線性代數

2. 基礎動手入門

工科不動手,學過也沒有。如果你覺得上述基礎內容很枯燥(實際上確實很枯燥),不放自己動手增加趣味性。

軟體上,可以使用萬能的matlab。實際上,克雷格的【機器人學導論】裏就有大量matlab習題,可以參考。當然這裏不得不提Perter Corke編寫的 robotics toolbox for matlab :

http:// petercorke.com/Robotics _Toolbox.html

安裝這個toolbox之後,你可以在matlab上透過D-H方法建立機器人模型,並避開底層繁瑣的矩陣運算,透過簡單的函式進行一些運動學計算——不過逆運動學求解經常不收斂,畢竟不涉及底層嘛。更多的細節題主可以自己摸索。貼一個自己開始瞎搗騰時弄的模型圖(害羞>.<):

硬體上,個人DIY機器人的話成本是很高的,定位為科教功能的nao機器人(此著名萌貨見下圖,為什麽我要貼這個無關緊要的圖因為它實在是太萌了),一台就賣十幾萬呢。

但是學生黨個人DIY相對簡陋的機械臂也是可行的。買幾個幾十塊錢的電機,精度雖低,能轉起來就行。買幾塊控制板。如果你電路夠牛逼,也可以自行設計電路畫電路圖送加工然後自行焊接,但總還是買現成的板子方便嘛。對於初級選手,控制板可以選擇學生黨最常用的微控制器,這裏我推薦自己搗騰過的開源計畫 arduino

Arduino - HomePage

(圖片來自arduino官網首頁)

arduino的好處是,編程語法簡單,只要能理解基礎的C語言即可,幾乎零入門;編輯器內建很多sample可以參考;編程樣版通用性強,很多時候編程只需要在樣版上改動設計實作功能的語句即可;作為開源計畫,google一下就可找到很多國外強人做的狂拽酷炫的DIY計畫,比如:

DIY Robotic Hand Controlled by a Glove and Arduino

很多DIY的人願意將程式公開,可以拿來參考;還有就是,價格不貴。

不管買電機還是控制板,可以求助萬能的淘寶。一個簡單的機械臂搭起來,幾百塊錢夠了。

貼一張我使用arduino板子和簡單馬達瞎倒騰的機械臂:

用它在紙上畫線,因為精度低,所以直線抖成那副挫樣(害羞>.<)。

3. 進階

進階就沒法在知乎裏講了。首先方向太多,在學習完基礎知識以後,你要做什麽(工業機械手臂,運動型仿人機器人,etc),你要做哪一塊(機械設計,電路,影像處理,控制演算法,步態規劃etc)。再者,成本太高,你懂的。最後,進階的機器人DIY沒有必要,財力成本高是一回事,更甚的是時間精力成本高。如果不以機器人為專業,那麽到1、2階段,自己玩玩即可。如果有誌於從事機器人相關研究或工作,那麽在大學裏參與相關研究計畫即可。