Skip to content

Swarm-Systems-Lab/Distributed_localization_DWM1001

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

174 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Stargazers Issues License Project Page


Logo

Distributed algorithm platform for the DWM1001-DEV

Platform for developing distributed algorithms in the DWM1001-DEV board
Explore the docs »

Table of Contents
  1. About The Project
  2. Prerequisites
  3. Installation
  4. Contributing
  5. License
  6. Contact

About The Project

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.

  1. Hardware abstraction (Configure data rate, channel, timeout..) (Cross-platform)

  2. Device Driver and peripherals (Drivers for DW1000, UART... on ChibiOS)

  3. Communication and networking (API for sending, receiving, broadcasting...)

  4. Application (Any application you wish to implement)



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

Usage examples

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 for robot swarms

dist-loc

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.

Consensus protocols

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

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.

Anything you can think of

Using this platform a huge number of distributed algorithms can be implemented such as clock synchronization...

Built With

  • ChibiOS
  • ChibiOS-Contrib
  • Jlink
  • OpenOCD
  • GDB

Prerequisites

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.

Building

  1. Clone the project repository git clone https://github.com/Swarm-Systems-Lab/Distributed_localization_DWM1001.git
  2. Prepare submodules
    • Initialize the submodules with git submodule init
    • Sync with remote git submodule sync
    • Download submodules git submodule update --recursive --remote
  3. Run make all to build all binaries.

Flashing

  1. Plug the board through USB and make sure it is detected as a device through lsusb.
  2. Run make flash to flash with J-link or make openocd-flash

Debugging

  1. Start the GDB server with make openocd-debug-server
  2. 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.

board-img

DWM1001-DEV development board

Contributing

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please contact the project maintainers to contribute, we are open to any ideas, improvements or features :D.

License

Distributed under the GNU General Public License v2.0. See LICENSE for more information.

Contact

Swarm Systems Lab - swarmsystemslab@gmail.com

Project Link: https://github.com/Swarm-Systems-Lab/Distributed_localization_DWM1001

(back to top)

About

Distributed localization system based on DWM1001C

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •