天天看点

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      

继续阅读