Platform for developing distributed algorithms in the DWM1001-DEV board
Explore the docs »
Table of Contents
This project aims to develop a platform for distributed algorithms on the DWM1001C device, using a free and open source RTOS provided by ChibiOS. The DWM1001C includes a microcontroller and a transceptor to allow for wireless communication, we provide an interface between the hardware and a higher level API to implement distributed applications on real devices using Ultra-Wideband communications.
The project architecture is layered, providing different levels of abstraction for the different needs any application may have.
The application layer can benefit from a complete API in which sending a message to a device or receiving data is as easy as calling a function.
This project is a WIP so much of the functionality is still in development, any contributions or suggestions are welcome.
Documentation WIP
Many distributed algorithms that rely on wireless communication between separate devices could be implemented using this platform, here are some examples we have begun working on and testing:
Distributed localization in a plane with 3 devices
This application provides relative positioning information regarding the neighbours of each node on a distributed network, without relying on any external infrastruture. Using a Two-Way Ranging scheme distances between all neighbouring devices are obtained in a distributed fashion and, from these distances, relative position can be derived using trilateration.
Many consensus algorithms such as averaging between devices require frequent information exchange, our platform provides an implementation opportunity to test and run these algorithms.
Centroid estimation consensus algorithm, EXECUTED ON SIMULATION Source
This centroid estimation, can be implemented on real hardware using the communication API and creating an application which implements the algorithm's calculations and information exchange between devices.
Using this platform a huge number of distributed algorithms can be implemented such as clock synchronization...
Prerequites are mostly inherited from ChibiOS and related to the architecture of the board, OS for development and debugging should be GNU/Linux or al least a POSIX compliant shell and GNU utilities
-
arm-none-eabi toolchain
GNU Embedded toolchain used to compile, link and debug code for embedded devices.
-
OpenOCD
Used to connect to the board and flash or debug the code. OpenOCD
-
Jlink
Download from the official site, Segger.
For Linux, if the tar package is chosen, the path of the installation should be appended to system PATH variable.
- Clone the project repository
git clone https://github.com/Swarm-Systems-Lab/Distributed_localization_DWM1001.git - Prepare submodules
- Initialize the submodules with
git submodule init - Sync with remote
git submodule sync - Download submodules
git submodule update --recursive --remote
- Initialize the submodules with
- Run
make allto build all binaries.
- Plug the board through USB and make sure it is detected as a device through lsusb.
- Run
make flashto flash with J-link ormake openocd-flash
- Start the GDB server with
make openocd-debug-server - Open a GDB session with
make openocd-debug
A GBD server or session is created for each DWM1001-DEV board connected
If you use VSCode you can install the Cortex-Debug extension to debug from the GUI.
DWM1001-DEV development board
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please contact the project maintainers to contribute, we are open to any ideas, improvements or features :D.
Distributed under the GNU General Public License v2.0. See LICENSE for more information.
Swarm Systems Lab - swarmsystemslab@gmail.com
Project Link: https://github.com/Swarm-Systems-Lab/Distributed_localization_DWM1001


