I just started thinking about applying Deca modules in one more project, but this time synchronizing anchors clocks seems inevitable. Has anyone of you applied TDoA algorithms with a success? I have to implement location engine with limited hardware resources (Cortex-M0 core). Do you think it is possible to process those data with decent frequency (100Hz)?
we played around with wired synchronization via Ethernet. The results are promising. We distributed the clock along with the sync signals. The tough part is to drive the Ethernet cable over large distances, since you need to take care of wire length. However, there is an application note from Decawave available.
I would recommend that you do the location engine on dedicated hardware to increase your update rate.
On the other side an analytical method to solve the position based on TDoA is not that hard to implement and is also computationally not expensive (but need you matrix inversion).
Can you recommend some materials to study ? I just wonder whether there are some methods to solve hyperbolas intersection more efficiently than normal analytical approach.
For hyperbolic trilateration I recommend the work from Shen (Performance Comparison of TOA and TDOA Based Location Estimation Algorithms in LOS Environment).
As said, approximation with Taylor Series (or all recursive approaches) requires way more computational power despite better results. However, the performance of an analytical solution is not that bad and it is really a tradeoff with computational power. We investigated this in the past for ToA methods and simulated this using Matlab.
The external clock seems working ok.
But we cannot make the sync work as expected.
We use Arduino Pro Mini + DWM1000 chip and a DW1000 library for Arduino porting (https://github.com/thotro/arduino-dw1000)
To make it simple we connected an Arduino pin to the DWM1000 sync pin (pin 4)
and triggered the high voltage to the DWM1000 sync pin.
But when DWM1000 system timestamps are printed, triggering the sync pin doesn’t make any difference.
(expected result : The DWM1000 system timestamps are initialized to zero and started again)
We followed guide in aps007_wired_sync_rtls_with_the_dw1000.pdf.
Use an osciliator for the external clock and connect it to the DWM1000 directly.
Set ‘OSTRM’ to 1 and ‘WAIT’ to 33 in the EC_CTRL Register
Trigger the high voltage to the DWM1000 sync pin using Arguino
When you succeeded in the wired synchronization,
Did you use DWM1000 or DW1000?
How did you trigger the high voltage to the DWM1000 sync pin?
Did you trigger the high voltage to the DWM1000 sync pin using S/W?
Or did you use additional sync generation H/W?
I used the External Sync configuration in the dwt_initialize part (as given in the Demo application code by Decawave) before calling the dwt_configure function. But still, if I print the System time using dwt_readsystime it just prints FFFFFFFFFF.
I have verified that my External clock and Sync signals are correct. Can you tell me what am I missing? or am I doing the External Sync configuration in the wrong part of the code?