if lack someone anchor, EKF also work?

All discussions related to the Loco Positioning system
Post Reply
justinleeyang
Expert
Posts: 186
Joined: Mon Dec 28, 2015 5:07 am

if lack someone anchor, EKF also work?

Post by justinleeyang »

Hi, arnaud:

as likely the thread:

I have developed the system asset track system based on the tdoa mode, but I don't use the EKF, rather than hyperbola location algorithm. so I need everyone tag and near anchor's distance diff, but I find that maybe someone anchor don't work. for example:
we have six anchors, previous anchor is anchor1, but crazyflie2 don't receive the anchor2's packet, so the current anchor change the anchor3, so we get the anchor1 and anchor3 distance diff, rather than anchor1 and anchor2 distance diff, EKF don't care if must anchor1 and anchor2 ? only care the distance diff two anchors ? maybe next frame, anchor2 work normally. so we still get the anchor1 and anchor2's distance diff.
arnaud
Bitcraze
Posts: 2538
Joined: Tue Feb 06, 2007 12:36 pm

Re: if lack someone anchor, EKF also work?

Post by arnaud »

This is correct, the EKF does not make any assumption about what difference of distance it will get, it uses the position of two anchors and the distance measured between them: https://github.com/bitcraze/crazyflie-f ... man.c#L925.
justinleeyang
Expert
Posts: 186
Joined: Mon Dec 28, 2015 5:07 am

Re: if lack someone anchor, EKF also work?

Post by justinleeyang »

Hi, arnaud:

Got it, thanks! so powerful.
justinleeyang
Expert
Posts: 186
Joined: Mon Dec 28, 2015 5:07 am

Re: if lack someone anchor, EKF also work?

Post by justinleeyang »

Hi, arnaud:

another question, why the anchorPostion is commented ? when range, every anchor will report their position?

Code: Select all

static lpsAlgoOptions_t algoOptions = {
  .tagAddress = 0xbccf000000000008,
  .anchorAddress = {
    0xbccf000000000001,
    0xbccf000000000002,
    0xbccf000000000003,
    0xbccf000000000004,
    0xbccf000000000005,
    0xbccf000000000006
  },
  .antennaDelay = (ANTENNA_OFFSET*499.2e6*128)/299792458.0, // In radio tick
  .rangingFailedThreshold = 6,

  .combinedAnchorPositionOk = false,

  // To set a static anchor position from startup, uncomment and modify the
  // following code:
//   .anchorPosition = {
//     {timestamp: 1, x: 0.99, y: 1.49, z: 1.80},
//     {timestamp: 1, x: 0.99, y: 3.29, z: 1.80},
//     {timestamp: 1, x: 4.67, y: 2.54, z: 1.80},
//     {timestamp: 1, x: 0.59, y: 2.27, z: 0.20},
//     {timestamp: 1, x: 4.70, y: 3.38, z: 0.20},
//     {timestamp: 1, x: 4.70, y: 1.14, z: 0.20},
//   },
//
//   .combinedAnchorPositionOk = true,
};
arnaud
Bitcraze
Posts: 2538
Joined: Tue Feb 06, 2007 12:36 pm

Re: if lack someone anchor, EKF also work?

Post by arnaud »

With TWR yes the anchor can now send there position. For TDoA and TWR the position of the anchor can be set using the parameter subsystem. This is implemented in ROS and in some autonomous flight python example.
Post Reply