官术网_书友最值得收藏!

第1章 機器人來了

01 從小車開始你的機器人愛好之旅

◇胡泊

很多初學者可能都看過一些機器人的視頻或現場比賽,無論是“奧特曼”、“大黃蜂”,還是近年的“WALL-E”(見圖1.1),往往都會勾起我們兒時的美好回憶,也會激起自己動手制作機器人的念頭。但很多人并不是嵌入式開發的業內人士,甚至沒有聽說過單片機、步進電機這些名詞,看著別人制作的滿地亂跑的各種機器人,頗有無處下手的感覺。有的人一開始就準備做一個雙足人形機器人,可以穩步行走,可以靠攝像頭來讀取環境信息,可以語音識別,當然,最好還可以變形……

圖1.1 電影《機器人總動員》中的機器人小車WALL-E

作為一名機器人愛好者,我中肯地提出建議:從小車開始你的機器人愛好之旅吧!

人形機器人可以說是一個系統的大工程,不是一個人玩得起來的,而且資金上的投入也是不可計量的。一個人形機器人的成型產品最少需要幾千元才能買到——這還不包括機器人產品在開發過程中可能出現的種種錯誤導致的額外成本投入。而機器人小車就不同了,在技術上門檻較低,資金投入也少,市場上的各種產品和零配件的支持也較多,雖然簡單,但可以實現的功能可一點也不少,是我們進入機器人天地非常合適的入門工具。

本文中,我們以機器人小車為載體,來解讀機器人的一些基礎知識。如果你是曾經自己動手做過機器人的高手,那么可以繞行。

1.1 小車的整體控制系統

小車是如何控制的?為什么小車判斷出障礙物后可以自動繞開?為什么小車可以“聽話”地按照路線行進?要解答這些問題,我們先來了解兩個概念。

閉環控制:指由信號正向通路和反饋通路構成閉合回路的自動控制系統,又稱反饋控制系統。反饋控制系統可以使系統的精確度提高,響應時間縮短,適合于對系統的響應時間和穩定要求高的系統。

開環控制:這是最簡單的一種控制方式,是指受控客體不對控制主體產生反作用的控制過程。開環控制沒有反饋環節,系統的穩定度不高,響應時間相對來說很長,精確度也不高,通常使用于對系統穩定性、精確度要求不高的簡單系統。

一般稍微復雜一點的機器人小車都采用閉環控制,也就是說有一個反饋機制,會根據自己配備的各種傳感器來讀取環境信息,并且根據這些環境信息來決定自己下一步的行動,再將行動指令發給執行系統,使機器人小車做出合適的動作。當然也有的機器人小車采用開環控制方式,我就見過一個機器人小車,配了一支筆,將小車放在紙上,小車一轉,刷地一下在紙上畫出一個圈來。當然,由于摩擦力和機械誤差等原因,畫出來的圓圈可能不閉合,也可能不圓,不過人家阿Q都說了:“孫子才畫得圓呢……”

有點迷糊?沒關系,其實簡單一點說:機器人可以分為3部分——傳感器部分、控制器部分、執行器部分。

在傳感器部分,有機器人用來讀取各種外部信號的傳感器,以及控制機器人行動的各種開關。好比人的眼睛、耳朵等感覺器官。

控制器部分用于接收傳感器部分傳遞過來的信號,并根據事前寫入的決策系統(軟件程序),來決定機器人對外部信號的反應,將控制信號發給執行器部分。好比人的大腦。

執行器部分讓機器人可以完成各種動作,包括前進、后退、左轉、右轉、點亮發光二極管、發出聲音等,并且可以根據控制器輸出的信號調整自己的狀態。對機器人小車來說,最基本的執行器就是輪子。這部分就好比人的四肢一樣。

好的,現在我們來分析一下機器人小車的避障行為控制。機器人小車正在行走過程中(人在路上走),忽然接收到裝在小車前部的傳感器發來的一個“左前方有障礙物”的信號(人眼發現左前方有一根電線桿),我們事先寫在機器人控制芯片中的程序算法要求機器人發現左前方有障礙物就往右邊轉(人發現左前方有電線桿就應該往右躲——什么,你還要繼續往前走?你牛!那我就等著聽響了,哦,原來你只是想去看上面的小廣告……),控制芯片對小車的驅動器——輪子——發出向右轉的指令(人大腦發出向右轉的指令,通俗點說就是“拐了、拐了”),此時機器人的執行器部分應該立即響應控制器的指令,改變自己的狀態,使機器人的前進方向改變,以避開障礙物(恭喜你,躲開了電線桿)。

怎么樣,是不是有了點機器“人”的意思?

那么這3部分是怎么聯系起來的呢?很簡單——電!機器人小車就是一個機電結合的作品,傳感器將外部的光信號、聲音信號、溫度信號等全部轉換為控制部分可以接收的電信號,控制系統發出的指令也是各種電信號,通過執行部分轉變為電機輸出的扭矩、聲音、光信號等。

下面我來分別介紹一下這3個部分。

1.2 傳感器部分

傳感器是機器人的眼睛,想要小車完成不同的任務就要配備各種不同的傳感器。

電子市場上林林總總的傳感器數不勝數,通常機器人愛好者最經常使用的傳感器有碰撞檢測傳感器(碰撞開關)、紅外測障傳感器、紅外測距傳感器、光敏電阻、電子溫度計、電子指南針等。

機器人用的傳感器返回的信號分兩種:一種返回值很簡單,只有兩個狀態:“有”或者“沒有”、“是”或者“不是”、“0”或者“1”。我們一般習慣把這種量稱為“狀態量”。它所反映的是一種狀態,比如“機器人左邊有沒有障礙物”,“有沒有聲音信號”等。還有一種返回值,返回的是一個已知范圍內任意值,比如,1個光敏電阻返回的信號就可能是0~5V范圍內的任意電壓信號。我們一般把這種量稱為“強度量”。它所反映的是一個有效范圍內的強度,比如“機器人左邊的障礙物有多遠”,“現在的聲音信號有多強”等。

“狀態量”反映的信息較簡單,相應的傳感器也較簡單,成本較低。而“強度量”反映的信息較豐富,相應的傳感器的成本就會比較高,同時給控制上也帶來了更大的靈活性和復雜性。

對于傳感器,很多人覺得只要看看相關技術文檔,知道怎么用了就行。但我的建議是:不但要知道怎么用,還要知道其檢測原理。只有深刻地理解了傳感器的檢測原理,才能具有更好的發散思維。

舉一個例子:當初筆者在學校參加機器人滅火比賽,我們用了廠家提供的地面灰度傳感器,依靠可見光反射來檢測地面白線,效果一直不是很理想。后來有同學仔細研究了當時電機上配備的光電編碼器,發現其原理就是利用紅外線在不同顏色表面上的反射率不同,檢測高速旋轉的電機上黑白相間的碼盤,來測出電機的旋轉速度的,于是就動手將光電編碼器上的紅外檢測模塊拆下來,裝在機器人底部,用來檢測地面白線,檢測效果一下子好了很多。

再說說傳感器的購買途徑。各地的電子市場或是網上商店都可以買到一些常用的傳感器(現在很多機器人商家都提供各種各樣的傳感器,其實原理和適用范圍都差不多,很多都可以互換通用)。購買時需要注意的是傳感器的電壓范圍和有效范圍。

說到機器人傳感器的“終極開發”,圖像識別算一個,依靠一只攝像頭,根據攝像頭返回的視頻信號,計算出各個不同物體距自己的距離,并調整相應的運動速度和方向等。如果你可以跨過這一步,那么,有一門叫作“機器視覺”的學科大門也就向你敞開了。

1.3 控制器部分

適合機器人的控制芯片有很多,單片機、DSP,甚至我們計算機上所用的CPU,都可以。不過我們這里主要介紹的針對機器人小車的技術,所以其他的先放一放,讓我們把注意力放到物美價廉的單片機上來,小芯片有大智慧。

首先還是理論課,不要抱怨,我的信條是:不懂理論的開發者永遠只能是一個拼裝師。

單片機又稱微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統集成到一顆芯片上(見圖1.2)。概括地講,一顆芯片就成了一臺計算機。它的體積小、質量輕、價格便宜,為機器人學習、開發和應用提供了便利條件。

圖1.2 單片機可以作為機器人的控制芯片

單片機是自動控制系統中應用非常廣泛的控制芯片,在我們身邊的許多的電器中都有單片機的身影。想自己動手制作機器人的話,相應的單片機知識是必不可少的。

系統的單片機知識我這里不想多說,單片機不同于其他電器,拿過插頭直接插在電源上就可以使用。一塊空白的單片機想要使用,還需要一些其他的電路來支持。一般來說,最基本的電路就是單片機最小系統,它是可以讓單片機工作起來的最基本的電路。在所有的單片機系統中,你都可以找到類似的電路。至于它的原理,這里就不贅述了。

單片機最終需要程序來控制,一般都是在PC上編寫好程序,通過下載線來下載到單片機中執行。下載需要一個電路來支持,以前的通常做法是連接到PC的串口,不過現在有很多通過USB下載程序的電路。

機器人開發除了需要最基本的單片機電路,其他還需要一些電機驅動、A/D轉換、開關選擇等電路。

也許你感到有一點棘手了,這些電路對于一個從未接觸過單片機的新手來說可能有些頭大,沒關系,現在市場上有很多成熟的單片機開發系統出售,價格極為低廉。如果不想在底層電路上多花精力的話,到網上搜索一下“單片機開發板”,一百多元就可以買到功能十分齊全,還贈送軟件+教程及技術支持服務的適用開發板了(當然,你如果自己動手的話,成本會更低)。

至于軟件,說白了就是你自己給單片機設計的指令程序,讓機器人可以具有最簡單的智能。不要看到“智能”這兩個字就覺得多么高深,看到前面有電線桿知道要拐,這,就是智能。

不同的單片機需要不同的開發環境,這個要在購買的時候就弄清楚,很多單片機公司都有自己配套的開發軟件,不少都是可以在公司網站上免費下載的。一般來說,國外的很多芯片公司在自己的網站上都有非常豐富和適用的資料,抱本英漢詞典,將網站上的資料瀏覽一下,你會發現,一切都將變得十分簡單。

以前一說起單片機開發,我們就會想到匯編語言,那時候的芯片成本很高,芯片的運算開銷和存儲開銷都要精打細算,高效率的匯編語言是單片機的最佳選擇。而現在,隨著芯片成本的降低,開銷問題已經不再是制約單片機程序開發的瓶頸,所以很多類C或Basic語言的開發環境都已經出現。只要有一定的程序開發基礎,對單片機的各種引腳足夠熟悉,那么寫出一個簡單的智能程序就不是難事。

現在單片機的價格已經十分低廉,價格上無需考慮太多,關鍵是要選擇一款合適的、資料較多、容易上手的。就機器人開發來說,要滿足以下幾個條件:有程序下載線,可以方便地將程序從PC上下載到單片機上;集成了A/D轉換;有PWM輸出(便于控制電機)。

當然,單片機終究能力有限,想要做一些運算量較大的應用(如音頻、視頻的處理)時,就需要一些更高端的芯片,比如DSP等,或者干脆把你的電腦機箱加上幾個輪子,讓你的電腦跑起來吧!

相關名詞:C51、PIC、AVR、PWM……啥意思?自己搜去!

1.4 執行器部分

對于機器人小車來說,最基本的執行器部分就是輪子。要有輪子,小車才能被稱為小車。這部分可能也是各位愛好者最發愁的部分,傳感器和控制器到處都有賣,而一般適合機器人小車上用的輪子、機械結構、車體等部分卻很難尋覓。找人訂做成本極高,現在很多朋友都用玩具小車來進行改裝。其實現在已經開始有機器人小車底盤(見圖1.3)出售,不過在電子市場很難見到,在一些教育機器人公司的網店里可以購買到。

圖1.3 機器人小車的車體

說到輪子,就不得不提到電機,那是機器人的“發動機”。機器人常用的電機分為三種:普通的直流電機、步進電機、伺服電機。

步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元件(見圖1.4)。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響。給電機加一個脈沖信號,電機就轉過一個步進角。這一線性關系的存在,加上步進電機只有周期的誤差而無累積誤差等特點,使得在速度、位置等機器人控制領域,用步進電機來實現相應控制,變得非常簡單。

圖1.4 步進電機

伺服電機又稱執行電機,在自動控制系統中,用作執行件,把所收到的電信號轉換成電動機軸上的角位移或角速度輸出(見圖1.5)。分為直流和交流伺服電機兩大類,其主要特點是,當信號電壓為零時無自轉現象,轉速隨著轉矩的增加而勻速下降。

圖1.5 伺服電機

一般來說,這三種電機的成本排序是:直流<步進<伺服,控制精度排序是:直流<步進<伺服(當然也有不一般的時候,有時伺服電機不一定比步進電機便宜)。

初學者對單片機控制電機不太熟悉,起步可以先用單片機輸出的PWM信號來控制直流電機,更進一步可以試著控制步進電機,以求更高的控制精度。對于小車的運動驅動來說,一般可以選用直流電機或步進電機,而伺服電機一般用在機械臂上,用來得到精確的旋轉角度。

通常單片機要通過驅動電路來控制步進電機、伺服電機。有專門的模塊來負責驅動電機,單片機只需要為這樣的模塊提供一定頻率的脈沖和控制信號就可以了。網上相關的資料很多,大家需要的話可以自己去找一下。

各種電機可通過電子市場、五金商店、網購等途徑買到,也可拆解舊家電得到。

當你可以自如地控制機器臂的時候,你就會發現,制作一個類人機器人將不再遙遠。

其他的常用驅動裝置還有機械臂、機械手等,裝在小車上去抓取東西。可以自己利用伺服電機開發(初學者最好繞行),也可以選擇市面上的成型產品,這些產品一般都有完整的文檔,仔細閱讀,使用起來都是很方便的。

1.5 后記

最后再介紹一點電子電路開發的東西吧。提起電路,可能很多朋友首先想起來的就是墨綠色的印制電路板,現在很多電子市場都可以根據你的電路圖為你加工印制電路板。不過在設計階段,很多東西都會改來改去,每次都去重新制作電路板,效率和成本都是大問題,一般在電路開發中,有一種專門的實驗板(也叫面包板,見圖1.6~圖1.8),適合在開發階段使用。

圖1.6 面包板

圖1.7 面包板可以方便地修改電路

圖1.8 用面包板也能做出機器人小車

這篇文章的目的只是想讓一些對機器人有興趣而又不知如何著手的朋友知道制作機器人需要哪些知識儲備,沒有寫什么具體的技術,只是將新手可能會感到迷茫的一些問題列出來。想要成為機器人高手,還是需要埋頭“啃”一些專業書籍和不斷動手實踐。

學習沒有捷徑,如果你走了捷徑,那只能說明你比別人少看了風景。

希望能有更多的朋友加入到機器人開發的行列中,如果更多的人——尤其是學生,以制作機器人作為一種娛樂項目,應該也是一件令人高興的事吧。

主站蜘蛛池模板: 玉门市| 伊金霍洛旗| 鄂尔多斯市| 商南县| 依兰县| 茌平县| 巴中市| 玉溪市| 班戈县| 尼玛县| 威远县| 酒泉市| 独山县| 固原市| 大名县| 通榆县| 土默特右旗| 静宁县| 博湖县| 花垣县| 宁津县| 如皋市| 宁安市| 石楼县| 博客| 兴义市| 焦作市| 集安市| 南丹县| 青龙| 封开县| 应用必备| 昭苏县| 鄂伦春自治旗| 宜川县| 余江县| 青河县| 沁阳市| 溧水县| 益阳市| 长沙县|