Channel sounding distance accuracy

Hi,

I'm using 2 NRF54L15DK with Bluetooth le with initiator RREQ/ reflector RRSP sample code. The distance reported by the initiator is completely wrong.

This is by separating the 2 DK from 20 cm:
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.61, rtt: 11.77 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.61, rtt: 11.77 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.60, rtt: 11.37 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.60, rtt: 11.37 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.60, rtt: 11.37 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.60, rtt: 11.68 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.60, rtt: 11.76 meters
I: Latest distance estimates on antenna path 0: ifft: 0.54, phase_slope: 1.60, rtt: 11.86 meters
I: Latest distance estimates on antenna path 0: ifft: 0.54, phase_slope: 1.62, rtt: 11.76 meters
I: Latest distance estimates on antenna path 0: ifft: 0.55, phase_slope: 1.64, rtt: 12.16 meters
I: Latest distance estimates on antenna path 0: ifft: 0.55, phase_slope: 1.62, rtt: 11.76 meters
I: Latest distance estimates on antenna path 0: ifft: 0.55, phase_slope: 1.62, rtt: 12.16 meters
I: Latest distance estimates on antenna path 0: ifft: 0.55, phase_slope: 1.64, rtt: 12.17 meters
I: Latest distance estimates on antenna path 0: ifft: 0.56, phase_slope: 1.65, rtt: 12.17 meters
I: Latest distance estimates on antenna path 0: ifft: 0.56, phase_slope: 1.65, rtt: 12.17 meters
I: Latest distance estimates on antenna path 0: ifft: 0.55, phase_slope: 1.67, rtt: 12.08 meters
I: Latest distance estimates on antenna path 0: ifft: 0.51, phase_slope: 1.64, rtt: 11.25 meters
I: Latest distance estimates on antenna path 0: ifft: 0.49, phase_slope: 1.63, rtt: 11.70 meters
I: Latest distance estimates on antenna path 0: ifft: 0.49, phase_slope: 1.63, rtt: 11.25 meters
I: Latest distance estimates on antenna path 0: ifft: 0.51, phase_slope: 1.63, rtt: 11.70 meters
I: Latest distance estimates on antenna path 0: ifft: 0.51, phase_slope: 1.67, rtt: 11.70 meters
I: Latest distance estimates on antenna path 0: ifft: 0.52, phase_slope: 1.63, rtt: 11.33 meters
I: Latest distance estimates on antenna path 0: ifft: 0.52, phase_slope: 1.63, rtt: 11.33 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.61, rtt: 11.33 meters
I: Latest distance estimates on antenna path 0: ifft: 0.53, phase_slope: 1.61, rtt: 11.70 meters

This is from 40cm:

I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.68, rtt: 12.30 meters
I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.68, rtt: 12.30 meters
I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.68, rtt: 12.52 meters
I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.68, rtt: 12.52 meters
I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.68, rtt: 12.58 meters
I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.68, rtt: 12.58 meters
I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.69, rtt: 12.52 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.69, rtt: 12.52 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.70, rtt: 12.58 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.70, rtt: 12.72 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.70, rtt: 12.58 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.70, rtt: 12.58 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.70, rtt: 12.58 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.70, rtt: 12.59 meters
I: Latest distance estimates on antenna path 0: ifft: 1.57, phase_slope: 1.70, rtt: 12.59 meters
I: Latest distance estimates on antenna path 0: ifft: 1.56, phase_slope: 1.70, rtt: 12.72 meters
I: Latest distance estimates on antenna path 0: ifft: 1.55, phase_slope: 1.70, rtt: 12.96 meters
I: Latest distance estimates on antenna path 0: ifft: 1.55, phase_slope: 1.69, rtt: 12.72 meters
I: Latest distance estimates on antenna path 0: ifft: 1.55, phase_slope: 1.68, rtt: 12.72 meters
I: Latest distance estimates on antenna path 0: ifft: 1.54, phase_slope: 1.68, rtt: 12.72 meters
I: Latest distance estimates on antenna path 0: ifft: 1.54, phase_slope: 1.68, rtt: 12.90 meters

This is from 150cm:


test distance estimates on antenna path 0: ifft: 2.50, phase_slope: 8.68, rtt: 19.62 meters
I: Latest distance estimates on antenna path 0: ifft: 2.42, phase_slope: 8.68, rtt: 19.72 meters
I: Latest distance estimates on antenna path 0: ifft: 2.42, phase_slope: 8.68, rtt: 19.99 meters
I: Latest distance estimates on antenna path 0: ifft: 2.42, phase_slope: 8.68, rtt: 19.99 meters
I: Latest distance estimates on antenna path 0: ifft: 2.42, phase_slope: 8.68, rtt: 20.07 meters
I: Latest distance estimates on antenna path 0: ifft: 2.42, phase_slope: 8.52, rtt: 21.14 meters
I: Latest distance estimates on antenna path 0: ifft: 2.50, phase_slope: 8.23, rtt: 21.14 meters
I: Latest distance estimates on antenna path 0: ifft: 2.63, phase_slope: 8.17, rtt: 20.07 meters
I: Latest distance estimates on antenna path 0: ifft: 2.63, phase_slope: 8.09, rtt: 19.99 meters
I: Latest distance estimates on antenna path 0: ifft: 2.63, phase_slope: 8.09, rtt: 19.99 meters
I: Latest distance estimates on antenna path 0: ifft: 2.67, phase_slope: 8.08, rtt: 19.55 meters
I: Latest distance estimates on antenna path 0: ifft: 4.00, phase_slope: 8.08, rtt: 19.45 meters
I: Latest distance estimates on antenna path 0: ifft: 4.11, phase_slope: 8.08, rtt: 18.07 meters
I: Latest distance estimates on antenna path 0: ifft: 4.14, phase_slope: 8.09, rtt: 18.07 meters
I: Latest distance estimates on antenna path 0: ifft: 4.19, phase_slope: 8.13, rtt: 18.07 meters
I: Latest distance estimates on antenna path 0: ifft: 4.20, phase_slope: 8.13, rtt: 18.38 meters
I: Latest distance estimates on antenna path 0: ifft: 4.24, phase_slope: 8.28, rtt: 18.38 meters
I: Latest distance estimates on antenna path 0: ifft: 4.24, phase_slope: 8.28, rtt: 18.38 meters
I: Latest distance estimates on antenna path 0: ifft: 4.24, phase_slope: 8.28, rtt: 18.38 meters
I: Latest distance estimates on antenna path 0: ifft: 4.24, phase_slope: 8.34, rtt: 18.38 meters

Is there something wrong in my use case ? The 2 DK are placed on my desk.

Best regards,
Alexis LECOQ

Parents
  • Hi guys, and thanks for the previous meeting Slight smile

    Just wanted to jump in here and add some extra details. 

    So in your email, I see that you added measurements that looked like this:

    Round-Trip Timing method: 2.633891 meters (derived from 7 samples)

    Phase-Based Ranging method: 0.511853 meters (derived from 38 samples)

    This does look like the output from the channel sounding sample that comes from the zephyr repo. This is the output from ours:
     
    I: Distance estimates on antenna path 0: ifft: 1.039173, phase_slope: 1.581897, rtt: 3.075647 I: Sleeping for a few seconds...
     
    I believe the ones produced by us works better, so I am glad that it looks like you use those now. With that out of the way let's talk about the results. 
    So, the tips from this point forward I would say comes in "layers" in a way. Let me start off with something that isn't that important, but I find important to mention:
    • My first point would be that all these measurements perform best in different scenarios. RTT performs relatively well in longer distances for instance, and RSSI performs relatively well extremely close (and I wonder if one could claim that the phase slope might get you a max range, but don't quote me on that). So I wouldn't simply say that what you are seeing simply isn't accurate, as these are different measurements that work in different ways/scenarios. You would typically trust one more than others depending on the results you are provided with. This old webinar (which is meant to describe how our old "Distance Toolbox" worked, but the tech is almost the same) goes a bit further into the details of what separates different metrics one could derive from I/Q values. 
    • In addition to this though I would say that our IFFT algorithm is the "the furthest developed", so it's tempting to simply say that you should focus on that and disregard the rest. But if you want to create something that works well, you should of course use all results in the situation they are best.
    • Keep in mind that the optimal results with channel sounding is within ±50cm. So if we were to just look at the IFFT results from your test with the DKs 20cm apart, that looks like a success to me. The other results don't look as good, but you've essentially just tried the next half-meter over. Considering the accuracy we are aiming for here, it would be more interesting to see how well it would measure something over a larger distance variation than that.
    • With that out of the way, there definitely might be things that make your results worse than they could be:  
      • One of these things could be the lack of an offset. We have a config to compansate for an offset based on the SoC or board here.
      • You mentioned in the email that you get different results depending on the orientation of the devices. The antenna on the DK is also very directional, which might make a difference here. You could choose one that isn't as directional in your final design, and try to compensate for this in the meantime by eg. pointing the antennas towards each other. I don't remember how the radiation pattern on our DKs look, but that is something we could get back to.
      • The scenario you are describing might not be the easiest. Things on the desk, the desk, and people around can add a lot of reflections for the device. If you held them facing eachother, with open air between them I think the results might look better.
      • And there are probably other items that I've forgotten to mention here. We can get back to this point.

    But there is something I tried to mention in the meeting that I would say is the most important thing to note here: if you really want good accuracy for your product, what you would typically do is to buy a third party distance algorithm. That would get you a better accuracy than what our code does.

    I would say that what Nordic mainly provides here SW-wise, is a compliant way to get the I/Q values. How you use those to figure out the distance is up to you, and I assume there are lot of choices one could make here. The BT spec doesn't force you to use a specific algorithm, so I assume there are various solutions out there that could for instance use more or less of the CPU to optimize this, depending on how much CPU you are willing to give away.

    If you contact your local regional sales manager I bet he would be able to put you in contact with someone selling third party CS algorithms.

     

    Regards,
    Elfving
Reply
  • Hi guys, and thanks for the previous meeting Slight smile

    Just wanted to jump in here and add some extra details. 

    So in your email, I see that you added measurements that looked like this:

    Round-Trip Timing method: 2.633891 meters (derived from 7 samples)

    Phase-Based Ranging method: 0.511853 meters (derived from 38 samples)

    This does look like the output from the channel sounding sample that comes from the zephyr repo. This is the output from ours:
     
    I: Distance estimates on antenna path 0: ifft: 1.039173, phase_slope: 1.581897, rtt: 3.075647 I: Sleeping for a few seconds...
     
    I believe the ones produced by us works better, so I am glad that it looks like you use those now. With that out of the way let's talk about the results. 
    So, the tips from this point forward I would say comes in "layers" in a way. Let me start off with something that isn't that important, but I find important to mention:
    • My first point would be that all these measurements perform best in different scenarios. RTT performs relatively well in longer distances for instance, and RSSI performs relatively well extremely close (and I wonder if one could claim that the phase slope might get you a max range, but don't quote me on that). So I wouldn't simply say that what you are seeing simply isn't accurate, as these are different measurements that work in different ways/scenarios. You would typically trust one more than others depending on the results you are provided with. This old webinar (which is meant to describe how our old "Distance Toolbox" worked, but the tech is almost the same) goes a bit further into the details of what separates different metrics one could derive from I/Q values. 
    • In addition to this though I would say that our IFFT algorithm is the "the furthest developed", so it's tempting to simply say that you should focus on that and disregard the rest. But if you want to create something that works well, you should of course use all results in the situation they are best.
    • Keep in mind that the optimal results with channel sounding is within ±50cm. So if we were to just look at the IFFT results from your test with the DKs 20cm apart, that looks like a success to me. The other results don't look as good, but you've essentially just tried the next half-meter over. Considering the accuracy we are aiming for here, it would be more interesting to see how well it would measure something over a larger distance variation than that.
    • With that out of the way, there definitely might be things that make your results worse than they could be:  
      • One of these things could be the lack of an offset. We have a config to compansate for an offset based on the SoC or board here.
      • You mentioned in the email that you get different results depending on the orientation of the devices. The antenna on the DK is also very directional, which might make a difference here. You could choose one that isn't as directional in your final design, and try to compensate for this in the meantime by eg. pointing the antennas towards each other. I don't remember how the radiation pattern on our DKs look, but that is something we could get back to.
      • The scenario you are describing might not be the easiest. Things on the desk, the desk, and people around can add a lot of reflections for the device. If you held them facing eachother, with open air between them I think the results might look better.
      • And there are probably other items that I've forgotten to mention here. We can get back to this point.

    But there is something I tried to mention in the meeting that I would say is the most important thing to note here: if you really want good accuracy for your product, what you would typically do is to buy a third party distance algorithm. That would get you a better accuracy than what our code does.

    I would say that what Nordic mainly provides here SW-wise, is a compliant way to get the I/Q values. How you use those to figure out the distance is up to you, and I assume there are lot of choices one could make here. The BT spec doesn't force you to use a specific algorithm, so I assume there are various solutions out there that could for instance use more or less of the CPU to optimize this, depending on how much CPU you are willing to give away.

    If you contact your local regional sales manager I bet he would be able to put you in contact with someone selling third party CS algorithms.

     

    Regards,
    Elfving
Children
No Data
Related