ev3顏色傳感器能夠識別幾種顏色
在顏色模式中,顏色傳感器可識別七種顏色-黑色、藍色、綠色、黃色、白色和棕色,加上無顏色。傳感器區別不同顏色的能力意味著您可對機器人編程來分類彩色球或模塊,說出各種檢測到的顏色,或見到紅色即停止動作。
?
在反射光強度模式中,顏色傳感器測量從紅燈(即發光燈)反射回來的光強度。該傳感器測量范圍為0(極暗)到100(極亮)。這意味著您可對機器人編程,使其在一個白色表面上來回移動,直到檢測到一條黑線或解釋顏色編碼識別卡。
在環境光強度模式中,該顏色傳感器測量從周圍環境進入到窗口的光強度,如太陽光或手電筒的光束。該傳感器測量范圍為0(極暗)到100(極亮)。這意味著您可對機器人編程來設定早間鬧鐘,或在燈滅時停止動作。
該顏色傳感器采樣速率為每秒1kHz。
當處于“顏色模式”或“反射光強度模式”時,為求最精確,傳感器必須角度正確、靠近但不接觸到正在檢測的物體表面。
EV3關于顏色傳感器使用中的實際問題
EV3目前的顏色傳感器內部使用的是ST的一款低功耗單品機,并不是專用的顏色傳感芯片。在用到顏色識別功能的時候,常會出現顏色識別錯誤的問題。作為前端的傳感器一旦出現識別不準確的現象,會直接影響后續機器的動作,而對初學這方面知識的朋友造成很大困擾。這篇微博的內容就是討論一下幾種避免顏色錯誤識別的幾種方法。
首先來看一下這個顏色傳感器的工作原理。當她工作在顏色識別的工作模式下時,她的顏色發光管通過集成在一起的紅、綠、藍三個LED,利用光的三色原理,交替發出7種不同顏色的光,然后通過傳感器上的接收二極管,測量被測物體反射光的強度,當反射光最強時,就認為此時發出的顏色光就是物體的顏色。
例如,在她的發射LED交替發出7種不同顏色光的時候,同時也在不斷地接收反射光的強度。而當發出紅色光的時候,測量到此時物體的反射光最強,那么就認為這個被測量的物體是紅色。
黑色物體因為吸收了所有可見光,所以當傳感器交替發完7種不同顏色的光以后,比較每一種顏色所接收的反射光強度,數值都非常弱,同時與測量的環境光比較后,則認為被測物體是黑色。
明白了這個顏色傳感器工作原理,我們再來看顏色識別錯誤的問題和幾種解決方法:我們用藍色來舉例,首先被測色塊盡可能靠近顏色傳感器,以減少外界環境光源的干擾,但不要完全貼在傳感器上,留給物體反射回傳感器的一個距離空間,一般5mm左右就可以。不要移動被測色塊,再看測量結果。
1. 如果一個藍色的色塊,顏色傳感器總是讀出綠色,或者讀錯的概率太大,說明這種藍色的色調不適合用EV3的顏色傳感器。建議換一種不同色調的藍色,最好用Lego的藍色積木塊。因為EV3的顏色傳感器在設計時,是以Lego自己的顏色為標準。
2. 如果一個藍色的被測色塊,有時會被識別成綠色,但多數情況被正確識別成藍色。這種情況可以用數字均值濾波的方法,去除掉干擾。比如當第一次讀出藍色后,延時再讀一次,再判斷第二次讀出的是否還是藍色,如果兩次讀出不一致,則忽略不計。直到連續讀出同一顏色結果,則認為此顏色正確。具體測量采樣的頻率和次數,根據實際應用來定。我在顏色分揀傳送帶的程序里,根據傳送帶的速度,和色塊尺寸,用了兩次采樣,間隔0.5秒。舉例如下:
3 .在實際應用中,我們多數情況對要識別的色塊,識別到了即可,不需要對已經識別到的色塊再反復識別。比如對傳送帶上經過的色塊計數。經過一個色塊就記一次數,如何控制檢測計數器,也是會經常用到的。我比較常用的方法是經過數字濾波后,確認正確識別到了物體后,計數器操作一次,同時作‘本次已操作過’標志。保證對同一物體不再重復運算操作。直到傳感器采樣到另一種顏色后,比如黑色或無色或其他環境顏色,再清除“本次已操作過”標志。具體程序并不復雜,大家可自己嘗試。