串口(光流獲取)
[size=15.0000pt]一、光流模塊簡介光流(optical flow)是指的是空間運動物體在觀察成像平面上的像素運動的瞬時速度。 光流法是利用圖像序列中像素在時間域上的變化以及相鄰幀之間的相關性來找到上一幀跟當前幀之間存在的對應關系,從而計算出相鄰幀之間物體的運動信息的一種方法。 通常將二維圖像平面特定坐標點上的灰度瞬時變化率定義為光流矢量。 一般而言,光流是由于場景中前景目標本身的移動、相機的運動,或者兩者的共同運動所產生的。 當人的眼睛觀察運動物體時,物體的景象在人眼的視網膜上形成一系列連續變化的圖像,這一系列連續變化的信息不斷“流過”視網膜(即圖像平面),好像一種光的“流”,故稱之為光流。光流表達了圖像的變化,由于它包含了目標運動的信息,因此可被觀察者用來確定目標的運動情況。 COCOFLY無人機采用的光流模組是基于PMW3901,PMW3901是一款光學運動跟蹤傳感器,該傳感器體積小、功耗低、精度高。如下圖所示為該光流模組的實物圖如下圖所示。 光流模組上已經把PMW3901的數據處理好,并且通過串口周期傳輸,波特率為19200,該光流模組的串口傳輸的協議如下表所示。
其中DATA0、DATA1是flow_x拆分出來的低8位數據和高8位數據,即flow_x=(int16_t)(DATA1<<8)|(DATA0),DATA2、DATA3是flow_y的低8位和高8位,即flow_y=(int16_t)(DATA3<<8)|(DATA2),其中和校驗為DATA0~DATA3的累加值,即SUM=DATA0+DATA1+DATA2+DATA3;SQUAL為地面環境質量,數值越大表示地面環境質量越高;最后一個字節是結束符,有兩種:常規模式下固定是0xAA(Y引腳接高電平)、偏航模式下是固定的0xBB(Y引腳接低電平)。 二、串口光流數據獲取實驗串口光流數據獲取實驗使用STM32 的串口2即UART2與光流模組相連,串口1即UART1通過USB轉串口模塊連接電腦,把串口2獲取到的光流數據通過串口1傳輸到電腦端的串口調試助手顯示出來。串口2的引腳如下圖所示 兩個串口引腳分別與PA2與PA3引腳相連,那么我們就對PA2與PA3引腳進行配置,串口1的配置可以參考《串口(基礎收發)》,配置代碼(通過調用官方庫)編寫的思路如下:
代碼思路 1 | | 1、定義結構體; 2、使能時鐘; 3、填充結構體; 4、裝載結構體。 | | | 1、定義結構體; 2、使能時鐘; 3、填充結構體; 4、裝載結構體; 5、開啟中斷; 6、使能串口。 | | | | | | |
串口2初始化代碼如下: 串口2接收到光流模組的數據就轉發到串口1,串口2的中斷函數代碼如下。 設置串口2的波特率為19200,代碼如下: 保存、編譯、下載代碼,確保串口2接上了光流模組,然后再把串口1接上USB轉串口模塊,最后接到電腦的USB端口,如下圖所示: 然后在把USB轉串模塊插到電腦的USB口,打開電腦端的串口調試助手,找到對應的COM口(前提是安裝了USB轉串口驅動),設置波特率為115200,打開,可以看到串口在不斷打印光流模組發送的數據,如下圖所示。
完整的pdf格式文檔51黑下載地址:
2.飛控開發基礎-【4】串口(光流數據獲取).pdf
(1021.87 KB, 下載次數: 31)
2020-3-26 17:34 上傳
點擊文件名下載附件
|