在上一篇淺談Arduino機器人與機器視覺(一)的文章中,我們談到Arduino機器人結合機器視覺的可行性,並在最後點出了Arduino在硬體上無法即時回傳影像(圖片)的問題. 如果有朋友點進此文章觀看,也建議您從上一篇開始看起以免遺漏某些精彩的討論內容.
而雖然我們解讀說是硬體上的速度不夠快,但其實各方面多少會彼此影響. 我們能保證調整攝影機中影像的大小後,它更新影像的速度仍是30FPS嗎?? 我們能保證Arduino要同時控制機器人動作又要讀取感應器,速度上不會受到影響嗎?? 這些可能都是必須考慮進去的問題,而其中兩個裝置之間的資料要能互相傳遞勢必要建立好兩者的通訊.
其中在Arduino上有支援的通訊方式有I2C和TTL兩種,根據不同的通訊方式,資料傳輸的速度也會不同.
既然有這麼多因素會影響,而大家又希望可以將機器人與機器視覺相結合來創造更多有趣的應用與研究,也因此大家對硬體的要求也會相對的增加. 我們會希望控制板有像電腦般的運算能力,我們希望官方提供如同電腦般多的資源與Open Source等. 像是DSP.FPGA.ARM等等的控制板是大部份人的選擇,除了具備媲美電腦的運算能力與通訊周邊,更擁有較大的記憶體空間並能使用Arduino所沒有的平行處理功能來加快運算的速度.
然而Arduino的熱潮在這幾年席捲各個領域的Maker們,甚至是一躍成為主流的控制板,很多人說不定在還沒聽過8051.PIC前已經先聽到Arduino的名號了. 雖然Arduino無法單獨做到上述談論的事情,但有許多研究單位與Maker們願意憑著對它的熱愛找出合適的方法放手一搏,而大家其實最常使用的方法不外乎就是四個字~~
硬體分工
在前面我們已經提過Arduino硬體本身的運算量無法達到我們的要求,那麼最好的方法就是把機器人必須完成的各種任務根據運算量的大小來決定硬體分工的標準.而根據硬體的功能不同,分工的方式也會有所差異,但其實主要的型式是一樣的,以下偉民老師將主流的硬體分工方式分成兩種進行介紹:
一.電腦(筆電)與Arduino控制板的硬體分工
在結合視覺的機器人控制中,影像處理所需要的運算量算是較高的,而我介紹的第一種方法是電腦與Arduino控制板的硬體分工. 想當然之,最麻煩的影像處理工作我們會希望是由電腦來幫我們做,畢竟電腦本身的資源最多,像是OpenCV.Matlab.Labview.Processing等等. 也因此我們不用再將整個圖片傳送到Arduino控制板造成運算量不足的問題,只要將處理的結果像是像素.座標.特徵點.目標位置等資訊傳輸給Arduino即可.
其中為了提高機器人的機動性,大部份的玩家選擇使用無線訊號傳送資料,像是WIFI.ZigBee.Bluetooth等. 這時可能會有人想問這樣速度不會太慢嗎?? 當然不會,因為資料不再是整張圖片,而是處理完的結果.
優點: 電腦本身運算量大且資源豐富,在使用較深入的影像演算法較易實現且不易有運算延遲的問題.
缺點: 不論是使用無線訊號或是訊號線連接兩裝置,都會使機器人的機動性受到無線訊號接收範圍或訊號線長短的影響.
講到這裡或許有人會不同意我的說法,如果機器人的馬達夠力空間夠大,那我就直接把筆電放在機器人身上不就解決機動性不足的問題了嗎??
沒錯,我完全同意這個說法,因為我的碩士論文也是這樣做出來的!!! (有興趣的朋友可以看一下,雖然還沒開放. 實驗的結果在這裡) 這也是為什麼現今有很多機器人仍然那麼大台的原因,畢竟很多困難的演算法還是必須有電腦等級的運算量才能做到!!
二.視覺控制板與Arduino控制板的硬體分工
除了上述的方法外,方法二-使用視覺控制板與Arduino控制板的硬體分工可以說是方法一的簡化版. 其實方法一是過去大部份玩家選擇的方法,甚至是在8051與PIC當紅的時候的做法. 然而有許多的科技公司開始想說我何不把視覺感應器與處理影像的控制器相結合變成一塊視覺控制板呢?! 也因此開始有這樣的產品出現在市面上了.
其中最有名的是SparkFun公司出產的CMUcam,目前已經研發至第四代的CMUcam4了. 如有興趣也歡迎向CAVE團隊購買此產品(連結在此).
CMUcam4的函式庫能完全支援Arduino與Basic Stamp控制板,此外它的接腳能與Arduino控制板直接相結合,實在是太方便了!!
另外還有一款視覺控制器Pixy,其實它就是CMUcam5(後來才發現><).
它能用更簡單的方式與Arduino結合,此外它影像的更新速率是50FPS耶!!
如果將Pixy用USB與電腦連接,能直接使用官方提供的軟體PixyMon查看影像處理之後的結果~~真是太厲害了!!
有了這樣的設備,便能將方法一的設備簡化,並能根據Arduino現有的通訊方式直接與視覺控制板溝通.
優點: 大大的提升Arduino機器人的機動性,並使機器人尺寸有縮小的可能性.
缺點: 如需使用深入的影像演算法在撰寫上以及視覺控制板的運算上可能較難做到即時處理.
現今市面上有販售的Arduino都能使用上述兩種方法進行視覺機器人開發,除此之外!!! 科技真的是一直在進步,偉民老師在前面說過如果控制板有電腦等級的運算量那就好了,是的!! 在今年年底前,我已經聽到有3款電腦等級的Arduino要準備出現了,只是現今還沒開始販賣!!! 下面向大家概略介紹~~
1. IntelGalileo
第一款是Intel公司與Arduino合作開發的Intel Galileo開發板,最近在網路上炒的很兇,我想應該很多人知道這件事.
它的核心IC是以Intel Quark SoC X1000 Application Processor為主,本身可安裝作業系統,甚至是在Arduino的官網都大力介紹此控制板.
2. 86duino
第二款是Roboard公司今年極力在開發的86duino,過去Roboard公司的開發板本身已能安裝作業系統,如今Arduino熱潮將至,為了使其開發板能多元化,在新開發的86duino上能相容Arduino的開發程式. 雖然板子還未上市,但在這一年也開辦多場研習不斷推廣這塊86duino,並介紹如何使其相容Arduino的程式,有興趣也可至官網FB留意研習的資訊.
此外,Roboard公司做了一個很貼心的設計,為了使玩家能更容易進行電路設計與學習,特別開發了86duino的外殼EduCake,除了可直接從外殼連接開發板接腳外,外殼上方即是麵包板,在連接電路上實在非常方便.
3. UDOO
最後一款是UDOO開發板,如果你沒聽過它應該有聽過Raspberry pi吧!! 沒錯,raspberry pi本身已是一台小型電腦了,過去也已經有使用它進行影像處理與機器人開發的例子(CAVE團隊也有做一台喔!!就是在淺談Arduino機器人與機器視覺(一)的封面照片,如果有興趣可以來公司看看).
而UDOO是4塊Raspberry pi與Arduino DUE結合而成的,可想而知,它的功能必定更加強大. (在此不多做介紹,如有興趣可至此連結觀看)
介紹了這麼多東西後,我想大家應該也跟我想的一樣,Arduino真的是越來越強大了,難怪大家對它愛不釋手,能做到的事情也越來越多樣了.
偉民老師也很期待拿到其中任何一塊來試試看喔!!!
老師你好,我初踏進maker的世界,想跟您求教,我想要做一個“動物棋裁判”,讓動物棋從三個人才能玩的遊戲變成兩個人就可玩,也就是把兩個棋子給機器裁判看,他能辨別棋子上寫的“象/獅/虎/豹/狗/貓/鼠”,辨別完後它會舉起一隻手來表示誰贏,請問我有需要用到pixy影像辨識器嗎?我的目標是這個裁判機器人不需連接電腦,我很苦惱文字辨識的部份找不到合適的感測器,請教您,謝謝!
您好,pixy 搭配 Arduino 可能不足,建議改用 Raspberry Pi 搭配一般 USB webcam 會有比較好的辨識結果。您可以參考我們的自駕車平台影片,辨識內容改成你要的內容即可 https://youtu.be/0fxtOqA27fc