Problem with EKF3_ALT_SOURCE=3 when using beacons

Hi’all

I’m using uwb beacons (with accuracy of 20cm in x,y and 30cm in z) to do indoor positioning with copter firmware 3.6.9 ( QUAD with a F4BY similar hardware), the beacon driver I wrote was like pozyx, but:

  1. the 4 static beacon positions(x,y,z) are pre-configured in the beacon init function through parameters.
  2. update tag’s x,y,z and distances from 4 beacons, every packet has both x,y,z and distances.

In the testing, the position update rate was 10Hz, the parameters of the copter were the same as in the doc for Marvelmind (http://ardupilot.org/copter/docs/common-marvelmind.html) except the BCN_ORIENT_YAW was set to 0, and I just set the copter’s compass magnetic declination as [ 360 - (yaw value when the nose pointed to the Local Y axis in a ENU system) ] .
when using EKF3_ALT_SOURCE=0 or 1(baro or range finder), the copter worked fine, it can get a copter icon in the MissionPlanner and it flew well (as expected as what showing in the beacon software).
But, when using EKF3_ALT_SOURCE=3 (range beacon), the copter most of the time could not get a “EKF using range beacon init” , and when it got a position init, the NED values were jumping very largely with values which the tag would never input (the position input of the tag was the same as EKF3_ALT_SOURCE=0 or 1).and the GROUND_SPEED was increasing all the time ( the copter stayed still all the time), and then sometime later MP showed it was rolling all the time like the system went crazy.

BTW, the position error in the BEACON driver is set to a static 0.2f / 0.3f, both value gave the same result.

The problem mostly lies on using the beacon data for the ALT_SOURCE, but I just could not figure out why, COULD anyone tell me what went wrong? much appreciated !!

@imnobodyet have you test in SITL yet?

ok, seems nobody knows why, i have to solve it thought.

by using a fake rangefinder type and driver uses the z value of the uwb tag output(transfer it to a relative height value from the ground), EKF3_ALT_SOURCE to 0 or 1, and it worked …