Cheerson CX-OF low cost optical flow sensor testing

I found the time to do some testing with CX-OF and without TFmini Rangefinder:
on my QuadX 250 with Pixracer and ArduCopter V3.7.0-dev (04ebb9de) I see sometime sequence of messages like this:

[MAV 001:1] EKF3 IMU0 stopped aiding
[MAV 001:1] EKF3 IMU0 started relative aiding
[MAV 001:1] EKF3 IMU0 fusing optical flow
[MAV 001:1] EKF3 IMU0 stopped aiding 
[MAV 001:1] EKF3 IMU0 started relative aiding 
[MAV 001:1] EKF3 IMU0 stopped aiding 
[MAV 001:1] EKF3 IMU0 started relative aiding 
[MAV 001:1] EKF3 IMU0 fusing optical flow

but I don’t see drift in attitude and I am able to takeoff in AltHold and switch in FlowHold, the copter is not stable as in Loiter with CX-OF + TFmini but it works.

On another copter, QuadX 130 with RevoMini, CX-OF (no Rangefinder) and same ArduCopter V3.7.0-dev, I see same messages as above but I see also a slow drift in Attitude.
If I take off soon after a reboot the copter is quite stable in FlowHold, if I wait enough the drift in Attitude becomes large and takeoff becomes difficult.

What seems strange to me is the different behavior between the two flight controllers (Pixracer and RevoMini) with same OF sensor and same Arducopter release.

EDIT:
After some more test I can say that I see attitude drift also in the QuadX 250 with Pixracer: soon after reboot is OK then slow attitude drift in time with copter on floor and unstable copter in FlowHold mode. This is true when I use only CX-OF, if I use CX-OF + TFmini I don’t see attitude drift and the copter is stable in Loiter mode.

Thank you for having done the test,

Hi, folks.
I was using CX-OF successfully in my under 250g drones with a Kakute F7 AIO and Benewake TFMini LiDAR. As I want to receive FrSky passthrough telemetry in my Taranis, I’m using ArduCopter 3.7 Master. Everything was working okay up to the firmware from June 13. Probably some changes after this date affected the optical flow system. I reported the issue at https://github.com/ArduPilot/ardupilot/issues/11911 and I hope they can fix it soon. In summary, if someone is using optical flow, make sure that “Vision Position” is “OK” in the status tab in Mission Planner. If it is not, you can’t use FlowHold properly. After 2 days fighting against this issue, I flashed back the firmware from June 13 and everything is working again. :pray:
Regards!

PS: I’m trying ThoneFlow and it is working properly now too.

Hi @rmackay9

This is awesome! also, I tried to follow the article on Ardupilot about Marvelmind https://marvelmind.com. failed with skew and dragging. does not know how to optimize. do you think it is stable for indoor or do you have any guideline.

Hi all … For optical flow on 3" quad, which is best choice?
Thanks

€ 10,50 8%di SCONTO | Flusso ottico Spot del Sensore di Posizione di Volo Di Telecomando In Bilico In Possesso di Bordo del Modulo Costante VS Cheerson CX-OF Supporto APM
https://a.aliexpress.com/nQ7LsuMjh

€ 12,88 6%di SCONTO | 1PC 3.3V 1.1*1.4 centimetri 1g Sensore di Flusso Ottico Modulo Aerea Modello Accessori Per Il MINI FPV da corsa del RC Drone Quadcopter Pezzi di Ricambio
https://a.aliexpress.com/OfpnI5G3t

@Alberto_Ds,

Personally I would choose the top one because it says “Supports APM”. Our optical flow sensor wiki page also has a link to the specific models that we have confirmed work.

1 Like

Thanks Randy :slight_smile:

Am I supposed to see values on Mission Planner if the sensor is working?

PS: Logs show values when seem reasonable!

The CX-OF optical flow module is indeed a very cheap but easy-to-use module. I successfully implemented indoor Loiter on a traditional mini helicopter.

https://discuss.ardupilot.org/t/the-smallest-arduheli-comes-from-the-k120-kakutef7mini-with-a-ddfp-hollow-cup-tail/49312/33

2 Likes

@firenitin,

The MP’s status tab (or the tuning page) should show either the opt_x or opt_m_x but I’m not sure which. If the values look good in the logs then I think that means it’s ok.

@rmackay9
Thanks for the quick reply, I don’t see values in either on MP, however the values in the logs show up. I’m guessing that should work? Also, wonder why MP doesn’t show the values.

@firenitin,

Thanks for the report, I’ve reproduced the problem on a cube black. As you say, the values are appearing in the dataflash log but not in the mavlink stream to the GCS. I suspect we will find the underlying issue shortly and hopefully release a fix with Copter-4.0.1 or 4.0.2 depending upon timing.

2 Likes

@rmackay9
Thanks Randy for confirming the issue. :slight_smile:

@firenitin, here’s the fix that should be included in the next beta release which should be out within a few days. Thanks again for the report.

2 Likes

Hi. I’m new to arducopter and I’m trying to build an optical flow enabled 3inch quad copter with arducopter. I’m using omnibus nano f4 v6 with cx-of compatible optical flow module, AC 4.0.1 rc2 but the optical flow enable option in mission planner is grey out. I was changed the parameters as the wiki said: FLOW_TYPE = 4, SERIAL1_PROTOCOL = 18 (I’m connecting the tx pin of the module to the v6’s rx1 pin), SERIAL1_BAUD = 19, EK2_FLOW_DELAY = 80, EK2_GPS_TYPE = 3 without any luck. Can you help me?

2 Likes

I fixed it by setting the AHRS_ORIENTATION to YAW180. That fixed my pitch reversed problem too. It’s weird.

1 Like

I would connect the CX OF optical flow to the TLM2 on OMNIBUS NANO V6 but i don’t found where is on in this FC. Thanks

I think this is the same:

I am testing the cx of clone that I have indicated above, connected to the RX 4 tlm2 pad on Omnibus nano v6. the problem is the copter in flow hold oscillates like bad settings PID pitch and roll. Sometimes, if I move it with the RC command it stabilizes for a while, then it starts swinging again. I have setting like in the wiki.

This is the problem

SOLVED : set FHLD_FILT_HZ 2

1 Like

Dear colleagues, can you please help me with my optical flow setup.
I use Pixracer + VL53L1X rangefinder + Cheerson CX-OF sensor, Arducopter 4.0.3 dev firmware.
I installed and calibrated it according to Arducopter Wiki, the calibration log looks consistent:

But since I try to fly in PosHold mode - copter does not hold the position.
Here is my calibration and test flight logs (1- calibration, 8,9 - test flights): https://yadi.sk/d/eKV0bfwJxzflzg

plus params I used to fly on EKF 2 and 3
2020_03_02 arducopter V4.0.3-dev OF PosHold EK3.param (17.7 KB) 2020_03_02 arducopter V4.0.3-dev OF PosHold EK2.param (17.7 KB)

I’d like to understand - why we should use rotation (not moving the copter above the ground) during calibration (described here https://ardupilot.org/copter/docs/common-px4flow-overview.html)?
Because during calibration we compare Optical Flow data to Gyro data as we rotate the copter, and it looks consistent (picture above).
But during the test flight - copter, actually, drifts away from the point it must hold - and OF and Gyro data are not as consistent as during test rotation. OF shows, that copter drifts away, but Gyro remains still:

2 Likes