thotro / arduino-dw1000

A library that offers functionality to use Decawave's DW1000 chips/modules with Arduino.
Apache License 2.0
516 stars 288 forks source link

Any Updtae in TDOA #108

Open maxicastle opened 8 years ago

maxicastle commented 8 years ago

Hello Everyone,

Some of you can get some advance in one of these critical topics for this Library:

Wired Clock Synchronization Wireless Clock synchronization TDoA System Multiple TAG Support without a cost in Update rate

Rotzbua commented 8 years ago

I think this library is more a driver than an application. So the topics you mention should be an extra repository. Maybe you find some code if you search some papers from universities.

Slamoth commented 7 years ago

DW1000 has a sync pin but DWM1000 does not have a sync pin. It says in DWM1000 documentation that wireless sync is possible but I could not find any information about how it can be done. The only clue I got is "reset the system clock counter." but I do not know how to do it either. Getting drowned in the documantation. There also a mention about One Shot Timebase Reset.

christos-h commented 7 years ago

I am looking forward to doing wired synchronization. I looked over the Decawave paper on the wireless synchronization and it seems much less straight forward. So any TDOA stuff requiring synchronization at this point should probably be done on the DW1000. I also have this feeling that their wireless synchronization protocols are proprietary and they are not widely accessible. Also I think this is why the DWM1000 does not have the SYNC pin. Just a hunch.

Also I found an older version of the DWM1000 (https://openrtls.com/shop/product/dwm1000-ortls-moq-50-pcs-13?category=5) which does have the SYNC pin. I'm not sure if its compatible with this library though. If it is, it may make it easier to get straight to testing without having to print custom PCB adapter boards.

Slamoth commented 7 years ago

I wrote to decawave. Will wait and see about the answer. I will share the answer when it comes.

maxicastle commented 7 years ago

The problem is this, You need the Sync Pin (GPIO7) but also you need to provide the same 38.4MHz Clk signal to all anchors (in order to avoid clock violations), the EXTCLK (XTAL1) is not available in the DWM1000, because is connected directly to an 38.4 XTAL oscilator.

StrHero commented 7 years ago

@Slamoth Looking forward to your reply.

Hope to be able to exchange learning with everyone. My Facebook:Yeoman Ku

Slamoth commented 7 years ago

Reply from decawave to the question of wireless sync option.... The DWM1000 could be used for TdoA applications, but we recommend only for TAG purpose/applications. In a wired synchronisation scheme the DWM1000 is not suitable as Anchor as the externally sync pin available on DW1000 (pin 29) is not available on the DWM1000 (pin 4). This is also stated in the DWM1000 datasheet. Information on wired synchronisation is available in our application note: APS007 Wired Sync RTLS with the DW1000, which is attached (it is also available from our website.) Information on wireless synchronisation of the clocks is available, but there is a fee attached as it contains IP.

StrHero commented 7 years ago

@Slamoth Thank you very much! Is this mean that if we don't know the IP,then we'll not do the project based on wireless synchronisation? Do you know the price of the IP of wireless synchronisation.

maxicastle commented 7 years ago

I asked to decawave some months ago, The IP cost is more or less 35K USD really expensive, and only includes Documentation and pseudocodes. But something interesting the decawave expert tells me that even with the possibility to make a wireless sync, a wired sync system is alway more robust.

Slamoth commented 7 years ago

Wireless sync is all about blink frames but you need LOS condition for that to work as expected. Maxi is right about wired sync.

5 Mar 2017 01:10 tarihinde "maxicastle" notifications@github.com yazdı:

I asked to decawave some months ago, The IP cost is more or less 35K USD really expensive, and only includes Documentation and pseudocodes. But something interesting the decawave expert tells me that even with the possibility to make a wireless sync, a wired sync system is alway more robust.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/thotro/arduino-dw1000/issues/108#issuecomment-284188303, or mute the thread https://github.com/notifications/unsubscribe-auth/AGMEUX5GHXxNySP2qE8LKrjGcdoVCzJCks5rieEQgaJpZM4Jhq7w .

Slamoth commented 7 years ago

This thing contains all TDOA in it. http://www.semiconductorstore.com/cart/pc/viewPrd.asp?idproduct=50835&utm_source=octopart&utm_medium=compref&utm_campaign=OCTPTEC&utm_term=SW1201_TDOA_RTLS_SOFTWARE

Rotzbua commented 7 years ago

Please move the information about TDoA to the wiki. Thanks. duplicates #47 #77 #108 #128 #130 #152

AlexisTM commented 6 years ago

Reverse TDOA implementation by the Loco positioning system by Bitcraze for CrazyFlies, using the DWM1000.

Anchor software:

anchor.c: https://github.com/bitcraze/lps-node-firmware/blob/master/src/uwb_tdoa_anchor2.c Tag software:

tag.c: https://github.com/bitcraze/crazyflie-firmware/blob/a4dc79f53af771788c8fc67275b07b29ccc7a3a1/src/deck/drivers/src/lpsTdoaTag.c tag.h: https://github.com/bitcraze/crazyflie-firmware/blob/a4dc79f53af771788c8fc67275b07b29ccc7a3a1/src/deck/drivers/interface/lpsTdoaTag.h config: https://github.com/bitcraze/crazyflie-firmware/blob/a4dc79f53af771788c8fc67275b07b29ccc7a3a1/src/deck/drivers/src/locodeck.c

anthony211212 commented 1 year ago

Does anyone have any source code related to TDOA? Has anyone found any new developments regarding this topic?

AlexisTM commented 1 year ago

@anthony211212 I had 16 robots running with this implementation https://github.com/AlexisTM/MultilaterationTDOA

The board was a Bitcraze Roadrunner (using DW1000) sending the data out in this custom firmware using this data format Mavlink format

You can "just" replicate the Bitcraze algorithm and have a cheap solution.

anthony211212 commented 1 year ago

I would like to use ESP32 microcontroller and dw1000. Do you think it would be appropriate for this situation? Thanks.

AlexisTM commented 1 year ago

Yes, you can, I had success from 8 anchors and we were using 16 for coverage of the area.

anthony211212 commented 1 year ago

Thank you for your message. Thotro library to calculate distance between anchor and tag with twr method and then you have performed distance measurement with tdoa method with a code similar to the one in the link you shared. Am I understanding it correctly? Because I didn't see a separate code file for anchor and tag.

anthony211212 commented 1 year ago

By the way I have ESP32 DW1000 UWB (Ultra Wideband) Module and I ask for it.

AlexisTM commented 1 year ago

Hi, that is incorrect. TDoA is a completely different concept. You could understand it as the Anchors does TWR between themselves; The tags (whatever the amount) are purely passive and listening to the anchors communication. From the anchor data received, the tags infer their position.

Check the link of Bitcraze, they explain the whole setup and how to replicate it.

anthony211212 commented 1 year ago

I will check it right away. Thank you very much for your answers.

anthony211212 commented 1 year ago

Clearly, I'm new to this stuff, so do you have a chance to explain a bit more explicitly? For example, which codes do I need to upload separately for the tags and anchors? Thank you for your help and answers.

anthony211212 commented 9 months ago

@AlexisTM Hey Alexis. I would like to ask which code files did you use for anchors and tags?

AlexisTM commented 9 months ago

I used the Crazyflie Roadrunner, with a custom patch (umdlife#crazyflie-firmware@u2_feature_custom_kalman) to send out the TDoA measurement outside of the device AlexisTM/roadrunner_mavlink then compute the position using AlexisTM/MultilaterationTDOA.

This was a while ago. The crazyflie patch would have to be redone (but it is using the same DW1000 sensor)