decawave / uwb-apps Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Board used: DW1001
After working for a while in a real environment, I wanted to higher the preamble and lower the data rate for longer distances and be able to extend the NLOS situation (as stated in the application notes from DecaWave).
After doing so, I found out that when I set the preamble/data rate to a different value results in "Receive Wait Timeout" obtained from the sys_status at the dw1000_mac.c.
I'm changing the datarate and preamble by establishing at the nrng_tag and nrng_master_node as follows:
UWBCFG_DEF_DATARATE: ""850k""
UWBCFG_DEF_TX_PREAM_LEN: ""1024""
I've tried to change TWR_SS_NRNG_RX/TX_TIMEOUT, NRNG_RX/TX_TIMEOUT, TWR_SS_TX/RX_TIMEOUT, TDMA_SANITY_INTERVAL, OS_LATENCY, UWB_CFG_DEF_SFD_TO.
I've also tried changing the PHR to Standard and SFD_TYPE to 0.
It's weird because I'm testing the same parameters in another evaluation board that contains the DW1000 and they communicate. It seems as it was an application level problem resulting in a rx_timeout event that I'm not correctly understanding. Also, I've seen that in certain configurations I see the tag trying to TWR_SS in the Wireshark but the anchor does not respond.
Have you got working the TWR_NRANGES_TDMA example with other data rates / preamble lengths? If so, could you share the syscfg.yml of the nrng_tag and nrng_master_node just in case I'm missing something?
Thanks!
@ncasaril some help into this would be amazing :) sorry for tagging as I know it may be annoying
After some testing with the default application, we've seen that everything is ok.
But, due to one of our use cases, we found that master is not able to communicate with a considerable amount of anchors when there is a hard NLOS situation (therefore, anchors are unusable due to lack of sync signal). After reviewing the source code, we found there is an option to activate the CCP_RELAY_NODE in the anchors firmware to extend the synchronization.
We found that yellow light / blue light are properly blinking when the RELAY is activated in those anchors, but we can not see any ranges on the tag with anchors when the master is not in tag's range.
What parameters are we missing to configure? We found that rtdoa_node is also using RELAY but we are not sure which parameters are relevant.
Hi!
I've been testing with the NRNG_TAG / NRNG_NODE examples and everything is working really good but I would need to add
statistics to debug and mitigate in case a Hard-NLOS is found. I've tried to modify the code in many ways together with amend paramers but can not find the way to get them correctly.
I've tried to amend this parameters:
NRNG_VERBOSE: 2
TWR_DS_EXT_NRNG_ENABLED: 1
RNG_VERBOSE: 2
RNG_STATS: 2
NRNG_STATS: 2
UWBCFG_DEF_RX_DIAG_EN: '"1"'
But seems like none of them work. I've also debugged and found out that all statistic values are always set to 0 so it seems like these amend parameters do not work properly.
Hi there,
I have a dwm1001-dev board and I wanted to ask if the code examples in this repo can support dwm1001-dev board
Thanks in advance
Hi sir
I'm new to this field and i want to make dw3000 work as an anchor and tag ..??
please can you suggest me how can i make them work..??
Hoping for your help :-(
I cannot figure out how to disable the "cc1: all warnings being treated as errors" for little format warnings. I tried editing the .yml files but it only applies to the current directory. Is there a straight forward way to edit these flags for parent directories such as decawave-uwb-core?
I'm attempting to build the bootloader for DWM1001 as shown in 5. in the tutorial under README.md, but I'm running into the following error.
system specs:
uwb-apps:
master
mynewt:
1.8.0
gcc:
10.3.0
Compiling repos/mcuboot/boot/mynewt/src/main.c
Error: repos/mcuboot/boot/mynewt/src/main.c:
In function 'main': repos/mcuboot/boot/mynewt/src/main.c:254:5:
error: implicit declaration of function 'hal_bsp_deinit'; did you mean 'hal_bsp_init'? [-Werror=implicit-function-declaration]
254 | hal_bsp_deinit();
| ^~~~~~~~~~~~~~
| hal_bsp_init
cc1: all warnings being treated as errors
Hi, I tested rtdoa examples with MDEK1001(DWM1001) .
But the range of Tag is not correct.
Is it working correctly without any modification?
i am trying to add sleep just like in the example of tdoa_tag
/* Enter sleep */
uwb_phy_forcetrxoff(udev);
uwb_phy_rx_reset(udev);
uwb_sleep_config(udev);
uwb_enter_sleep(udev);
after nrng_complete_cb(struct dpl_event *ev) is called. The code is able get the pan slot_id and compute the distance only for once, after that it shows
slot_timer_cb_....start_tx_error
please help me resolve this issue.
Thanks
When attempting to run the example app twr_nranges_tdma (1 master, 3 slave and 1 tag node) I always receive a crash exception on startup. It always occurs on at least the master and tag, which I am monitoring from a PC. My hardware platform is the Decawave MDEK1001 evaluation kit units. The GDB exception and RTT output is included below. I'd greatly appreciate any help is discovering the source of the issue. Thanks!
Reading symbols from bin/targets/nrng_tag/app/apps/twr_nranges_tdma/twr_nranges_tdma.elf...
os_tick_idle (ticks=33) at repos/apache-mynewt-core/hw/mcu/nordic/nrf52xxx/src/hal_os_tick.c:160
160 if (ticks > 0) {
Resetting target
0x000000dc in ?? ()
(gdb) continue
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
hal_system_reset () at repos/apache-mynewt-core/hw/mcu/nordic/nrf52xxx/src/hal_system.c:56
56 asm("bkpt");
(gdb) quit
A debugging session is active.
{"utime": 34566581,"seq": 30,"uid": 7211,"ouid": [16663,16556],"rng": [0.112,1.252]}
{"utime": 34593475,"seq": 31,"uid": 7211,"ouid": [16663,16556],"rng": [0.082,1.235]}
{"utime": 34620354,"seq": 32,"uid": 7211,"ouid": [16663,16556],"rng": [0.098,1.266]}
{"utime": 34647248,"seq": 33,"uid": 7211,"ouid": [16663,16556],"rng": [0.114,1.228]}
{"utime": 34674128,"seq": 34,"uid": 7211,"ouid": [16663,16556],"rng": [0.063,1.268]}
{"utime": 34701015,"seq": 35,"uid": 7211,"ouid": [16663,16556],"rng": [0.107,1.292]}
{"utime": 34727909,"seq": 36,"uid": 7211,"ouid": [16663,16556],"rng": [0.114,1.214]}
{"utime": 34754789,"seq": 37,"uid": 7211,"ouid": [16663,16556],"rng": [0.089,1.310]}
{"utime": 34781683,"seq": 38,"uid": 7211,"ouid": [16663,16556],"rng": [0.082,1.264]}
{"utime": 34830405,"seq": 0,"ouid": [0,0,2599,0,0],"rng": [0.000,0.000,0.000,0.000,0.000]}
{"utime": 34830405,"seq": 0,"ouid": [325,0,325,0,325,0,325],"rng": [0.000,0.000,0.000,0.000,0.000,0.000,0.000]}
{"utime": 34830405,"seq": 0,"ouid": [325,0,325,0],"rng": [0.000,0.000,0.000,0.000]}
{"utime": 34830405,"seq": 0,"ouid": [325,0,325,0],"rng": [0.000,0.000,0.000,0.000]}
{"utime": 34830405,"seq": 0,"ouid": [20688,56571,18441,18698],"rng": [0.000,9259532.000,-1.470,0.000]}
{"utime": 34830405,"seq": 0,"ouid": [597,0,1077,0],"rng": [32840.031,0.000,0.000,0.000]}
004461 Unhandled interrupt (3), exception sp 0x20000c98
004461 r0:0x20000890 r1:0x20002ccc r2:0x00000000 r3:0x30333734
004461 r4:0x20000890 r5:0x20002ccc r6:0x200008dc r7:0x200008c4
004461 r8:0x00000000 r9:0x00000100 r10:0x00000000 r11:0x00000000
004461 r12:0x00000000 lr:0x0001bfc3 pc:0x30333734 psr:0x20000000
004461 ICSR:0x00421803 HFSR:0x40000000 CFSR:0x00000100
004461 BFAR:0xe000ed38 MMFAR:0xe000ed34
newt target create dwm1001_desense
newt target set dwm1001_desense app=apps/desense
newt target set dwm1001_desense bsp=@decawave-uwb-core/hw/bsp/dwm1001
newt target set dwm1001_desense build_profile=debug
newt run dwm1001_desense 0
When I try to build the dwm1001_desense example with above commands, I ran into the following problem.
Compiling repos/decawave-uwb-core/lib/uwb_rf_tests/desense/src/desense.c
Error: repos/decawave-uwb-core/lib/uwb_rf_tests/desense/src/desense.c: In function 'send_test':
repos/decawave-uwb-core/lib/uwb_rf_tests/desense/src/desense.c:235:29: error: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'uint32_t {aka long unsigned int}' [-Werror=format=]
printf("%s:%d TEST %"PRIu32"\n", __func__, __LINE__, desense->num_test_sent);
^
repos/decawave-uwb-core/lib/uwb_rf_tests/desense/src/desense.c: In function 'rx_complete_cb':
repos/decawave-uwb-core/lib/uwb_rf_tests/desense/src/desense.c:507:70: error: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'uint32_t {aka long unsigned int}' [-Werror=format=]
printf("WARNING Error allocating memory for %"PRIu32" packets\n", req->test_params.n_test);
^
repos/decawave-uwb-core/lib/uwb_rf_tests/desense/src/desense.c: In function 'uwb_desense_pkg_init':
repos/decawave-uwb-core/lib/uwb_rf_tests/desense/src/desense.c:867:26: error: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'uint32_t {aka long unsigned int}' [-Werror=format=]
printf("{\"utime\": %"PRIu32",\"msg\": \"uwb_desense_pkg_init\"}\n",
^
cc1: all warnings being treated as errors
I know PRIu32
is used to print uint32_t
, so these errors is strange.
When compiling the rtdoa_node
or the rtdoa_tag
example, I get compile errors.
Software-Versions:
uwb-apps
: mastergcc
: 9.2.1 & 10.2.1mynewt
: 1.8.0Hardware: DWM1001
Error:
Error: repos/decawave-uwb-core/lib/uwb_pan/src/uwb_pan.c: In function 'handle_pan_request':
repos/decawave-uwb-core/lib/uwb_pan/src/uwb_pan.c:353:48: error: taking address of packed member of 'struct _pan_frame_t' may result in an unaligned pointer value [-Werror=address-of-packed-member]
353 | if (pan->request_cb(request->long_address, &request->req, &response->req)) {
| ^~~~~~~~~~~~~
repos/decawave-uwb-core/lib/uwb_pan/src/uwb_pan.c:353:63: error: taking address of packed member of 'struct _pan_frame_t' may result in an unaligned pointer value [-Werror=address-of-packed-member]
353 | if (pan->request_cb(request->long_address, &request->req, &response->req)) {
| ^~~~~~~~~~~~~~
cc1: all warnings being treated as errors
I'm using the RTDOA example. Is there any way to enable support for the LIS2DH12 accelerometer? I see that in the syscfg.yml for the RTDOA example, there are parameters LSM6DSL_ONB, LIS2MDL_ONB, and LPS22HB_ONB, but unfortunately not for DWM1001's onboard LIS2DH12.
Looking through the code, I see that IMU data is periodically printed out. Is the IMU data used at all in the RTDOA solution, or is it just informational? If it isn't needed by the RTDOA algorithm, then I won't be concerned so much.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.