【導讀】接觸過很多機器人愛好者,大都對機器人技術展示出了濃厚的興趣,也在計劃如何動手制作自己的第一個機器人。但是似乎很多人都摸不到門路,只能站在大門外滿懷興趣的向內觀望,觀望了一陣興趣漸失只好嘆口氣走開……
很多初學者可能都是看了一些視頻或是現(xiàn)場的比賽,勾起了兒時的美好回憶,興起了自己動手制作機器人的念頭,很多人可能并不是嵌入式開發(fā)的業(yè)內人士,甚至沒有聽說過單片機、步進電機這些名詞,看著別人滿地亂跑的各種機器人,頗有無處下手的感覺。有的人一上來就準備做一個可以雙足行走的人形機器人,可以平穩(wěn)行走,可以靠攝像頭來讀取環(huán)境信息,可以語音識別,最好還可以變形……
我的意見是:新手最好還是老老實實的從小車開始吧。人形機器人可以說是一個系統(tǒng)的大工程,不是一個人玩的起來的,而且資金上的投入也是不可計量的。一個人形機器人的成型產(chǎn)品最少要賣到幾千塊——要知道,你在開發(fā)過程中是不可能沒有錯誤投入的。機器人小車技術上門檻較低,資金投入也少,市場上的各種產(chǎn)品和零配件的支持也較多,雖然簡單,但可以實現(xiàn)的功能可一點也不少。
我在這里憑自己的經(jīng)驗介紹一些自己動手制作機器人小車的基礎知識,如果你是曾經(jīng)自己動手做過的高手,那么你可以繞行,我這里介紹的都是為未入門者準備的最基本的理論知識和一些動手經(jīng)驗。
那么現(xiàn)在我們開始,首先是理論部分——小車的控制結構。
[一]小車的整體控制系統(tǒng)
小車是怎么來控制的?為什么小車判斷出障礙物后可以自動的繞開?
理論:控制工程——處理自動控制系統(tǒng)各種工程實現(xiàn)問題的綜合工程技術。包括對自動控制系統(tǒng)提出要求(即規(guī)定指標)、進行設計、構造、運行、分析、檢驗等過程。它是在電氣工程和機械工程的基礎上發(fā)展起來的。
閉環(huán)控制:閉環(huán)控制有反饋環(huán)節(jié),通過反饋系統(tǒng)是系統(tǒng)的精確度提高,響應時間縮短,適合于對系統(tǒng)的響應時間,穩(wěn)定要求高的系統(tǒng)。
開環(huán)控制:開環(huán)控制沒有反饋環(huán)節(jié),系統(tǒng)的穩(wěn)定不高,響應時間相對來說很長,精確度不高,使用于對系統(tǒng)穩(wěn)定精確度要求不高的簡單的系統(tǒng)。
一般稍微復雜一點的機器人小車都是閉環(huán)控制,也就是說它有一個反饋機制,會根據(jù)自己配備的各種傳感器來讀取環(huán)境信息,并且根據(jù)這些環(huán)境信息來決定自己下一步的行動,決定好后將行動指令發(fā)給執(zhí)行系統(tǒng),使機器人做出合適的動作。當然也有的機器人小車是開環(huán)控制,我就見過一個機器人小車配了一支筆,將機器人放在紙上,機器人一轉,刷的一下在紙上畫出一個圈來,當然由于摩擦力和機械誤差等原因,畫出來的圓圈可能不閉合,也可能不圓。不過人家阿Q都說了:“孫子才畫的圓呢……”
有點迷糊?沒關系,其實簡單一點說就是這樣:機器人可以分為三部分——傳感器部分、控制器部分、執(zhí)行器部分。
傳感器部分:機器人用來讀取各種外部信號的傳感器,以及控制機器人行動的各種開關。好比人的眼睛、耳朵等感覺器官。
控制器部分:接收傳感器部分傳遞過來的信號,并根據(jù)事前寫入的決策系統(tǒng)(軟件程序),來決定機器人對外部信號的反應,將控制信號發(fā)給執(zhí)行器部分。好比人的大腦。
執(zhí)行器部分:驅動機器人做出各種行為,包括發(fā)出各種信號(點亮發(fā)光二極管、發(fā)出聲音)的部分,并且可以根據(jù)控制器部分的信號調整自己的狀態(tài)。對機器人小車來說,最基本的就是輪子。這部分就好比人的四肢一樣。
好的,現(xiàn)在我們來分析一下機器人小車的避障行為控制:機器人正在行走過程中(人在路上走),忽然接收到裝在機器人前部的傳感器發(fā)來的一個“左前方有障礙物” 的信號(人眼發(fā)現(xiàn)左前方有一根電線桿),我們事先寫在機器人控制芯片中的程序算法要求機器人發(fā)現(xiàn)左前方有障礙物就往右邊轉(人發(fā)現(xiàn)左前方有電線桿就應該往右躲——什么,你還要繼續(xù)往前走?你牛!那我就等著聽響了,哦,原來你只是想去看上面的小廣告……),控制芯片對機器人的驅動器——或是輪子,或是雙足 ——發(fā)出向右轉的指令(人大腦發(fā)出向右轉的指令,通俗點說就是“拐了拐了”),此時機器人的執(zhí)行器部分應該立即響應控制器的指令,改變自己的狀態(tài),使機器人的前進方向改變,避開障礙物(恭喜你,躲開了電線桿)。怎么樣,是不是有了點機器“人”的意思?
那么這三部分是怎么聯(lián)系起來的呢?很簡單:電!其實機器人小車就是一個電子作品,傳感器將外部的光信號、聲音信號、溫度信號等全部轉換為控制部分可以接受的電信號,控制系統(tǒng)發(fā)出的指令也是各種電信號,通過執(zhí)行部分轉變?yōu)殡姍C輸出的扭矩、聲音、光信號等等。
下面我來分別介紹一下這三個部分。
[二]傳感器部分
傳感器是機器人的眼睛,想要小車完成不同的任務就要配備各種不同的傳感器。
現(xiàn)在市場上林林總總的傳感器數(shù)不勝數(shù),一般個人機器人愛好者經(jīng)常使用的有碰撞檢測傳感器(碰撞開關)、紅外測障傳感器、紅外測距傳感器、光敏電阻、電子溫度計、電子指南針等等。
一般機器人用的傳感器返回的信號分兩種:一種返回值很簡單,只有兩個狀態(tài):“有”或者“沒有”;“是”或者“不是”;“0”或者“1”。我一般習慣把這種量稱為“狀態(tài)量”。它所反映的是一種狀態(tài),只是簡簡單單的“是”或“否”。比如“機器人左邊有沒有障礙物”,“有沒有聲音信號”等。還有一種返回值返回的是一個已知范圍內任意值,比如一只光敏電阻返回的信號就可能是0~5V范圍內的任意電壓信號。我一般把這種量稱為“強度量”。它所反映的是一個有效范圍內的強度。比如“機器人左邊的障礙物有多遠”,“現(xiàn)在的聲音信號有多強”等。
“狀態(tài)量”反映的信息較簡單,相應的傳感器也較簡單,成本較低。而“強度量”反映的信息則較豐富,相應的傳感器的成本就會比較高,同時給控制上也帶來了更大的靈活和復雜。
下面我們來看一些常用的傳感器:
碰撞開關:電路常開,碰到障礙物后連通,可以用來檢測機器人是否發(fā)生碰撞。
光敏電阻:光敏電阻器是利用半導體的光電效應制成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻減小,入射光弱,電阻增大。光敏電阻器一般用于光的測量、光的控制和光電轉換(將光的變化轉換為電的變化)。可以用來檢測光線強度。
紅外測障傳感器:紅外測障傳感器利用紅外線遇到障礙物會反射的原理,來檢測某一方向上是否有障礙物的存在。
紅外測距傳感器:紅外測距傳感器利用紅外信號遇到障礙物距離的不同反射的強度也不同的原理,進行障礙物遠近的檢測。紅外測距傳感器具有一對紅外信號發(fā)射與接收二極管,發(fā)射管發(fā)射特定頻率的紅外信號,接收管接收這種頻率的紅外信號。
超聲波測距傳感器:超聲波測距傳感器利用聲音在空氣中的傳輸距離和傳輸時間成正比的原理,通過檢測不同遠近的反射面對超聲波反射回去的時間不同來檢測障礙物的距離。
對于傳感器,很多人覺得只要看看文檔,知道怎么用了就行。但我的建議是:不但要知道怎么用,還要知道其檢測原理。只有深刻的理解了傳感器的檢測原理,才能具有更好的發(fā)散思維。我舉一個例子:當初在學校開展機器人滅火比賽,我們用了廠家提供的地面灰度傳感器依靠可見光反射來檢測地面白線,效果一直不是很理想。后來有同學仔細研究了當時電機上配備的光電編碼器,發(fā)現(xiàn)其原理就是利用紅外線在不同顏色表明上反射率不同檢測高速旋轉的電機上黑白相間的碼盤來測出電機的旋轉速度,動手將光電編碼器上的紅外檢測模塊拆下來裝在機器人底部,用來檢測地面白線,檢測效果一下子好了很多。
購買途徑:當?shù)氐碾娮邮袌觯蚴蔷W(wǎng)上購買(現(xiàn)在很多機器人商家都有各種各樣的傳感器提供,其實原理和適用范圍都差不多,很多都可以互換通用)。購買時需要注意的是傳感器的電壓范圍和有效范圍。
終極開發(fā):圖像識別依靠一只攝像頭,根據(jù)攝像頭返回的視頻信號,計算出各個不同物體距自己的距離以及其運動速度等等。如果你可以邁入這一步,那么,有一門叫做“機器視覺”的學科的大門也就向你敞開了。
[三]控制器部分
適合機器人的控制芯片有很多:單片機、DSP、甚至我們計算機上所用的CPU,都可以。不過我們這里主要介紹的針對機器人小車的技術,所以把其他的先放一放,讓我們把注意力放到物美價廉的單片機上來。
首先還是理論課,不要抱怨,我的信條是:不懂理論的開發(fā)者永遠只能是一個拼裝師。
單片機:單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。概括的講:一塊芯片就成了一臺計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。
小芯片有大智慧
單片機是自動控制系統(tǒng)中應用非常廣泛的控制芯片,現(xiàn)在就在我們身邊的許多的電器中都有單片機的身影。想自己動手制作機器人的話,相應的單片機知識是必不可少的。系統(tǒng)的單片機知識我這里不想多說,想要對單片機系統(tǒng)有一個深入的理解,還是要找一本比較好的單片機教材一頁一頁的看下去,網(wǎng)上的任何“技巧”“快速入門”(包括本文)都只能算是水果、零食之類,閑暇無事時可以拿來開開胃,真正想要吃飽吃好,還是要用大餅卷饅頭就著米飯吃才行。
我這里只提一些基礎的入門概念,給真正的入門者起一點拋磚引玉的作用。一塊我們剛剛從商家手里拿到的單片機芯片,還是一塊空白,什么也做不了。如同一個剛出世的孩子,我們開發(fā)人員要做的,就是教會單片機處理各種各樣的問題,給單片機配備上各種各樣的擴展工具,使單片機可以將復雜的問題簡單化,數(shù)字化。
單片機開發(fā)涉及兩方面:硬件、軟件。單片機不同于其他電器,拿過插銷直接插在電源上就可以使用,一塊空白的單片機想要使用,還需要一些其他的電路來支持。一般來說,最基本的電路就是單片機最小系統(tǒng):所謂的單片機最小系統(tǒng)就是指可以讓單片機工作起來的最基本的電路,在所有的單片機系統(tǒng)中,你都可以找到類似的電路。至于它的原理,我這里就不累述了,找本書看去吧。
我再介紹一些做機器人需要的擴展電路:
程序下載電路:單片機最終需要程序來控制,一般都是在PC上編寫好程序,通過下載線來下載到單片機中執(zhí)行。下載需要一個電路來支持,以前的通常做法是連接到PC的串口,不過現(xiàn)在有很多通過USB下載程序的電路。
以上兩個電路就是機器人開發(fā)所需要的最基本的單片機電路,其他也許還需要一些電機驅動、A/D轉換、開關選擇等電路。
也許你有些迷糊,可以有一點感到棘手了,這些電路對于一個從未接觸過單片機的新手來說可能有些頭大,沒關系,現(xiàn)在市場上有很多成熟的單片機開發(fā)系統(tǒng)出售,價格極為低廉,如果不想在底層電路上多花精力的話,到一些電子商務網(wǎng)站上搜索一下“單片機開發(fā)板”,一百多就可以買到功能十分齊全,贈送軟件+教程還有技術支持服務的適用開發(fā)板了(當然,你如果自己動手的話,成本會更低)。
軟件:說白了就是你自己給單片機開發(fā)的智能程序,讓機器人可以具有最簡單的智能。不要看到“智能”這兩個字就覺得多么高深,看到前面有電線桿知道要拐,這,就是智能。不同的單片機需要不同的開發(fā)環(huán)境,這個要在購買的時候就弄清楚,很多單片機公司都有自己配套的開發(fā)軟件,很多都是可以在公司網(wǎng)站上免費下載。一般來說,國外的很多芯片公司在自己的網(wǎng)站上都有非常豐富和適用的資料,抱本英漢詞典,將網(wǎng)站上的資料瀏覽一下,你會發(fā)現(xiàn)一切都變得十分簡單。
以前一說起單片機開發(fā)就會想起匯編語言,那時候的芯片成本很高,芯片的運算開銷和存儲開銷都要精打細算,高效率的匯編語言是單片機的最佳選擇。而現(xiàn)在隨著芯片成本的降低,開銷問題已經(jīng)不再是制約單片機程序開發(fā)的瓶頸,所以很多類C或Basic語言的開發(fā)環(huán)境都已經(jīng)出現(xiàn)。只要有一定的程序開發(fā)基礎,對單片機的各種引腳足夠熟悉,那么相信寫出一個簡單的智能程序將是很容易的事。
購買途徑:電子市場或是網(wǎng)購。現(xiàn)在單片機的價格已經(jīng)十分低廉,價格上無需考慮太多,關鍵是要選擇一款合適的,資料較多,容易上手的就可以。就機器人開發(fā)來說,要滿足以下幾個條件:有程序下載線,可以方便的將程序從PC上下載到單片機上;集成了A/D轉換;有PWM輸出(便于控制電機)。
終極開發(fā):單片機終究能力有限,想要做一些運算量較大的應用時(例如音頻視頻的處理),就需要一些更高端的芯片,比如DSP等,或者干脆把你的電腦機箱加上幾個輪子,讓你的電腦跑起來吧!
相關名詞:C51,PIC,AVR,PWM……啥意思?自己搜去!
[四]執(zhí)行器部分
對于機器人小車來說,最基本的執(zhí)行器部分就是輪子。要有輪子,小車才能被稱為小車。這部分可能也是各位愛好者最發(fā)愁的部分,傳感器和控制器到處都有的賣,而一般適合機器人小車上用的輪子,機械結構,車體等部分卻很難尋覓。找人訂做成本極高,現(xiàn)在很多朋友都用玩具小車來進行改裝。其實現(xiàn)在已經(jīng)開始有機器人小車底盤出售,不過在電子市場很難見到,多數(shù)都要在網(wǎng)上一些教育機器人公司的網(wǎng)店里郵購。
機器人常用的電機分為三種:普通的直流電機、步進電機、伺服電機。
直流電機:輸出或輸入為直流電能的旋轉電機,稱為直流電機,它是能實現(xiàn)直流電能和機械能互相轉換的電機。當它作電動機運行時是直流電動機,將電能轉換為機械能;作發(fā)電機運行時是直流發(fā)電機,將機械能轉換為電能。
步進電機:步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。這一線關系的存在,加上步進電機只有周期的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。
伺服電機:伺服電動機又稱執(zhí)行電動機,在自動控制系統(tǒng)中,用作執(zhí)歇件,把所收到的電信號轉換成電動機軸上的角位移或角速度輸出。分為直流和交流伺服電動機兩大類,其主要特點是,當信號電壓為零時無自轉現(xiàn)象,轉速隨著轉矩的增加而勻速下降。
這三種電機一般來說成本是直流<步進<伺服,控制精度是直流<步進<伺服(當然也有不一般的時候,并不是說伺服電機就一定比步進電機便宜)。初學者對單片機控制電機不太熟悉,起步可以先用單片機輸出的PWM信號來控制直流電機,更進一步可以試著控制步進電機,以求更高的控制精度。對于小車的運動驅動來說,一般可以選用直流電機或步進電機,而伺服電機一般用在機械臂上,用來得到精確的旋轉角度。
一般單片機要通過驅動電路來控制步進電機、伺服電機。有專門的模塊來負責驅動電機,單片機只需要為這樣的模塊提供一定頻率的脈沖和控制信號就可以了。網(wǎng)上相關的資料很多,大家需要的話可以去自己找一下。
購買途徑:電子市場、五金商店、網(wǎng)購、舊家電。
終極開發(fā):當你可以自如的控制機器臂的時候,你就會發(fā)現(xiàn),一個類人機器人將不再遙遠。
其他的常用驅動裝置還有機械臂機械手等,裝在小車上去抓取東西。可以自己利用伺服電機開發(fā)(初學者最好繞行),也可以選擇市面上的成型產(chǎn)品,這些產(chǎn)品一般都有完整的文檔,仔細閱讀,使用起來都是很方便的。
[后記]
最后再介紹一點電子電路開發(fā)的東西吧,提起電路,可能很多朋友首先想起來的就是墨綠色的印刷電路板,現(xiàn)在很多電子市場都有人可以根據(jù)你的電路圖為你加工印刷電路板。不過在設計階段,很多東西都會改來改去,每次都去重新制作電路板效率和成本都是大問題,一般在電路開發(fā)中,有一種專門的實驗板(也叫面包板),適合在開發(fā)階段使用。以上就是我寫的一點經(jīng)驗之談,沒有寫什么具體的技術,只是將新手可能會感到迷茫的一些問題列出來,就像我在前面說的,這篇小文章只能算是一點小點心,真正想要成為機器人高手,還是需要埋頭啃一些專業(yè)書籍。學習沒有捷徑,如果你走了捷徑,那只能說明你比別人少看了風景。
這篇文章的目的只是想讓一些對機器人有興趣而又不知如何著手的朋友知道制作機器人需要些什么東西,需要哪些知識準備,不入大家法眼,只是希望能有更多的朋友加入到機器人開發(fā)的行列中,當然了,我們的作品基本上不會有什么科技價值,也不會填補什么技術空白,不會為社會主義建設添什么磚加什么瓦,純粹只是自娛自樂。不過我想,當更多的人——尤其是學生,以制作機器人作為一種娛樂項目的時候,應該也是一件令人高興的事吧,呵呵。