首先要搭建好PX4firmware的代码编译环境,然后就可以直接可以用来编译px4flow的代码了。px4firmware的编译环境直接用的阿木社区搭建好的平台,这个可以在阿木社区微信公众号的PX4初级教程中免费获取。下面是操作步骤:
1、从github中下载源代码。因为曾经在windows环境下下载过一个px4flow的代码:flow-master.zip.复制到ubuntu中直接使用,结果编译有错。最后还是老老实实重新再下一个。源代码地址:https://github.com/PX4/Flow. ubuntu命令行模式下,选中即是复制,按下鼠标中键就是粘贴。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVP9cmWxA3Ra9mUXRGNoJDTwYVbiVHNHpleO1GTulzRilWO5x0LcRHelR3LcJzLctmch1mclRXY39TNxQjMyADN1EjMyMDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
执行命令:
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