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