The DW3000 library in this repository was developed by NConcepts.
This project uses MakerFabs DW3000 UWB ESP32 modules.
This code is written for our work "UMotion: Uncertainty-driven Human Motion Estimation from Inertial and Ultra-wideband Units".
Anchor-tag (AT): measuring the distance from one tag to multiple anchors
Distance-matrix (DM): measuring the distance matrix among all nodes
src
├── at_dstwr # Anchor tag: double-sided two way ranging
│ ├── main.cpp # setup() and loop()
│ ├── uwb.cpp # ranging protocal
│ └── uwb.h # constants, declaration
├── at_sstwr # Anchor tag: single-sided two way ranging
│ ├── main.cpp
│ ├── uwb.cpp
│ └── uwb.h
├── dm_dstwr # Distance matrix: double-sided two way ranging
│ ├── main.cpp
│ ├── uwb.cpp
│ └── uwb.h
├── dm_sstwr # Distance matrix: single-sided two way ranging
│ ├── main.cpp
│ ├── uwb.cpp
│ └── uwb.h
└── platformio.ini
- Clone the repository onto your local system.
- Connect the ESP32 UWB3000 and modify
upload_port
andmonitor_port
inplatformio.ini
.U1 is the initiator
- AT:
env:at_sstwr/dstwr_u<1-6>
. - DM:
env:dm_sstwr/dstwr_u<1-6>
- AT:
- Modify
NUM_NODES
andINTERVAL
inuwb.h
- Upload the code
pio run -e <env name>
to each device
If you find this code useful in your research, please cite:
@inproceedings{liu2025umotion,
title={UMotion: Uncertainty-driven Human Motion Estimation from Inertial and Ultra-wideband Units},
author={Liu, Huakun and Ota, Hiroki and Wei, Xin and Hirao, Yutaro and Perusquia-Hernandez, Monica and Uchiyama, Hideaki and Kiyokawa, Kiyoshi},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
pages={7085--7094},
year={2025}
}
- IMU (BNO086)-UWB (DW3000) sensing
Note: If you encounter any issues or have questions, feel free to open an issue. You may also contact me via the email address: [email protected].