給剛接觸機器人的朋友們

轉載:http://www.robot360.cn/home.php?mod=space&uid=1688&do=blog&id=377


在開始寫這篇文章之前,還有一件事情要聲明一下,研究機器人和研究別的東西不一樣,你可以把它當作一個玩具來研究,所以研究機器人應該是一件很愉快的工作,千萬別把它當作一件苦差事來對待,不然也別玩了。機器人經過幾十年的發展,國外網站上已經有n資料可以找了。而國內目前機器人資源目前來說還是一個空白。寫這篇文章主要是給國內剛玩機器人的愛好者們一些小小的意見。 機器人到底什麼?自從機器人誕生以來就有很多對機器人的定義了,但是正如目前很多學者所指出的一樣,很多所謂的機器人看上去像機器人,其實並不是真正的機器人,比如一個無線遙控的有4條會動的腿的狗也能叫機器人嗎?當然不能,但是現在很多產品就是這麼叫的。但是根據我個人對機器人的理解,一個所謂的機器人必須有2個最主要的功能。一是能和外界交流,第二是能夠自動根據交流的信息產生一些反應。這反應可以是事先寫好的程序,或者機器人自己產生的程序,一句話就是要有反應。當然,我本來就沒什麼資格來定義機器人,但是就目前的技術水平和對機器人的理解程度,我覺得最簡單的機器人應該有以上2大主要功能。


        接下來是玩機器人對基礎知識的需求,這裏面的知識是任何一個玩機器人的人都必須會的。 簡單的說,你必須具備高中物理知識,同時知道電容的作用,電感的作用,二極管的作用以及使用方法,直流電機的工作原理,發光二極管的使用,變壓器的使用,如果學過大學模擬電路和數字電路再加上電工原理,那你的電子學理論知識就基本上夠了,剩下就是實踐了。說實話,機械部分的基礎基本上不需要,只要有一點機械常識就可以了,相信玩機器人的朋友們以前玩具一定沒少拆,多留心一下里面的機械結構就沒什麼大問題了。當然如果你要學習如何設計比如2條腿的機器人,或者別的幾條腿的,那還需要大學裏面一點點的機械原理的內容,不過不用擔心,只要不涉及到什麼疲勞強度阿,載荷校驗的這部分內容,其他部分相信是很容易就明白的。但是如果只是做一個最簡單的輪式機器人的話,那這些內容也可以省了。最後是機器人的靈魂了,編程,無論怎麼樣,要會做一個所謂的機器人,你就必須寫程序,這是最最基本的,因爲就目前的是市場情況,你可以很容易買到電子和機械套件,但是你絕對沒法買到機器人軟件,如果能買到,那你如果不會寫程序,就沒法改進,這個機器人嚴格意義上就不是你的孩子了,就像父母生了你,但是給你思想,養你的人對你而言更重要。不要怕麻煩,事實上學寫簡單的程序也不是很難的一件事情,一般來說花個幾個星期的晚上看看一些簡單的編程,比如C,只要學會一門,再學其它編程語言是很容易的。

        所以一定要靜下心來,認真學一門,這個時候,支持你的動力就是對機器人的無與倫比的執着了。以上這些知識最好是邊學邊玩。學了機械就開始設計機器人地盤,學電子的時候就設計機器人電路,學編程就開始寫機器人的程序。不然我相信沒多少人能支持下來的。當然,你也可以跳開機械部分直接購買成品,這樣可以直接使用目前成熟的而且相對比較多的產品。
---------------------------------------------------------------------------

下面介紹 一下一個機器人“玩具”應該有的物理組成部分:

機器人的大腦:

        它可以有很多叫法,可以叫做 微控制器,微處理器,處理器或者計算器等,不過這都不要緊,通常微處理器是指一塊芯片,而其它的是一整套控制器,包括微處理器和一些別的元件。任何一個機器人大腦就必須要有這塊芯片,不然就稱不上機器人了。如果你是初學的,或者剛開始玩機器人的話,那最好買一套控制器玩,千萬別之間玩微處理器哦,除非你電子系畢業的,而且專業是芯片設計,那你可以直接開始玩微處理器(呵呵,開個玩笑,只不過微處理器對初學者而言比較困難,還是由簡入繁吧)。在選擇微控制器的時候,主要要考慮:處理器的速度,Rom和Ram的大小,I/O端口類型和數量,編程語言以及功耗。


        在選購微控制器時候,最先考慮的一個是速度,主要的一個指標就是運行速度MHz,這個計算機的評價指標是一樣的,越高的MHz意味着越快的執行速度和你付出越多的錢。這第二個存儲容量的指標是決定你的控制器可以實現的功能的多少和複雜程度,越多的存儲空間可以讓你存儲更多的程序代碼,從而實現更多,更復雜的功能。I/O接口的種類和接口數量(pin numbers)是指接口數量,目前而言有2種接口種類,Analog(模擬)和Digital(數字)接口,這個接口種類決定你控制器可以控制硬件的類型,如果你的電動機控制卡是數字接口的,那你的控制器也必須要有數字輸出接口,如果你的傳感器是模擬接口的話,那你的控制器也必須要有模擬輸入接口。接口數量就是指同時能夠連接設備的多少了。

        編程語言是一個控制器能夠接受的語言類型,一般有C語言,彙編語言或者basic語言,這些通常能被高級一點的控制器直接執行,因爲在高級控制器裏面內置了編譯器能夠直接把一些高級語言翻譯成機器碼,但是現在差不多每種控制器都支持C語言,如果你會C語言的話,那個編程的問題就很小了,如果你不會,而又不想學,那你就要花點時間找一個相應的編譯器能夠將你寫的高級語言編譯成你所選擇控制器的執行代碼。所以,建議想玩機器人的人們都學一點C,畢竟這個是目前被絕大多數編譯器或者控制器所接受的語言哦。

        最後一個要考慮的是,如何考慮功耗的問題,由於機器人不太好拖一根長長的電源線在屁股上,所以,除了考慮執行電機的功耗以外,另外一個耗電大戶就是控制器了。在考慮這個參數的時候,主要考慮你的電源供應是什麼,機器人預計的運行時間是多少。不過這個問題目前對我們而言不是很大,除非你做那種很小的機器人,不然現在控制器的功耗都不是很大,所以,稍微大一點的機器人都會有足夠的電源供應的。

---------------------------------------------------------------------------

傳感器,是機器人和現實世界之間的紐帶。但就目前傳感器技術而言,我們現在所能選用的傳感器或者說負擔的起的傳感器可不多。根據傳感器的的工作特徵,可以分爲,光學傳感器,顧名思義就是對光產生反應的的傳感器,比如紅外傳感器,聲傳感器,比如microphone,力傳感器,比如壓敏傳感器,位置傳感器,比如陀螺儀。


光傳感器:

        光傳感器的範圍很廣,有最簡單的光敏電阻,就是光強度的大小改變電阻的阻值從而實現對光強度的感知,也有目前最複雜的攝像頭Camera。然而在我們機器人中,用的最多的是 Infra-red 紅外傳感器,其中的紅外接近傳感器是機器人在運動過程中必不可少的傳感器,通過它,目前我們可以獲得機器人的在移動過程中與前面障礙物之間的距離,當然這距離非常短。不過,對於我們的機器人來說,這也是目前唯一的可承受的選擇。

        還有一種目前比較有用的紅外傳感器是叫紅外探測器,它不同於上面的紅外接近傳感器,它沒有紅外發射器,只有一個紅外接受單元,由被測物體發出紅外信號。一般用來做熱感應用,比如人走近或者動物走進這樣的傳感器時,它就會產生信號。在生產安全領域用的比較多。對於我們嗎,最多就是有人走進的時候能夠作爲一種感知手段來讓機器人獲得:“哇,有個發紅外線的傢伙衝我走過來了”這樣的信息。

       還有一種目前我們也能承受的是攝像頭,隨着電腦技術的飛速發展,今天獲得一個廉價的攝像頭已經是非常easy的事情了,一個普通攝像頭目前在市場上售價也就RMB200多點。但是對我們而言,與之相配套的,能應用於機器人的識別軟件和硬件還相對比較少和昂貴,目前成熟的市場產品有美國卡耐基-梅隆大學開發的CMU-Camera套裝,但是要100美金,差不多850RMB,相對而言價格還是高了一點。但是如果我們不用他們的套裝,自己開發的話,其它硬件投入相對少了,但是你要對計算機編程相當精通,而且難度相對很大。一個比較簡單的圖像識別的軟件少說也得一個計算機專業畢業的本科生4-5個月的工作時間才能寫出來。更別說其它功能多一點的軟件。不過隨着現在對圖像研究的在全世界範圍如火如荼的展開,相信未來2年以後就會有很多產品可供選擇了。


力傳感器:

        力傳感器是用來檢測碰撞或者接觸信號的,比如機械手的應用,當你放一個東西到機械手的時候,機械手自動抓住它,它就需要力傳感器檢測東西抓的緊不緊。典型的力傳感器是微動開關和壓敏傳感器。微動開關其實就是一個小開關,通過調節開關上的槓桿長短,能夠調節觸動開關的力的大小。用來做碰撞檢測這是最好不過了。但是這種傳感器必須事先確定好力的閥值,也就是說只能實現硬件控制。而壓敏傳感器是能根據受力大小,自動調節輸出電壓或者電流,從而可以實現軟件控制。

聲覺傳感器:

        哈哈,這個部分我想都不用介紹了,目前最多的也就是麥克風了。幾塊錢一個,滿世界都是。但是目前對我們而言唯一的問題是如何處理聲音信號。當前沒有一個比較好的聲音解決方案,國外目前有幾個產品,但是都沒法識別中文,都是英文的。 不知道超聲波傳感器屬不屬於這個範疇,超聲波傳感器和紅外接近傳感器很像,也屬於距離探測傳感器,但是它能提供比紅外傳感器更遠的探測範圍,而且還能提供一個範圍的探測而不是一條線的探測。也是目前我們用的最多的距離傳感器之一了。

位置和姿態傳感器:

        機器人在移動或者動作的時候必須時時刻刻知道自己的姿態動作,否則就會產生控制中的一個開環問題,沒有反饋。 位置傳感器和姿態傳感器就是這個用的。常用的有光電編碼器,由於機器人的執行機構一般是電機驅動,通過計算電機轉的圈數,可以得出電機帶動部件的大致位置,編碼器就是這樣一種傳感器,它一般和電機軸或者轉動部件直接連接,電機或者轉動部件轉了多少圈或者角度能夠通過編碼器讀出,控制軟件再根據讀出數據進行位置估計。還有一種是陀螺儀,這是利用陀螺原理製作的傳感器,主要可以測得移動機器人的移動加速度,轉過的角度等信息。相關原理要參考大學物理的相關內容了。難度稍微大一點。而且目前價格也比較貴。羅盤對我們而言是陀螺儀的替代品,它利用了羅盤的原理,來測得機器人的角度,價格也比陀螺儀要便宜得多。大概150RMB左右一個。.最後一個要介紹的是GPS定位儀了,對於室外的移動機器人來說,這個是必須的定位手段了。它通過衛星來定位你的機器人,聽上去很高科技,所以價格也很高咯。一個GPS定位模塊目前售價大約是1500RMB左右。 傳感器小結: 當然,以上所說的只是傳感器中的一部分,還有很多傳感器沒談,比如現在比較流行的激光範圍探測器,這個傳感器能提供50m的探測範圍,而紅外接近傳感器只能提供50cm,超聲波傳感器能提供10m以內。隨着探測距離的提高,價格也是以幾何級數的提高,這麼一個激光傳感器通常需要2W RMB,絕對不是我們做能負擔得起的,而且目前還沒有小型化,一個最輕的也要2kg左右。這些傳感器由於這樣或者那樣的原因,是目前我們所不能選用的。


---------------------------------------------------------------------------

驅動器:

        驅動器就是驅動機器人的動的部件。最常用的是電機了。當然還有液壓,氣動等別的驅動方式,但是由於控制負責,價格高等原因,並不太適合我們用。一個機器人最主要的控制量就是控制機器人的移動,無論是自身的移動還是手臂等關節的移動,所以機器人驅動器中最根本和本質的問題就是控制電機,控制電機轉的圈數,就可以控制機器人移動的距離和方向,機械手臂的彎曲的程度或者移動的距離等。所以,第一個要解決的問題就是如何讓電機能根據自己的意圖轉動。一般來說,有專門的控制卡和控制芯片來進行控制的。有了這些控制卡和芯片,我們所要做的就是把微控制器和這些連接起來,然後就可以用程序來控制電機了。第二個問題是控制電機的速度,在機器人上的實際表現就是機器人或者手臂的實際運動速度了,機器人走的快慢全靠電機的轉速,這樣,我們就要求控制卡對電機有速度控制。電機目前常用的有2種,步進電機(stepper motor)和直流電機(DC motor).


直流電機

        這是最最普通的電機了,我們小時候的電動玩具全部用的直流電機,直流電機最大的問題是你沒法精確控制電機轉的圈數,也就前面所說的位置控制。你必須加上一個編碼盤,來進行反饋,來獲得實際轉的圈數。這時的直流電機就變成了伺服電機(Servo Motor)。但是直流電機的速度控制相對就比較簡單,用一種叫PWM的調速方法可以很輕鬆的調節電機速度。現在也有很多控制芯片帶調速功能的。選購時要考慮的參數是電機的輸出力矩,電機的功率,電機的最高轉速。


步進電機

         步進電機看名字就知道了,它是一步一步前進的。也就是說,它可以一個角度一個角度旋轉,不象直流電機,你可以很輕鬆的調節步進電機的位置,如果你發一個轉10圈的指令,步進電機就不會轉11圈,但是如果是直流電機,由於慣性作用,它可能轉11圈半。至於爲什麼會有這樣的差別,建議還是去看看相關電機的原理。步進電機的調速是通過控制電機的頻率來獲得的。一般控制信號頻率越高,電機轉的越快,頻率越低,轉的越慢。選購時要考慮的參數是電機的輸出力矩,電機的功率,每個脈衝電機的最小轉角。

        一般情況下,電機都沒法直接帶動輪子或者手臂,因爲力矩不夠大,所以我們需要加上一個減速箱來增加電機的輸出力矩,但是代價是電機速度的減小,比如一個1:250的齒輪箱,會讓你電機的輸出力矩增大250倍,但是速度只有原來的1/250了。首先計算出機器人所需要的力矩大小,然後根據力矩去選擇電機。

       現在應該對機器人3大硬件部分有個大致的瞭解了吧。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章