Has anyone here used a Holybro PMW3901 optical flow sensor together with the Pixhawk IMU for underwater trajectory estimation or generating a 2D trajectory map?
I’m currently planning to use a Raspberry Pi 5 running ArduSub and ROS 2, connected to a Pixhawk 2.4.8. The ROV will be manually controlled and operated close to the pool floor (about 30 cm above the bottom). Instead of a DVL/Sonar, I plan to use a depth sensor to provide the distance required for optical flow scaling.
I’d be especially interested in hearing about optical flow performance underwater, expected drift, and whether this approach is practical for short-range 2D trajectory mapping.
30cm is relatively close, there is a risk that this is close enough for thrusters to cause any sediment present to be kicked up and thus degrade optical flow performance
Drift will be significant over time as there is no external frame of reference, this would be similar to using SLAM odometry or just the IMU. Fusing the optical flow with the IMU won’t fix drift because there is still no external frame of reference, for sensor fusion to deliver good results you want to fuse highly accurate and fast local measurements with low accuracy/frequency globally referenced measurements.
Unless your deployment location is a guaranteed consistent water depth (I guess a pool might be?) the pressure sensor is not going to enable you to hold a fixed altitude. It measures the water depth above you, not the distance to the floor.
The optical flow sensor is very cheap compared to a DVL, so you can always give it a go and report back. It might be a neat solution for a niche use-case.