基於樹莓派如何開發機器人

ADVERTISEMENT

導語:樹莓派是為學習計算機程式設計教育而設計的一種微型電腦,其系統是基於Linux的, 雖然隻有信用卡大小,但視訊、音訊等功能通通皆有,可謂是“麻雀雖小,五臟俱全”。因此自問世以來,受到了眾多計算機發燒友和創客的追捧。

樹莓派可以用來開發各種硬體產品,此次雷鋒網硬創公開課邀請到國際資深創客,莫比嗨客樹莓派智慧機器人有限公司創始人兼CEO劉端陽,從樹莓派的起源講起,一步步教我們如何開發出一款機器人。

嘉賓介紹:

劉端陽,莫比嗨客樹莓派智慧機器人有限公司創始人兼CEO,國際資深創客。

以下內容整理自劉端陽在雷鋒網硬創公開課的分享。關注雷鋒網()旗下微信公眾號「新智造」,可獲取嘉賓完整PPT。

公開課視訊:

計算的歷史與計算思維

計算的過程中經歷了這麼幾個發展:最早的時候是應用於自動式,比如彈道導彈的計算,但是隨著計算的發展,其有了更加寬廣範圍的應用,比如軍隊、政府、銀行等都會用到計算裝置。

計算裝置的發展歷史,按照公認的說法,分為大型機、小型機、PC階段,以及現在基於Arm體繫結構的手機時代。那麼,反向思考的話,未來的硬體裝置是什麼樣的趨勢呢?

小型化

圖1 樹莓派大小

大家可以在PPT上看到,我放了一個美元的圖示和一個小的裝置,這個小的裝置叫樹莓派。可以看到這個裝置是非常小的,但它的效能卻非常強,可以說隨著電子裝置二極體的高度整合,未來裝置將趨向小型化。

量子化

圖2 Dwave

在電子化的基礎上,計算裝置另一個發展形式是量子化,最典型的是Dwave公司,它最後被Google收購了。

計算思維是什麼

計算思維(Computational Thinking)這個概念由CMU的周以真教授提出,剛開始大家都覺得雲裡霧裡的,其實它的核心就是:我們要用計算機的基本概念比如迭代、迴圈、Loof做整體的問題求解、系統設計和人類行為分析的一種思維活動。從這個角度來講,計算思維是基本問題解決之道。在生活中,比如我們經常去超市買東西,結賬時我們會排成一列進行結算,這與我們計算機的佇列是一樣的。

樹莓派(RPI)

的歷史

圖3 樹莓派的歷史

樹莓派的出現其實是一個偶然的事情,同時也是必然的事情。這個偶然是大家沒想到這個東西會這麼火,就連創始人Eben Epton也沒想到。那它的出現為什麼是必然的呢?

2006年Eben Epton發現一個問題,劍橋大學近期入學的學生程式設計能力普遍較低,原因是什麼呢?就是我們現有的“舒適的影象化程式設計”毀滅了創造的樂趣,於是他開始構思:我能不能做一種裝置讓學生有創造性的樂趣?之後Eben Epton和小夥伴一起設計了很多裝置,但都不符合要求。

2007年蘋果的iPhone釋出,世界迎來了網際網路時代。2008年樹莓派基金會設計了一款原型機,使用了Atmel的ATmega644,這個事件發生後,樹莓派基金會終於找到一個“好基友”:ARM晶片。現在很多移動裝置都使用ARM晶片,因為功耗小,所以它的電池是可以使用很長時間的。當然,這個東西設計出來後的產品推廣需要很長時間。所以,到2011年問題就出現了,當時英國的產業鏈是不完全的,所以Eben Epton找到了深圳的一家工廠,於是第一批50片Alpha電路板上線。2012年第一週,Eben Epton將電路板放在EBay上拍賣,結果10個電路板在Ebay上共籌集了16000英鎊,這讓他信心倍增,說明這種產品是非常受大家歡迎的。

ADVERTISEMENT

圖4 樹莓派1代

2012年2月29日樹莓派1代釋出,那時候要使用樹莓派系統還需要插入一個很大的SD卡,然後基於千兆網路就可以連線USB了,它主要是把GPIO介面給露出來了,因為大家知道以前的裝置都是整合在USB介面上的,所以那時候都是即插即拔的,現在突然露出來,那麼就需要很大的創造性了。

圖5 樹莓派結構和功能

左邊的樹莓派既可以接USB的介面,又能通過USB接鍵盤,把SD插入進去以後就可以寫入系統了。大家都知道作業系統在計算裝置上是非常關鍵的,因為它極大地降低整個應用開發的週期和成本,就是你在獨特的裝置上開發應用和在已經有了通用作業系統的裝置上開發應用的時間週期和難度是不同的。

右邊是Raspberry Pi 3 Model B。

樹莓派與

創客教育

1949年前,文盲的標誌是不識字;1970年前後,文盲的標誌是數理化不好;

1990年前後,文盲的標誌是英語不好;到了2013年,文盲的標誌則是不會程式設計。在這種環境下,創客成為一種新的時尚,因為創造成為市場。以機器人為依託的創客教育,樹莓派最後成為創客的首選,原因如下:

(1)RPI是電腦(2)價效比超高(3)體積小

MBH創客蜂巢是從樹莓派機器人開始起步的,在這裡聚集了很多創客,而想要成為一名創客,需要這些技能:

(1)長生劍:樹莓派-機器人大腦蛋白質

(2)碧月刀-Processing

(3)3D建模軟體-SketchUp等

(4)多情環-電路板設計

(5)葵花寶典-Python程式設計設計

(6)一指禪-機器學習(智慧的最直接的體現)

樹莓派與嵌入式裝置

樹莓派與微控製器

微控製器的功能比較單一,隻是為了某種特定意義而設計,而樹莓派是有作業系統的PC,功能全且效能強。

樹莓派與Arduino

樹莓派有作業系統,能使用Python開發,能執行高階演算法。

Arduino實時性強,普及比較廣泛。

樹莓派OS與Python程式設計

在樹莓派上,我們會將所有的程式碼寫入SD卡中,就是我們通常說樹莓派的系統是被燒進去的。那麼,樹莓派的系統都有哪些呢?

官方的系統是基於Debian 的Raspbian OS,有的時候推薦使用Ubuntu Mate系統。隨著樹莓派被廣泛地接受,微軟也開始支援樹莓派了,目前Win10 IOT 是支援的,同時Android也支援樹莓派。而樹莓派是裝有Linux系統的PC,所以天然地可以使用Python程式設計。Python在國內的普及率不是很高,但是在國外是被大量使用的,例如Google。在我的認知中Python隻有作業系統的驅動程式是不能寫的,其他所有程式都是可以寫的,比如開發WEB、嵌入式裝置等。

ADVERTISEMENT

什麼是機器人

能自動執行工作的機械裝置就叫機器人——首先,它是能夠自動的執行工作,其次是機械裝置,比如挖掘機,或者拖地的機器人。

一個機器人的組成部分包括機械裝置(執行機構)、感測裝置Sensors(傳動+感知)、控製系統(大腦)。

機器人如何工作

圖6 機器人工作原理

一句話概括:用Python程式碼,通過GPIO介面,去控製傳動和感知裝置,讓機械裝置按照預想的動作去執行任務。

如何一步步地構建一個機器人?

第一步就是組裝硬體,硬體組裝完後就是測試,會有專門的測試平臺來測試。測試完以後我們就要設計相應的軟體。

樹莓派GPIO介面與控製器

圖7 樹莓派GPIO介面

接下來我給大家重點講下樹莓派上比較特殊的,也就是樹莓派GPIO介面與控製器。GPIO對於樹莓派來說是很特別的,這也是吸引創客的主要原因。GPIO介面有40個pin和引腳,有的是接電壓和電流的,還有的是用於外接感測器的。外接感測器有時候會多於40個,那這個時候該怎麼辦呢?這個時候我們就需要做一些樹莓派的擴充套件板了。

圖8 樹莓派拓展板和叢集

左上角是我們MBH創客蜂巢自己生產的一個擴充套件板,當初我們想要做智慧農業和智慧家居工程,但是發現40個介面根本不夠,因為我們要接很多很多的感測器去感知整個空間裡的環境,比如溫度、溼度、酸鹼度等等。

這個擴充套件板有一個獨立的CPU,然後上面設計了很多的引腳。大家可以在我們的論壇上或官網上找到程式碼,這些我們都已經開源了。

我感覺最好玩的應該是圖中下部位置的擴充套件板了,它並沒有像樹莓派其他裝置一樣把GPIO介面用引腳給引出來,它隻是打了幾個孔。有人說我們是用更大的板子把所有的孔或Pi Zero裝置集在一起形成叢集一樣的擴充套件板,但是Pi Zero裝置是比較小的,如果要去擴充套件的話是可以插很多Pi Zero裝置的,比如你插100個,總體積也不會有什麼大的變化。所以,有的人就在這上面挖礦,也就是挖位元幣,還有人純粹把它當做叢集,相當於NOS,可以在裡面存入大量檔案,而且還是並行的處理方式,相當於你可以對你的檔案進行多重備份,而不用害怕它會丟失了。

大家都知道樹莓派和Python是可以天然地結合在一起的,所以天然的Python在GPIO介面上有庫:

sudo apt-get install python-dev

wget http://raspberry-gpio-python.googlecode.com/files/RPI.GPIO-0.5.3a.tar.gz

tar xvzf RPI.GPIO-0.5.3a.tar.gz

sudo pytho setup.py install

關於樹莓派的控製器,這裡我們主要講下步進電機。樹莓派的GPIO介面可以控製其他裝置,隻要你給它訊號,這個訊號不一定是脈衝訊號,可以是連續的或跳躍的各種訊號——給它規則的跳躍訊號就可以控製步進電機,不規則的訊號就可以控製其他傳動裝置或感應裝置。

樹莓派與感測器

圖9 常見感測器

ADVERTISEMENT

如果我們把機器人與人做類比的話,那麼感測器對應人又是什麼呢?感測器就像人類的器官一樣,可以聽、說、看、動。感測器種類是非常多的,我們可以通過GPIO介面或是擴充套件板將這些感測器接入到樹莓派中,而且可以用Python的庫控製它們。

常用的感測器有超聲波感測器、紅外感測器、溫溼度感測器。所謂感測器,就是能夠將感測訊號感知成普遍的電訊號的裝置。比如超聲波感測器,可以把聲波訊號對映為電訊號。

案例一:樹莓派打造無人機

圖10 基於樹莓派的無人機

這是我們自己設計的一款飛行機器人,現在也叫無人機。當時我們在翻譯一本書叫《樹莓派機器人藍圖》,其中第七章就是講飛行機器人的,但是它的飛控是用Pix hawk,而Pix hawk的價格非常昂貴,用完之後還不能做他用。於是我們想是不是可以用樹莓派去做無人機的飛控呢?前面我們也講過,樹莓派和程式碼其實構成了整個機器人的大腦,而無人機上的大腦就是飛控,它的螺旋槳被稱為執行機構,電動機就是傳輸機構。我們用這樣裝置做出來的飛控並不比Pix hawk或是Pix 4效能差。在這個過程中,剛開始我們的程式碼是用C語言寫的,寫完之後發現CPU的使用率會達到100%,不過後來經過優化整個CPU的使用率也不過8%,這也就驗證了樹莓派是完全可以用來做無人機的飛控的!

那麼,我們就以這個無人機為例,為大家講講如何用樹莓派來做飛控。

圖11 機器人工作佈線圖

我們用倒敘的方式來思考。首先,它要讓四個螺旋槳轉動,因為隻有螺旋槳轉動無人機才能起飛。而螺旋槳在轉動過程中要執行哪些工作呢?比如無人機在轉彎的時候怎麼辦?在這個時候就需要兩個螺旋槳轉動的速度快些,另外兩個螺旋槳轉動速度慢些。無人機在飛行過程中兩個螺旋槳是正轉,而另外兩個螺旋槳是反轉的,執行這些命令也需要感測。

現在大部分無人機都是由一個手柄,或者是手機APP來控製。這些控製裝置通過websocket來傳輸命令訊號,訊號在CPU上經過處理後,結果通知到GPIO介面,然後GPIO介面向傳動裝置傳送命令訊號,傳動裝置再向感知裝置傳送訊號。在無人機上,電機是傳動裝置,當GPIO介面向它傳送命令訊號後,螺旋槳會隨之正轉或反轉。

另外,無人機的平衡也非常關鍵。所以,我們在無人機上加了一個陀螺儀,陀螺儀在很多領域都有應用,無人機的平衡需要它的四個葉片轉動速度一樣,而且整個無人機不發生傾斜的情況下無人機才能保持平衡。那麼,我們就需要在程式碼上進行補償。

圖12 機器人控製程式程式碼結構

如果你想用樹莓派做無人機,用這一套程式碼就夠了。如果你想加一些感測器,比如攝像頭,那麼就加一個camera.py的程式碼就好了。

圖13 camera.py原始碼

案例二:樹莓派打造智慧避障小車

圖14 樹莓派尋跡避障小車

既然是個小車,那肯定是能走的。而避障,也就是碰到一個物體要停下來,避障需要感測器,比如超聲波感測器,或者紅外感測器。最後還有一個“智慧”,比如它第一次走是一個探索的過程,第二次走就會走的更順利,這個時候我們可以加入一些機器學習的方法,讓整個路徑得到優化。也就是說,這個小車要能走、能避障、能學習。

原理:

1.小車—電機啟動—前後左右

2.停止—電機不轉—設定時間週期

3.障礙識別—感測器(超聲波,紅外識別,鐳射雷達等)

4.GPIO介面—L298N驅動

5.將程式碼寫入樹莓派Sd卡中

圖15 機器人控製系統程式碼結構

這裡的程式碼多了一個aeduino,這是因為小車在避障過程中需要很快地剎車,而樹莓派的實時資料的處理效能沒有aeduino好。然後再加入一些機器學習的演算法,這個小車就算有些智慧了。

圖16 《樹莓派機器人藍圖權威寶典》

如果大家覺得我今天講得不夠詳細,可以去看《樹莓派機器人藍圖權威寶典》這本書。這本書通過70個案例講述如何一步步用樹莓派做機器人。

Q&A 環節

Q:樹莓派的作業系統能方便移植到別的開發板嗎?

A:因為樹莓派的OS使用了Linux kernel,所以完全可以。現在樹莓派嗨推出了桌面作業系統PIXELOS。

Q:用樹莓派開發和用普通的微控製器開發相比有什麼優勢?

A:樹莓派功能更加的全,能接入的感測器更多。

Q:飛行時間切片法這個不是說幀率做不上去麼?

A:程式碼優化其實是可以的。

Q:微控製器上有各種匯流排(串列埠 can口等) 一般的感測器微控製器都能夠使用啊?難道樹莓派有些特殊感測器?

A:樹莓派上基本所有感測器都可以用,因為GPIO。

Q:樹莓派作業系統穩定性怎麼樣?因為很多項目由於穩定性原因不採用這種嵌入式,轉向plc了。

A:穩定性經過幾年的發展還是可以的,但是現在在工業上穩定性不好,尤其是有電磁幹擾的情況下樹莓派不穩定。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

» 雷鋒網

ADVERTISEMENT