We are trying to achieve indoor autonomous flight in a drone we are developing. For this, we want to use Ultra-Wide Band (UWB) beacons. We are already able to track the location (not orientation) of an UWB beacon quite accurately. The next step for us is to have the Pixhawk (original Pixhawk, FMUv2, running PX4 v1.8.1) that we are using make use of this location. For this, we have set up a UP board with mavros, which sends the xy-data from the tracked UWB beacon to the Pixhawk over the /mavros/vision_pose/pose topic.
Pixhawk seems to have correctly received this location, as we saw in VISION_POSITION_ESTIMATE.
However, we can’t reliably LOCAL_POSITION_NED follow the ultra-wideband position: when the drone’s ground is stationary, the position is correct, but when we take off (using position control, for safety), the VISION_POSITION_ESTIMATE still receives the correct, but ekf2 fusion Local_position/pose data cannot follow the data published by vision_pose/pose
Set EKF2_AID_MASK to 8vision position fusion in qgc, EKF2_HGT_MODE to 2Range sensor, lidar gives height information,
EKF2_EV_DELAY is 23ms, EKF2_ACC_NOISE is 0.7, EKF2_GYR_NOISE is 0.03, my uwb is 9Hz or masquerading is 50Hz (the status_vision/pose is sent by timing regardless of the location information is not updated)
Hm, could it be that the yaw of the drone is off and therefore the position estimate diverges? I see that the magnetic measurements correlate a lot with thrust meaning that you have interference from the motors/ESCs to the mag. The easiest is usually to use an external mag far away, e.g. the ones that come with the GPS.
According to what you said, I removed the magnetometer on the gps and used the magnetometer on the px4 alone. Since the x-axis of the UWB coordinate system has an angular difference from the north, the magnetic declination EKF2_MAG_DECL is corrected to 23.
It is worth mentioning that the /mavros/vision_pose/pose orientation we published is read from the orientation of the imu/data topic published by px4, and the z-axis value uses the distance data of the lidar pointing to the ground.
@LShikang
Did you double check that the position data is correctly transformed from the UWB coordinate system to the NED coordinate system of the FCU?
Using the magnetometer indoors didn’t work for us due to interferences and dampening. We therefore use two UWB-Tags to determine the orientation of the UAV which works quite well.
In order to protect the magnetic compass from interference, we went to a more spacious place to do the test, but the effect was similar. We really use the NED frame.