日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pixy(CMUCAM5)入门学习

發布時間:2024/1/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pixy(CMUCAM5)入门学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

也可以參考這個網址:http://www.makerlab.me/guides/6/articles/34

1.教Pixy一個物體
教Pixy識別一個物體是非常簡單的。但讓我們先說一下什么要的物體會更好的被Pixy所識別。Pixy使用的是基于色調過濾算法(hue-based color filtering algorithm)來識別物體。因為Pixy使用色調(hue),物體應明顯的色調,下面的物體就很好,因為他們都有比較好、易辨識的色調。

下面有幾個不好識別的物體,因為他們沒有色調(黑,白或灰)或因為色調不明顯。


把這條原則記在心里,挑選一個物體來教Pixy。(通過電池或USB線給Pixy供電,如果你還沒有。當你給Pixy供電時,Pixy會閃幾下LED。等待LED滅掉后再教Pixy。)用手按住Pixy頂部的按鈕,等待大約1秒鐘,LED會變亮,先顯示白色,然后是紅色,然后是別的顏色,當顯示紅色時就松開按鈕。
當你松開按鈕后,Pixy會進入所謂的“light pipe”模式,LED的顏色就是Pixy攝像頭所看到的圖像中間部分的顏色。

用LED的顏色來檢查是否你的物體在Pixy視角的中心位置。當你感覺LED顏色和你的物體顏色很接近時,點擊一下按鍵(按下并釋放按鍵,就像單擊鼠標一樣)。如果Pixy感覺你的物體色調足夠好(有足夠的色彩飽和度[enough color saturation])的話,LED會閃爍,你現在已經操作完成。Pixy現在已經“學會”了你的物體,并且會追蹤具有相同顏色的物體。如果物體的色調沒有那么好,LED會關閉(不會閃)并且Pixy并沒有學到物體。如果LED沒有閃,你可以換一個有更好色彩飽和度的物體。
多個標記[Signatures]
Pixy可以學習多大7個顏色標記。在上面部分,我們通過松開按鍵當LED變紅色時,已經教了Pixy第一個顏色標記。如果我們繼續按下按鍵,LED會變為橙、黃等,來指示剩下的顏色標記。下面是標記的順序:
1、紅
2、橙
3、黃
4、綠
5、青
6、藍
7、紫
顏色標記的編號是指你松開按鍵時的顏色。松開按鍵LED顏色是黃色,那么你在教Pixy第三個標記。松開按鍵后LED變藍色,你教的是第6個標記。這些顏色跟實際的物體色調沒有任何關系。這些顏色只是用來識別標記編號。舉例,標記1可能是黃色的物體,雖然標記1的提示顏色是紅色,標記2可能是粉色物體,雖然它的提示顏色是橙色。
關于教物體的其它說明
當你按下并松開按鍵來表示LED顏色和實際物體顏色匹配時,Pixy會閃LED,并且閃爍的亮度代表物體的色調的飽和程度。所以高亮度的閃爍是好的。試著教Pixy一個顏色鮮艷的物體——Pixy會通過閃爍LED來指示它是不是“高興”。
如果你偶然發現本打算教Pixy第3個顏色標記時,它卻再學第2個。你可以按下按鍵直到LED關閉后再松開。這將是你取消Pixy學習模式的方法。你可以通過按住按鍵重新進入學習摸索。
白平衡
某些類型的燈(如白熾燈)有略紅的色調,而有些(如熒光燈及常見的節能燈)會有略藍的色調。這樣的光線會影響你的顏色標記。比如,如果你在白熾燈條件下教的物體,轉移到熒光燈下,顏色標記可能不會被識別的非常好。你可以重新教標記或調節白平衡。
當你第一次上電時,Pixy會花5秒鐘的時間來監測需要用哪個合適的白平衡。然后它會關閉自動白平衡的功能。如果你想重新配置白平衡,按下按鍵直到LED變白后松開,時間會很快,做好松開的準備。Pixy現在就是在自動白平衡摸索中。你可以那一張白色的紙在Pixy前面,從而讓Pixy可以進行白平衡調節,這將會花2~3秒鐘的時間。然后你可以像點鼠標一樣按下并松開按鍵。LED會閃爍來表示白平衡調試成功,完成了。
通過PixyMon來教Pixy
你也可以通過PixyMon來教Pixy。當你的物體很小或者你想更好的控制哪些像素被用到時會很有幫助。通過連接USB線并且運行PixyMon。當PixyMon打開后,點擊上面的raw按鈕。

現在拿著要教Pixy的物體在它前面,然后選擇菜單Action=》Set signature 1。

現在選擇哪一個區域是你想用的物體。

如果成功,你應該可以在下面的命令區看到“Success!”信息,并且還有一個數字是0~100之間來指示色調飽和度。色調飽和度高會有更高的數字。
就是這樣了,你現在可以監測顏色標記的效果了,通過點擊廚師圖標或選擇Action?Cooked Video。Cooked Video(處理過的圖像)會顯示哪些像素與顏色標記一致,并且如何組成識別的物體:

下面是什么呢?
你可以通過這種方式教Pixy識別物體,最多可以有7種顏色標記。需要注意的是Pixy總是將標記記憶在flash里,所以當你下一次上電時,這些標記都是直接可用的。
2. 上傳新固件
Pixy使用保存在ROM里的bootloader來上傳最新的固件到Flash里。這使得Pixy不會“變磚”,也就是說你總可以從不成功的固件上傳或不完美固件版本的升級中恢復你的Pixy。
第一次上傳固件
請仔細按照本文操作。(如果你做錯了某件事情或順序顛倒,也不會有大問題,只是有可能會讓你困惑。)OK,開始前做如下準備:
*Pixy上沒有任何接線,沒有電源,沒有usb,沒有IO,沒有舵機等;
*你的計算機沒有運行PixyMon(但是PixyMon已經在你的計算機上安裝了);
*你自己的固件已經準備好了(.hex文件);
首先,將USB線插在計算機上
然后按下Pixy頂部白色的按鈕,并且在保持按下按鍵的同時插上USB線。要同時完成,這可能是最麻煩的一個環節了。
Pixy上的LED會變的非常亮(白色)并且保持,這說明你已經進入了固件上傳模式。因為你這是第一次上傳固件,你的計算機會提示你安裝固件,因為Pixy在固件上傳模式下使用單獨的驅動,所以計算機之前并沒有安裝過相應的驅動。這個過程只針對Windows用戶,如果你用的是Mac,你可以直接掉過驅動安裝部分。
Windows Vista、7或8
你應該會看到這樣的下彈窗:

只需要等待驅動安裝完成即可,期間你不想要做任何操作,僅僅是等待。
Windows XP
你會看到添加新硬件的對話框

點擊,“No,not this time”然后點擊“下一步”。然后點擊“自動安裝驅動”,然后點擊“下一步”

驅動將會安裝完成,等待完成后繼續。
打開PixyMon
首先打開PixyMon,當PixyMon運行后,Pixy上的LED會關閉,你會看到如下信息“Pixy programming state detected”在PixyMon的命令窗口區。如果你沒有看到上面信息,有可能是驅動還在安裝,再多等一段時間。
選擇菜單File?Program,選取文件對話框將會彈出,瀏覽到你的新固件位置(.hex文件)然后選擇相應文件,然后點擊OK。Pixy會開始接受新固件,然后將其寫入到flash中。這是非常快的,一般只需要2~3秒鐘。當完成后,你會看到“done!”信息,你需要拔掉USB線然后重新插上來運行新固件。
任務完成。
再一次安裝固件
下一次上傳固件時,你的驅動已經安裝,所以你只需要通過按鍵然后插上USB線進入固件上傳模式。并且PixyMon可以已經在運行,這并不影響。
3. Pixy與Arduino連接
Pixy被設計為可以與微控制器進行通訊,并且Pixy可以直接與Arduino進行通訊。它會以1Mbits/s的速度發送塊信息給Arduino,這意味著Pixy每秒可以發送超過6000個識別的物體或每幀135個被識別的物體(Pixy每秒可以處理50幀畫面)。
OK,想讓Pixy與Arduino進行通訊,使用Pixy自帶的數據線連接Pixy到Arduino。


接下來,下載Arduino庫在這里:http://pan.baidu.com/s/1dDpDlvV ,打開Arduino IDE并且通過菜單Sketch->Import Library導入Pixy庫文件,然后瀏覽到Pixy庫文件解壓的地方。
然后,通過菜單File?Examples?Pixy載入“hello_world”例子。上傳代碼到Arduino并且打開Serial Monitor(串口監視器)。你應該可以看到一些類似于下面的數據信息:

Detected 1: block 0: sig: 1 x: 159 y: 109 width: 61 height:
61Detected 1: block 0: sig: 1 x: 173 y: 114 width: 60 height:
61Detected 1: block 0: sig: 1 x: 146 y: 111 width: 70 height: 65…

注意,這個例子中,如果Pixy運行了默認的固件,并且一個物體被識別才會打印這些信息。
Arduino API
在Arduino中使用Pixy是非常簡單的,你只需要包含SPI和Pixy的頭文件:

并且在setup()和loop()函數外面創建一個全局的Pixy實例變量:

API包含一個函數:getBlocks(),這個函數將返回Pixy所識別的物體數量。然后你就可以通過pixy.blocks[]的數組得到每個識別到的物體數據(每個數組成員對應一個被識別的物體)。每個成員(i)包含下列元素:
pixy.blocks[i].signature:被識別物體的標記編號;
pixy.blocks[i].x:被識別物體中心位置在x方向的坐標;
pixy.blocks[i].y:被識別物體中心位置在y方向的坐標;
pixy.blocks[i].width:被識別物體的寬度(1~320);
pixy.blocks[i].height:被識別物體的高度(1~200);
pixy.blocks[i].print():一個成員函數用來打印被識別物體的信息到串口上;
所以Pixy與Arduino通訊很簡單。
其它微控制器或設備
Pixy支持多種方式輸出被識別物體的數據。它支持SPI,I2C,UART或模擬/數字 I/O口(通過10Pin接口)。Pixy還支持USB2.0 。你可以通過PixyMon的對話框來配置Pixy使用哪種方式?!癉ata out port”參數決定了輸出方式(UART/SPI/Arduino SPI/I2C)。

如果你將鼠標指針移動到“Data out port”文字上,會有提示信息顯示各個類型的接口對應的文字:
SPI:這是默認的輸出端口,使用了三根心(IO口的第Pin1、3、4)并且用于與Arduino通訊;
I2C:兩線接口(IO口的Pin5和9),可以支持一個主機與127個從機的通訊(多大127個Pixy);
UART:這是普通的串口(IO口的Pin1和4)。Pixy通過Pin1(輸入)接受數據,Pin4(輸出)發送數據;
模擬/數字 X:這種方式將在Pin3口輸出0~3.3V的模擬電壓,表示監測到的最大物體的X值;
模擬/數字 Y:這種方式將在Pin3口輸出0~3.3V的模擬電壓,表示監測到的最大物體的Y值;

在牛角座的上邊相應序號為左上角1號腳:

總結

以上是生活随笔為你收集整理的Pixy(CMUCAM5)入门学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。