Coder Social home page Coder Social logo

Comments (3)

goldenminerlmg avatar goldenminerlmg commented on June 14, 2024

@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.

from uwb-localization.

lijx10 avatar lijx10 commented on June 14, 2024

@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:
  • Relative distance between any pair of anchors. That is triangulation_error_term.hpp
  • Fix one of the anchor as the origin, i.e., anchor_101: [0, 0, 0] in uwb_calibration.yaml
  • Force the direction of one of the anchor, i.e., anchor_102_direction: [0,0,0, 1,0,0], in uwb_calibration.yaml. More specifically, denote the coordinate of anchor_102 and [x, y, z], we force [x-0, y-0, z-0] and [1, 0, 0] are in the same direction (angle between these two vectors = 0). This is defined in point_line_distance_error_term.hpp.
  • Until now, there is still one degree of freedom not fixed. We solve it by setting the z coordinate of another anchor. That is anchor_103_coordinate: {z: 0} in uwb_calibration.yaml.
  • We enforce some prior information. For example, we have accurate measurement (acquired by high precision laser ranger) of the height of anchors. Therefore we set the z coordinate of anchor_104, 105, 106.

from uwb-localization.

lijx10 avatar lijx10 commented on June 14, 2024

@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.

from uwb-localization.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.