天天看點

PX4-flow代碼編譯

首先要搭建好PX4firmware的代碼編譯環境,然後就可以直接可以用來編譯px4flow的代碼了。px4firmware的編譯環境直接用的阿木社群搭建好的平台,這個可以在阿木社群微信公衆号的PX4初級教程中免費擷取。下面是操作步驟:

1、從github中下載下傳源代碼。因為曾經在windows環境下下載下傳過一個px4flow的代碼:flow-master.zip.複制到ubuntu中直接使用,結果編譯有錯。最後還是老老實實重新再下一個。源代碼位址:https://github.com/PX4/Flow. ubuntu指令行模式下,選中即是複制,按下滑鼠中鍵就是粘貼。

PX4-flow代碼編譯

執行指令:

git clone  https://github.com/PX4/Flow.git

然後就是等待下載下傳了。下載下傳完成之後所在目錄就會出現一個flow的新目錄,裡面就是源代碼了。

2、之後其實根據官方的操作就可以了

PX4-flow代碼編譯

執行:

cd flow

進入源代碼目錄。

make help

可以看到對各種指令的說明

make archives

會再下載下傳一些檔案,隻需要執行一次

make

編譯代碼

make upload-usb

這個時候把px4flow連接配接到電腦上,就會開始下載下傳了。注意要先執行這個指令再把px4flow連接配接到電腦。或者也可執行下面的指令,選擇不同的固件版本,不過我買的那個子產品刷V2是沒用,而且第一次刷上後,圖檔很閃,之後又刷了一次好了:

make px4flow-v1_default upload-usb

make px4flow-v2_default upload-usb

弄好之後就可以在QGC中看到圖像了:

PX4-flow代碼編譯

将參數vedio_only改成1,可以看到比較清晰的圖像,用來調焦距。

PX4-flow代碼編譯

參數清單:

Name Default Access                                                                                 Comment
BFLOW_F_THLD 40 RW 這個參數是一個特征閥值,限制着底層光流計算圖形的品質。如果數值較低(如10)則幾乎所有的圖形都要被用來計算,如果值較高(如100),則隻有重要的圖形會被用來計算。
BFLOW_V_THLD 5000 RW 這個參數是圖形相關閥值,用來過濾較差的圖形比對。較低的值代表隻有很好相關性的圖形可以被接受使用。
BFLOW_HIST_FIL RW 1: 光流直方圖濾波開啟, 0: 關閉(開啟後測得光流波動變小)
BFLOW_GYRO_COM 1 RW 1: 陀螺儀補償開啟, 0: 關閉(開啟增益會出現比較大的問題,大幅度的過度補償)
BFLOW_LP_FIL RW 1:光流輸出的低通濾波器開啟, 0: 關閉(超音波資料有效時有用)
BFLOW_W_NEW 0.3 RW 光流低通濾波器增益(超音波資料有效時有用)
DEBUG 1 RW 1: 調試資訊開啟, 0: 關閉
GYRO_SENS_DPS 250 RW 陀螺儀靈敏度: 250, 500, 2000 (dps)
GYRO_COMP_THR 0.01 RW 陀螺儀補償閥值 (dps): 陀螺儀資料低于此閥值不會補償來防止漂移
IMAGE_WIDTH 64 R 圖像寬度(像素)
IMAGE_HEIGHT 64 R 圖像高度(像素)
IMAGE_L_LIGHT RW 1: 圖像傳感器低光照模式開啟, 0:關閉(圖像進行中并沒有使用這個,comminicate中用了)  
IMAGE_NOISE_C 1 RW (攝像頭配置參數)
IMAGE_TEST_PAT RW 1:陰影測試模式開啟, 0: 關閉
LENS_FOCAL_LEN 16 RW 透鏡焦距 (mm)
POSITION RW 0: 隻有位置0被使用(Bottom: 0, Front: 1, Top: 2, Back: 3, Right: 4, Left: 5)
SONAR_FILTERED RW 1: 聲呐輸出的卡爾曼濾波開啟, 0: 關閉
SONAR_KAL_L1 0.8461 RW 聲呐卡爾曼增益 L1
SONAR_KAL_L2 6.2034 RW 聲呐卡爾曼增益L2
SYS_ID 81 RW MAVLink 系統 ID
SYS_COMP_ID 50 RW MAVLink 元件 ID
SYS_SENSOR_ID 77 RW MAVLink 傳感器 ID
SYS_TYPE RW MAVLink 系統類型
SYS_AP_TYPE 1 RW MAVLink Autopilot 類型
SYS_SW_VER 13XX R 軟體版本
SYS_SEND_STATE 1 RW 1: 發送MAVLink Heartbeat, 0: 不發送
USART_2_BAUD 115200 R USART 2 波特率
USART_3_BAUD 115200 R USART 3波特率 (資料輸出)
USB_SEND_VIDEO 1 RW 1: 通過 USB發送視訊, 0: 不發送
USB_SEND_FLOW 1 RW 1: 通過USB發送光流, 0: 不發送
USB_SEND_GYRO 1 RW 1: 通過USB發送陀螺儀資料, 0: 不發送
USB_SEND_FWD RW 1: 通過USB發送轉發光流, 0: 不發送
USB_SEND_DEBUG 1 RW 1: 通過USB發送調試資訊, 0: 不發送
VIDEO_RATE 50 RW 視訊傳輸中的圖像間隔時間(ms)
VIDEO_ONLY RW 1: 高分辨圖像模式開啟, 0: 關閉

現在參數還不能儲存,也就是在QGC中修改參數後。掉電就又恢複到預設參數了。可以通過修改Flow/Src/modules/Flow/Setting.c檔案中的預設參數達到修改參數的目的。

一些問題:

1、QGC不能正常下載下傳固件

PX4-flow代碼編譯

像這個樣子。這個時候可以嘗試用自定義刷寫一個已經編譯好了的.PX4固件,然後發現又可以正常刷stable版的固件了。

2、使用Ubuntu中的PX4固件的編譯環境編譯好代碼後,執行指令 make upload-usb 顯示

PX4-flow代碼編譯

我的内心是無比崩潰的。。。之前還好好的。反正我也不知道是什麼原因。但是編譯好的檔案還是可以找到的,可以在Flow/build/px4flow-v1_default.build下找到一個firmware.px4檔案,然後在QGC中通過自定義的方式把固件刷進去就好了。

https://github.com/PX4/Flow.git      
https://github.com/PX4/Flow.git      
https://github.com/PX4/Flow.git      
https://github.com/PX4/Flow.git      

繼續閱讀