首先來看一下這個顏色感測器的工作原理。當她工作在顏色識別的工作模式下時,她的顏色發光管透過整合在一起的紅、綠、藍三個LED,利用光的三色原理,交替發出7種不同顏色的光,然後透過感測器上的接收二極體,測量被測物體反射光的強度,當反射光最強時,就認為此時發出的顏色光就是物體的顏色。
例如,在她的發射LED交替發出7種不同顏色光的時候,同時也在不斷地接收反射光的強度。而當發出紅色光的時候,測量到此時物體的反射光最強,那麼就認為這個被測量的物體是紅色。黑色物體因為吸收了所有可見光,所以當感測器交替發完7種不同顏色的光以後,比較每一種顏色所接收的反射光強度,數值都非常弱,同時與測量的環境光比較後,則認為被測物體是黑色。
明白了這個顏色感測器工作原理,我們再來看顏色識別錯誤的問題和幾種解決方法:我們用藍色來舉例,首先被測色塊儘可能靠近顏色感測器,以減少 外界環境光源的干擾,但不要完全貼在感測器上,留給物體反射回感測器的一個距離空間,一般5mm左右就可以。不要移動被測色塊,再看測量結果。
1. 如果一個藍色的色塊,顏色感測器總是讀出綠色,或者讀錯的機率太大,說明這種藍色的色調不適合用EV3的顏色感測器。建議換一種不同色調的藍色,最好用Lego的藍色積木塊。因為EV3的顏色感測器在設計時,是以Lego自己的顏色為標準。
2. 如果一個藍色的被測色塊,有時會被識別成綠色,但多數情況被正確識別成藍色。這種情況可以用數字均值濾波的方法,去除掉干擾。比如當第一次讀出藍色後,延時再讀一次,再判斷第二次讀出的是否還是藍色,如果兩次讀出不一致,則忽略不計。直到連續讀出同一顏色結果,則認為此顏色正確。具體測量取樣的頻率和次數,根據實際應用來定。我在顏色分揀傳送帶的程式裡,根據傳送帶的速度,和色塊尺寸,用了兩次取樣,間隔0.5秒。
3 在實際應用中,我們多數情況對要識別的色塊,識別到了即可,不需要對已經識別到的色塊再反覆識別。比如對傳送帶上經過的色塊計數。經過一個色塊就記一次數,如何控制檢測計數器,也是會經常用到的。我比較常用的方法是經過數字濾波後,確認正確識別到了物體後,計數器操作一次,同時作‘本次已操作過’標誌。保證對同一物體不再重複運算操作。直到感測器取樣到另一種顏色後,比如黑色或無色或其他環境顏色,再清除“本次已操作過”標誌。具體程式並不複雜,大家可自己嘗試。
首先來看一下這個顏色感測器的工作原理。當她工作在顏色識別的工作模式下時,她的顏色發光管透過整合在一起的紅、綠、藍三個LED,利用光的三色原理,交替發出7種不同顏色的光,然後透過感測器上的接收二極體,測量被測物體反射光的強度,當反射光最強時,就認為此時發出的顏色光就是物體的顏色。
例如,在她的發射LED交替發出7種不同顏色光的時候,同時也在不斷地接收反射光的強度。而當發出紅色光的時候,測量到此時物體的反射光最強,那麼就認為這個被測量的物體是紅色。黑色物體因為吸收了所有可見光,所以當感測器交替發完7種不同顏色的光以後,比較每一種顏色所接收的反射光強度,數值都非常弱,同時與測量的環境光比較後,則認為被測物體是黑色。
明白了這個顏色感測器工作原理,我們再來看顏色識別錯誤的問題和幾種解決方法:我們用藍色來舉例,首先被測色塊儘可能靠近顏色感測器,以減少 外界環境光源的干擾,但不要完全貼在感測器上,留給物體反射回感測器的一個距離空間,一般5mm左右就可以。不要移動被測色塊,再看測量結果。
1. 如果一個藍色的色塊,顏色感測器總是讀出綠色,或者讀錯的機率太大,說明這種藍色的色調不適合用EV3的顏色感測器。建議換一種不同色調的藍色,最好用Lego的藍色積木塊。因為EV3的顏色感測器在設計時,是以Lego自己的顏色為標準。
2. 如果一個藍色的被測色塊,有時會被識別成綠色,但多數情況被正確識別成藍色。這種情況可以用數字均值濾波的方法,去除掉干擾。比如當第一次讀出藍色後,延時再讀一次,再判斷第二次讀出的是否還是藍色,如果兩次讀出不一致,則忽略不計。直到連續讀出同一顏色結果,則認為此顏色正確。具體測量取樣的頻率和次數,根據實際應用來定。我在顏色分揀傳送帶的程式裡,根據傳送帶的速度,和色塊尺寸,用了兩次取樣,間隔0.5秒。
3 在實際應用中,我們多數情況對要識別的色塊,識別到了即可,不需要對已經識別到的色塊再反覆識別。比如對傳送帶上經過的色塊計數。經過一個色塊就記一次數,如何控制檢測計數器,也是會經常用到的。我比較常用的方法是經過數字濾波後,確認正確識別到了物體後,計數器操作一次,同時作‘本次已操作過’標誌。保證對同一物體不再重複運算操作。直到感測器取樣到另一種顏色後,比如黑色或無色或其他環境顏色,再清除“本次已操作過”標誌。具體程式並不複雜,大家可自己嘗試。