如何著(zhù)手制作一個(gè)機器人小車(chē)--給初學(xué)者【上】

最近接觸了很多機器人愛(ài)好者,很多人都對機器人技術(shù)展示出了濃厚的興趣,也在計劃如何動(dòng)手制作自己的第一個(gè)機器人。但是似乎很多的人都摸不到門(mén)路,只能是站在大門(mén)外滿(mǎn)懷興趣的向內觀(guān)望,觀(guān)望了一陣興趣漸失只好嘆口氣走開(kāi)……
很多初學(xué)者可能都是看了一些視頻或是現場(chǎng)的比賽,勾起了兒時(shí)的美好回憶,興起了自己動(dòng)手制作機器人的念頭,很多人可能并不是嵌入式開(kāi)發(fā)的業(yè)內人士,甚至沒(méi)有聽(tīng)說(shuō)過(guò)單片機、步進(jìn)電機這些名詞,看著(zhù)別人滿(mǎn)地亂跑的各種機器人,頗有無(wú)處下手的感覺(jué)。有的人一上來(lái)就準備做一個(gè)可以雙足行走的人形機器人,可以平穩行走,可以靠攝像頭來(lái)讀取環(huán)境信息,可以語(yǔ)音識別,最好還可以變形…… :—(

我的意見(jiàn)是:新手最好還是老老實(shí)實(shí)的從小車(chē)開(kāi)始吧。人形機器人可以說(shuō)是一個(gè)系統的大工程,不是一個(gè)人玩的起來(lái)的,而且資金上的投入也是不可計量的。一個(gè)人形機器人的成型產(chǎn)品最少要賣(mài)到幾千塊——要知道,你在開(kāi)發(fā)過(guò)程中是不可能沒(méi)有錯誤投入的。機器人小車(chē)技術(shù)上門(mén)檻較低,資金投入也少,市場(chǎng)上的各種產(chǎn)品和零配件的支持也較多,雖然簡(jiǎn)單,但可以實(shí)現的功能可一點(diǎn)也不少。
我在這里憑自己的經(jīng)驗介紹一些自己動(dòng)手制作機器人小車(chē)的基礎知識,如果你是曾經(jīng)自己動(dòng)手做過(guò)的高手,那么你可以繞行,我這里介紹的都是為未入門(mén)者準備的最基本的理論知識和一些動(dòng)手經(jīng)驗。
那么現在我們開(kāi)始,首先是理論部分——小車(chē)的控制結構。
小車(chē)是怎么來(lái)控制的?為什么小車(chē)判斷出障礙物后可以自動(dòng)的繞開(kāi)?
理論:控制工程——處理自動(dòng)控制系統各種工程實(shí)現問(wèn)題的綜合性工程技術(shù)。包括對自動(dòng)控制系統提出要求(即規定指標)、進(jìn)行設計、構造、運行、分析、檢驗等過(guò)程。它是在電氣工程和機械工程的基礎上發(fā)展起來(lái)的。
閉環(huán)控制:閉環(huán)控制有反饋環(huán)節,通過(guò)反饋系統是系統的精確度提高,響應時(shí)間縮短,適合于對系統的響應時(shí)間,穩定性要求高的系統。
開(kāi)環(huán)控制:開(kāi)環(huán)控制沒(méi)有反饋環(huán)節,系統的穩定性不高,響應時(shí)間相對來(lái)說(shuō)很長(cháng),精確度不高,使用于對系統穩定性精確度要求不高的簡(jiǎn)單的系統。
一般稍微復雜一點(diǎn)的機器人小車(chē)都是閉環(huán)控制,也就是說(shuō)它有一個(gè)反饋機制,會(huì )根據自己配備的各種傳感器來(lái)讀取環(huán)境信息,并且根據這些環(huán)境信息來(lái)決定自己下一步的行動(dòng),決定好后將行動(dòng)指令發(fā)給執行系統,使機器人做出合適的動(dòng)作。當然也有的機器人小車(chē)是開(kāi)環(huán)控制,我就見(jiàn)過(guò)一個(gè)機器人小車(chē)配了一支筆,將機器人放在紙上,機器人一轉,刷的一下在紙上畫(huà)出一個(gè)圈來(lái),當然由于摩擦力和機械誤差等原因,畫(huà)出來(lái)的圓圈可能不閉合,也可能不圓。不過(guò)人家阿Q都說(shuō)了:“孫子才畫(huà)的圓呢……”
有點(diǎn)迷糊?沒(méi)關(guān)系,其實(shí)簡(jiǎn)單一點(diǎn)說(shuō)就是這樣:機器人可以分為三部分——傳感器部分、控制器部分、執行器部分。
傳感器部分:機器人用來(lái)讀取各種外部信號的傳感器,以及控制機器人行動(dòng)的各種開(kāi)關(guān)。好比人的眼睛、耳朵等感覺(jué)器官。
控制器部分:接收傳感器部分傳遞過(guò)來(lái)的信號,并根據事前寫(xiě)入的決策系統(軟件程序),來(lái)決定機器人對外部信號的反應,將控制信號發(fā)給執行器部分。好比人的大腦。
執行器部分:驅動(dòng)機器人做出各種行為,包括發(fā)出各種信號(點(diǎn)亮發(fā)光二極管、發(fā)出聲音)的部分,并且可以根據控制器部分的信號調整自己的狀態(tài)。對機器人小車(chē)來(lái)說(shuō),最基本的就是輪子。這部分就好比人的四肢一樣。
好的,現在我們來(lái)分析一下機器人小車(chē)的避障行為控制:機器人正在行走過(guò)程中(人在路上走),忽然接收到裝在機器人前部的傳感器發(fā)來(lái)的一個(gè)“左前方有障礙物”的信號(人眼發(fā)現左前方有一根電線(xiàn)桿),我們事先寫(xiě)在機器人控制芯片中的程序算法要求機器人發(fā)現左前方有障礙物就往右邊轉(人發(fā)現左前方有電線(xiàn)桿就應該往右躲——什么,你還要繼續往前走?你牛!那我就等著(zhù)聽(tīng)響了,哦,原來(lái)你只是想去看上面的小廣告……),控制芯片對機器人的驅動(dòng)器——或是輪子,或是雙足——發(fā)出向右轉的指令(人大腦發(fā)出向右轉的指令,通俗點(diǎn)說(shuō)就是“拐了拐了”),此時(shí)機器人的執行器部分應該立即響應控制器的指令,改變自己的狀態(tài),使機器人的前進(jìn)方向改變,避開(kāi)障礙物(恭喜你,躲開(kāi)了電線(xiàn)桿)。
怎么樣,是不是有了點(diǎn)機器“人”的意思?
那么這三部分是怎么聯(lián)系起來(lái)的呢?很簡(jiǎn)單:電!其實(shí)機器人小車(chē)就是一個(gè)電子作品,傳感器將外部的光信號、聲音信號、溫度信號等全部轉換為控制部分可以接受的電信號,控制系統發(fā)出的指令也是各種電信號,通過(guò)執行部分轉變?yōu)殡姍C輸出的扭矩、聲音、光信號等等。
下面我來(lái)分別介紹一下這三個(gè)部分。
傳感器是機器人的眼睛,想要小車(chē)完成不同的任務(wù)就要配備各種不同的傳感器。
現在市場(chǎng)上林林總總的傳感器數不勝數,一般個(gè)人機器人愛(ài)好者經(jīng)常使用的有碰撞檢測傳感器(碰撞開(kāi)關(guān))、紅外測障傳感器、紅外測距傳感器、光敏電阻、電子溫度計、電子指南針等等。
一般機器人用的傳感器返回的信號分兩種:一種返回值很簡(jiǎn)單,只有兩個(gè)狀態(tài):“有”或者“沒(méi)有”;“是”或者“不是”;“0”或者“1”。我一般習慣把這種量稱(chēng)為“狀態(tài)量”。它所反映的是一種狀態(tài),只是簡(jiǎn)簡(jiǎn)單單的“是”或“否”。比如“機器人左邊有沒(méi)有障礙物”,“有沒(méi)有聲音信號”等。還有一種返回值返回的是一個(gè)已知范圍內任意值,比如一只光敏電阻返回的信號就可能是0~5V范圍內的任意電壓信號。我一般把這種量稱(chēng)為“強度量”。它所反映的是一個(gè)有效范圍內的強度。比如“機器人左邊的障礙物有多遠”,“現在的聲音信號有多強”等。
“狀態(tài)量”反映的信息較簡(jiǎn)單,相應的傳感器也較簡(jiǎn)單,成本較低。而“強度量”反映的信息則較豐富,相應的傳感器的成本就會(huì )比較高,同時(shí)給控制上也帶來(lái)了更大的靈活性和復雜性。
下面我們來(lái)看一些常用的傳感器:

碰撞開(kāi)關(guān):電路常開(kāi),碰到障礙物后連通,可以用來(lái)檢測機器人是否發(fā)生碰撞。

光敏電阻:光敏電阻器是利用半導體的光電效應制成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻減小,入射光弱,電阻增大。光敏電阻器一般用于光的測量、光的控制和光電轉換(將光的變化轉換為電的變化)??梢杂脕?lái)檢測光線(xiàn)強度。

紅外測障傳感器:紅外測障傳感器利用紅外線(xiàn)遇到障礙物會(huì )反射的原理,來(lái)檢測某一方向上是否有障礙物的存在。

紅外測距傳感器:紅外測距傳感器利用紅外信號遇到障礙物距離的不同反射的強度也不同的原理,進(jìn)行障礙物遠近的檢測。紅外測距傳感器具有一對紅外信號發(fā)射與接收二極管,發(fā)射管發(fā)射特定頻率的紅外信號,接收管接收這種頻率的紅外信號。

超聲波測距傳感器:超聲波測距傳感器利用聲音在空氣中的傳輸距離和傳輸時(shí)間成正比的原理,通過(guò)檢測不同遠近的反射面對超聲波反射回去的時(shí)間不同來(lái)檢測障礙物的距離。
對于傳感器,很多人覺(jué)得只要看看文檔,知道怎么用了就行。但我的建議是:不但要知道怎么用,還要知道其檢測原理。只有深刻的理解了傳感器的檢測原理,才能具有更好的發(fā)散性思維。我舉一個(gè)例子:當初在學(xué)校開(kāi)展機器人滅火比賽,我們用了廠(chǎng)家提供的地面灰度傳感器依靠可見(jiàn)光反射來(lái)檢測地面白線(xiàn),效果一直不是很理想。后來(lái)有同學(xué)仔細研究了當時(shí)電機上配備的光電編碼器,發(fā)現其原理就是利用紅外線(xiàn)在不同顏色表明上反射率不同檢測高速旋轉的電機上黑白相間的碼盤(pán)來(lái)測出電機的旋轉速度,動(dòng)手將光電編碼器上的紅外檢測模塊拆下來(lái)裝在機器人底部,用來(lái)檢測地面白線(xiàn),檢測效果一下子好了很多。
購買(mǎi)途徑:當地的電子市場(chǎng),或是網(wǎng)上購買(mǎi)(現在很多機器人商家都有各種各樣的傳感器提供,其實(shí)原理和適用范圍都差不多,很多都可以互換通用)。購買(mǎi)時(shí)需要注意的是傳感器的電壓范圍和有效范圍。
終極開(kāi)發(fā):圖像識別 依靠一只攝像頭,根據攝像頭返回的視頻信號,計算出各個(gè)不同物體距自己的距離以及其運動(dòng)速度等等。如果你可以邁入這一步,那么,有一門(mén)叫做“機器視覺(jué)”的學(xué)科的大門(mén)也就向你敞開(kāi)了。
-----------------------------------------
作者:胡泊
如何著(zhù)手制作一個(gè)機器人小車(chē)--給初學(xué)者【下】
適合機器人的控制芯片有很多:?jiǎn)纹瑱C、DSP、甚至我們計算機上所用的CPU,都可以。不過(guò)我們這里主要介紹的針對機器人小車(chē)的技術(shù),所以把其他的先放一放,讓我們把注意力放到物美價(jià)廉的單片機上來(lái)。
首先還是理論課,不要抱怨,我的信條是:不懂理論的開(kāi)發(fā)者永遠只能是一個(gè)拼裝師。
單片機:單片機又稱(chēng)單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計算機系統集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習、應用和開(kāi)發(fā)提供了便利條件。

小芯片有大智慧
單片機是自動(dòng)控制系統中應用非常廣泛的控制芯片,現在就在我們身邊的許多的電器中都有單片機的身影。想自己動(dòng)手制作機器人的話(huà),相應的單片機知識是必不可少的。
系統的單片機知識我這里不想多說(shuō),想要對單片機系統有一個(gè)深入的理解,還是要找一本比較好的單片機教材一頁(yè)一頁(yè)的看下去,網(wǎng)上的任何“技巧”“快速入門(mén)”(包括本文)都只能算是水果、零食之類(lèi),閑暇無(wú)事時(shí)可以拿來(lái)開(kāi)開(kāi)胃,真正想要吃飽吃好,還是要用大餅卷饅頭就著(zhù)米飯吃才行。
我這里只提一些基礎的入門(mén)概念,給真正的入門(mén)者起一點(diǎn)拋磚引玉的作用。
一塊我們剛剛從商家手里拿到的單片機芯片,還是一塊空白,什么也做不了。如同一個(gè)剛出世的孩子,我們開(kāi)發(fā)人員要做的,就是教會(huì )單片機處理各種各樣的問(wèn)題,給單片機配備上各種各樣的擴展工具,使單片機可以將復雜的問(wèn)題簡(jiǎn)單化,數字化。
單片機開(kāi)發(fā)涉及兩方面:硬件、軟件。
單片機不同于其他電器,拿過(guò)插銷(xiāo)直接插在電源上就可以使用,一塊空白的單片機想要使用,還需要一些其他的電路來(lái)支持。一般來(lái)說(shuō),最基本的電路就是單片機最小系統:

所謂的單片機最小系統就是指可以讓單片機工作起來(lái)的最基本的電路,在所有的單片機系統中,你都可以找到類(lèi)似的電路。至于它的原理,我這里就不累述了,找本書(shū)看去吧。
我再介紹一些做機器人需要的擴展電路:
程序下載電路:?jiǎn)纹瑱C最終需要程序來(lái)控制,一般都是在PC上編寫(xiě)好程序,通過(guò)下載線(xiàn)來(lái)下載到單片機中執行。下載需要一個(gè)電路來(lái)支持,以前的通常做法是連接到PC的串口,不過(guò)現在有很多通過(guò)USB下載程序的電路。
以上兩個(gè)電路就是機器人開(kāi)發(fā)所需要的最基本的單片機電路,其他也許還需要一些電機驅動(dòng)、A/D轉換、開(kāi)關(guān)選擇等電路。
也許你有些迷糊,可以有一點(diǎn)感到棘手了,這些電路對于一個(gè)從未接觸過(guò)單片機的新手來(lái)說(shuō)可能有些頭大,沒(méi)關(guān)系,現在市場(chǎng)上有很多成熟的單片機開(kāi)發(fā)系統出售,價(jià)格極為低廉,如果不想在底層電路上多花精力的話(huà),到一些電子商務(wù)網(wǎng)站上搜索一下“單片機開(kāi)發(fā)板”,一百多就可以買(mǎi)到功能十分齊全,贈送軟件+教程還有技術(shù)支持服務(wù)的適用開(kāi)發(fā)板了(當然,你如果自己動(dòng)手的話(huà),成本會(huì )更低)。
軟件:說(shuō)白了就是你自己給單片機開(kāi)發(fā)的智能程序,讓機器人可以具有最簡(jiǎn)單的智能。不要看到“智能”這兩個(gè)字就覺(jué)得多么高深,看到前面有電線(xiàn)桿知道要拐,這,就是智能。
不同的單片機需要不同的開(kāi)發(fā)環(huán)境,這個(gè)要在購買(mǎi)的時(shí)候就弄清楚,很多單片機公司都有自己配套的開(kāi)發(fā)軟件,很多都是可以在公司網(wǎng)站上免費下載。一般來(lái)說(shuō),國外的很多芯片公司在自己的網(wǎng)站上都有非常豐富和適用的資料,抱本英漢詞典,將網(wǎng)站上的資料瀏覽一下,你會(huì )發(fā)現一切都變得十分簡(jiǎn)單。
以前一說(shuō)起單片機開(kāi)發(fā)就會(huì )想起匯編語(yǔ)言,那時(shí)候的芯片成本很高,芯片的運算開(kāi)銷(xiāo)和存儲開(kāi)銷(xiāo)都要精打細算,高效率的匯編語(yǔ)言是單片機的最佳選擇。而現在隨著(zhù)芯片成本的降低,開(kāi)銷(xiāo)問(wèn)題已經(jīng)不再是制約單片機程序開(kāi)發(fā)的瓶頸,所以很多類(lèi)C或Basic語(yǔ)言的開(kāi)發(fā)環(huán)境都已經(jīng)出現。只要有一定的程序開(kāi)發(fā)基礎,對單片機的各種引腳足夠熟悉,那么相信寫(xiě)出一個(gè)簡(jiǎn)單的智能程序將是很容易的事。
購買(mǎi)途徑:電子市場(chǎng)或是網(wǎng)購?,F在單片機的價(jià)格已經(jīng)十分低廉,價(jià)格上無(wú)需考慮太多,關(guān)鍵是要選擇一款合適的,資料較多,容易上手的就可以。就機器人開(kāi)發(fā)來(lái)說(shuō),要滿(mǎn)足以下幾個(gè)條件:有程序下載線(xiàn),可以方便的將程序從PC上下載到單片機上;集成了A/D轉換;有PWM輸出(便于控制電機)。
終極開(kāi)發(fā):?jiǎn)纹瑱C終究能力有限,想要做一些運算量較大的應用時(shí)(例如音頻視頻的處理),就需要一些更高端的芯片,比如DSP等,或者干脆把你的電腦機箱加上幾個(gè)輪子,讓你的電腦跑起來(lái)吧!
相關(guān)名詞:C51,PIC,AVR,PWM……啥意思?自己搜去!
[四]執行器部分
對于機器人小車(chē)來(lái)說(shuō),最基本的執行器部分就是輪子。要有輪子,小車(chē)才能被稱(chēng)為小車(chē)。這部分可能也是各位愛(ài)好者最發(fā)愁的部分,傳感器和控制器到處都有的賣(mài),而一般適合機器人小車(chē)上用的輪子,機械結構,車(chē)體等部分卻很難尋覓。找人訂做成本極高,現在很多朋友都用玩具小車(chē)來(lái)進(jìn)行改裝。其實(shí)現在已經(jīng)開(kāi)始有機器人小車(chē)底盤(pán)出售,不過(guò)在電子市場(chǎng)很難見(jiàn)到,多數都要在網(wǎng)上一些教育機器人公司的網(wǎng)店里郵購。
機器人常用的電機分為三種:普通的直流電機、步進(jìn)電機、伺服電機。

直流電機:輸出或輸入為直流電能的旋轉電機,稱(chēng)為直流電機,它是能實(shí)現直流電能和機械能互相轉換的電機。當它作電動(dòng)機運行時(shí)是直流電動(dòng)機,將電能轉換為機械能;作發(fā)電機運行時(shí)是直流發(fā)電機,將機械能轉換為電能。

步進(jìn)電機:步進(jìn)電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€(xiàn)位移的開(kāi)環(huán)控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響,即給電機加一個(gè)脈沖信號,電機則轉過(guò)一個(gè)步距角。這一線(xiàn)性關(guān)系的存在,加上步進(jìn)電機只有周期性的誤差而無(wú)累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電機來(lái)控制變的非常的簡(jiǎn)單。

%20伺服電機:伺服電動(dòng)機又稱(chēng)執行電動(dòng)機,在自動(dòng)控制系統中,用作執行元件,把所收到的電信號轉換成電動(dòng)機軸上的角位移或角速度輸出。分為直流和交流伺服電動(dòng)機兩大類(lèi),其主要特點(diǎn)是,當信號電壓為零時(shí)無(wú)自轉現象,轉速隨著(zhù)轉矩的增加而勻速下降。
%20這三種電機一般來(lái)說(shuō)成本是 直流<步進(jìn)<伺服,控制精度是直流<步進(jìn)<伺服(當然也有不一般的時(shí)候,并不是說(shuō)伺服電機就一定比步進(jìn)電機便宜)。
%20初學(xué)者對單片機控制電機不太熟悉,起步可以先用單片機輸出的PWM信號來(lái)控制直流電機,更進(jìn)一步可以試著(zhù)控制步進(jìn)電機,以求更高的控制精度。對于小車(chē)的運動(dòng)驅動(dòng)來(lái)說(shuō),一般可以選用直流電機或步進(jìn)電機,而伺服電機一般用在機械臂上,用來(lái)得到精確的旋轉角度。
%20一般單片機要通過(guò)驅動(dòng)電路來(lái)控制步進(jìn)電機、伺服電機。有專(zhuān)門(mén)的模塊來(lái)負責驅動(dòng)電機,單片機只需要為這樣的模塊提供一定頻率的脈沖和控制信號就可以了。網(wǎng)上相關(guān)的資料很多,大家需要的話(huà)可以去自己找一下。
%20關(guān)于小車(chē)究竟如何利用電機來(lái)驅動(dòng),這里有一篇文章已經(jīng)詳細的介紹了:
以上就是我寫(xiě)的一點(diǎn)經(jīng)驗之談,沒(méi)有寫(xiě)什么具體的技術(shù),只是將新手可能會(huì )感到迷茫的一些問(wèn)題列出來(lái),就像我在前面說(shuō)的,這篇小文章只能算是一點(diǎn)小點(diǎn)心,真正想要成為機器人高手,還是需要埋頭啃一些專(zhuān)業(yè)書(shū)籍。學(xué)習沒(méi)有捷徑,如果你走了捷徑,那只能說(shuō)明你比別人少看了風(fēng)景。
這篇文章的目的只是想讓一些對機器人有興趣而又不知如何著(zhù)手的朋友知道制作機器人需要些什么東西,需要哪些知識準備,不入大家法眼,只是希望能有更多的朋友加入到機器人開(kāi)發(fā)的行列中,當然了,我們的作品基本上不會(huì )有什么科技價(jià)值,也不會(huì )填補什么技術(shù)空白,不會(huì )為社會(huì )主義建設添什么磚加什么瓦,純粹只是自?shī)首詷?lè )。不過(guò)我想,當更多的人——尤其是學(xué)生,以制作機器人作為一種娛樂(lè )項目的時(shí)候,應該也是一件令人高興的事吧,呵呵。
-------------------------------------------------------
聯(lián)系客服