基于ARM嵌入式圖像處理平臺的太陽跟蹤系統
2 軟件設計
2.1 跟蹤控制策略
圖3所示是太陽跟蹤系統工作過程流程圖,系統采用的跟蹤控制策略如下:本文引用地址:http://www.j9360.com/article/148942.htm
(1)系統可設置2種工作模式,早晨6:00喚醒跟蹤控制系統,系統啟動跟蹤控制,進入跟蹤模式;下午18:00休眠系統,系統關閉跟蹤控制,進入待機模式。同時系統采用粗跟蹤和精跟蹤2種方式,粗跟蹤采用視日運動跟蹤方法,精跟蹤采用基于計算機視覺的跟蹤方法。粗跟蹤為精跟蹤提供初始工作條件,精跟蹤保證系統的跟蹤精度。
(2)喚醒跟蹤控制系統時,采用視日運動開環計算方法進行粗跟蹤。粗跟蹤的基本過程是:根據太陽運行的天文規律計算,利用系統時間和給定的當地經緯度計算太陽高度角和太陽方位角,并根據計算結果來驅動并控制步進電機,從而調整太陽能電池板的角位置。粗跟蹤的目的是為了讓太陽進入圖像傳感器的視野范圍,主要用于首次定位和目標丟失后的重新定位。
(3)系統工作在跟蹤模式時,周期性采集圖像,采用基于計算機視覺的閉環校正方法進行精跟蹤。精跟蹤的基本過程是:通過對采集圖像進行處理,獲取太陽角度偏差量。由太陽角度偏差量可得到轉臺應轉過的角度,從而使太陽能電池板能正對太陽。精跟蹤的目的是為了保證系統跟蹤精度。
(4)系統工作在跟蹤模式時,由于陰天、雨天或其他原因,太陽光線很弱或基本看不見,導致CMOS圖像傳感器無法捕捉到太陽。此時,太陽能電池板的工作效率很低,為了減小跟蹤系統能耗,不進行電機動作并保持當前狀態。同時設置累計標志S,它表示圖像傳感器在連續S個采樣周期內沒有捕捉到太陽。當S累計到設定值N時,采用視日運動開環計算方法重新粗定位,并重置累計標志S。這樣在降低系統能耗的同時可以提高系統可靠性。
2.2 基于計算機視覺的跟蹤方法
基于計算機視覺的跟蹤方法,其基本過程如下:通過對采集圖像進行處理,得到太陽位置偏差量。如果偏差在預設閾值范圍內,則保持當前狀態;如果偏差超出預設閾值F1的范圍,則根據偏差的方向和大小調整轉臺,使得通過圖像處理得到的偏差在預設閾值F2的范圍內。其中閾值F1的范圍比閾值F2的范圍大,這樣可以減小電機動作次數,降低能耗。
(1)圖像處理方法。圖像傳感器得到圖像后,首先進行圖像的灰度化。使用屏蔽字和移位操作來得到R,G,B分量,再進行比例轉換,得到灰度圖像。設置閾值,將圖像二值化,得到的圖像中的光斑即為太陽。找到太陽位置,計算光斑中心與圖像中心的偏差值,將該偏差值換算為太陽方位角和高度角的實際偏差值。
(2)偏差角計算與轉臺控制。記CMOS圖像傳感器的焦距為f,像素大小為kx×ky。假設采集圖像上太陽位置偏離圖像中心的偏差為px× py,則可以計算太陽偏差角如下:
太陽方位偏差角:△α=arctan(px×kx/f);
太陽高度偏差角:△β=arctan(py×ky/f)。
根據太陽方位偏差角和高度偏差角,通過串口控制轉臺轉動,使太陽能電池板正對太陽。其中轉臺x軸應轉過的角度為太陽方位偏差角,轉臺y軸應轉過的角度為太陽高度偏差角。
2.3 嵌入式處理平臺的實現
系統采用S3C2440作為主控制器。利用Linux內核代碼,針對本處理器和本系統特點,對內核進行相應的配置和裁剪,編譯生成嵌入式內核,并選用yaffs作為根文件系統,將內核映像文件和根文件系統燒寫到微控制器中,并編寫相應驅動程序。
程序在主機上設計完成后,需進行交叉編譯,然后下載到處理器運行。
首先在主機Linux系統下搭建交叉編譯環境,這里采用arm-linux-gcc-4.3.2 with EABI版本的交叉編譯器,并配置主機和目標板的NFS和FTP網絡,以實現主機到目標板的文件下載和主機對微控制器的控制。程序編寫完成后,進行交叉編譯,生成可執行文件,下載到處理器運行即可。
評論