首先要搭建好PX4firmware的代碼編譯環境,然後就可以直接可以用來編譯px4flow的代碼了。px4firmware的編譯環境直接用的阿木社群搭建好的平台,這個可以在阿木社群微信公衆号的PX4初級教程中免費擷取。下面是操作步驟:
1、從github中下載下傳源代碼。因為曾經在windows環境下下載下傳過一個px4flow的代碼:flow-master.zip.複制到ubuntu中直接使用,結果編譯有錯。最後還是老老實實重新再下一個。源代碼位址:https://github.com/PX4/Flow. ubuntu指令行模式下,選中即是複制,按下滑鼠中鍵就是粘貼。
執行指令:
git clone https://github.com/PX4/Flow.git
然後就是等待下載下傳了。下載下傳完成之後所在目錄就會出現一個flow的新目錄,裡面就是源代碼了。
2、之後其實根據官方的操作就可以了
執行:
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中看到圖像了:
将參數vedio_only改成1,可以看到比較清晰的圖像,用來調焦距。
參數清單:
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固件,然後發現又可以正常刷stable版的固件了。
2、使用Ubuntu中的PX4固件的編譯環境編譯好代碼後,執行指令 make upload-usb 顯示
我的内心是無比崩潰的。。。之前還好好的。反正我也不知道是什麼原因。但是編譯好的檔案還是可以找到的,可以在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