I recently acquired a px4flow module and started experimenting with it. The module's function is a fairly simple concept, but the implementation is potentially fraught with difficulties. In the end, the ETH team did a good job on leveraging the strengths of the very capable STM32F4 MCU pulling together its DCMI interface along with integer DSP instructions to create an optical flow sensor capable of detecting a +-4 pixel shift in half pixel resolution at 200Hz.
Although the MT9V034 monochrome machine vision sensor is capable of 752x480 resolution at 60 Hz, the MCU only has the horsepower to scan a pixel region reduced by binning down to 64x64. With the default 16mm lens, the system is capable of tracking flow up to around 0.5 m/s at the closest distance of 0.4m. At the furthest distance (which I found practical to be 4m) the max traversal is just under 5m/s. The distances are limited by the range of the on-board sonic range finder.
The module also has an on-board 3D angular rate sensor necessary to correct for apparent motion caused by X&Y axis rotation, but I found it more useful to ignore the compensated output and use the raw flow data with AQ's rate estimates instead as they don't suffer from drift and excess noise.
Found some issues with the module's stock firmware, but luckily the source was recently published which allowed the opportunity to resolve these problems. My changes can be found here: .
I'm pleased with the results so far as demonstrated in the below video. The entire flight was flown in PH mode using DVH for maneuvering. Being outside adds a lot of noise both to the sonic altitude estimates as well as the flow estimates due to blowing leaves / grass and wind. None the less, very accurate positioning is still possible.
The AQ FC firmware changes necessary to use this sensor will be pushed to the repo as v6.8 experimental as soon as we can settle on a branch point for v6.7. To use the px4flow, all you have to do is mount it to your frame and connect its serial line to one of AQ's serial ports setup for mavlink. The system will recognize the module then ignore GPS data and use optical flow data for all positioning.