lijx10 / uwb-localization

Accurate 3D Localization for MAV Swarms by UWB and IMU Fusion. ICCA 2018
Apache License 2.0
330 stars 146 forks source link

Calibration of anchor positions #2

Open precyon opened 5 years ago

precyon commented 5 years ago

Great work @lijx10 with the performance of your UAVs and thanks for making the localization code available.

I have been trying to understand the calibration part of your code. Is there is paper/documentation somewhere that could give me some hints? I understand that there is no unique solution to calibration of anchor positions if only the ranges between the anchors are known. So I have been trying to understand the following:

  1. Do you move the tag (or the UAV) during the calibration process?
  2. What are the inputs to calibration - ranges of all anchors from the tag or ranges of all anchors from each other?
  3. What are direction and coordinate constraints? How do you arrive at those?

Thanks!

goldenminerlmg commented 5 years ago

@precyon @lijx10 Same questions as above. 1) I think the tag should move during calibration because the calculation requirement for triangulation error. 2) Firstly from the paper I have thought the input may between each other. but the calibration code seems to use only the range between tag with anchors. In fact this may be more useful for calibration because we may not necessary to calibration before using them, may be simultaneously using in other problems like localization. 3) This also confused me, this parameters seems only can give roughly by manual measurement, which may cause errors for calibration. Hope communication with you! Thank you.

lijx10 commented 5 years ago

@precyon

  1. The calibration process involves only the anchors. The anchors are fixed and we estimate their positions according to the relative distance between any pair of anchors.
  2. The input is: the relative distance between any pair of anchors. That is, for anchor A and anchor B, we have the measurement d{AB} and d{BA} from the readings these to anchors. Any single measurement from UWB sensors are unreliable. Therefore we take the median of multiple measurements as the estimated distance between A and B, i.e., \hat{d{AB}}, \hat{d{BA}}. Ideally \hat{d{AB}} should be very close to \hat{d{BA}}.
  3. Yes, the relative distance doesn't give unique coordinates. In order to get a unique coordinate system, we apply the following practices:
lijx10 commented 5 years ago

@goldenminerlmg In our implementation, calibration (involved uncalibrated anchors) and localization (between calibrated anchors and the UAVs) are separate. That is:

  1. Fix the position of anchors.
  2. Perform calibration of the anchors.
  3. Localize the UAVs

For your questions:

1 & 2. Actually it is possible to perform calibration and localization simultaneously. But that requires quite some time for the algorithm to converge from initial guess. In our application, we requires the agile and accurate flight of UAVs once they takeoff. Therefore, we perform accurate calibration of the anchors before UAVs taking off.

  1. Our anchor calibration is formulated as an least square optimization. Therefore, initial guess is required. Line 5-11 in uwb_calibration.yaml are initial guess. The calibration will be performed based on relative distance measurements between anchors and the constraints. Please refer to my reply to @precyon for details.