Skip to main content

Run Your Own Robot Swarm Testbed.

Project description

CI Coverage PyPI version License

SwarmIT

SwarmIT provides a embedded C port for nRF53 as well as Python based services to easily build and deploy a robotic swarm infrastructure testbed. ARM TrustZone is used to create a sandboxed user environment on each device under test, without requiring a control co-processor attached to it.

Features

  • Experiment management: start, stop, monitor and status check
  • Deploy a custom firmware on all or on a subset of robots of a swarm testbed
  • Resilient robot state: even when crashed by buggy user code, the robot can be reprogrammed remotely and wirelessly

Usage

Get the code

Swarmit depends on the DotBot-libs and Mari repositories. They are included in the codebase as Git submodules.

Use the following command to clone the Swarmit codebase locally:

git clone --recurse-submodules https://github.com/DotBots/swarmit.git

Embedded C code

SwarmIT embedded C code can be built using Segger Embedded Studio (SES). Use Tools > Package manager to install the CMSIS 5 CMSIS-CORE, CMSIS-DSP and nRF packages.

To provision a device, follow the following steps:

  1. open netcore.emProject and bootloader.emProject (or bootloader.emProject depending on your robot version) in SES
  2. build and load the netcore application on the nRF53 network core,
  3. build and load the bootloader application on the nRF53 application core.

The device is now ready.

Gateway

The communication between the computer and the swarm devices is performed via a gateway board connected via USB to the computer.

This gateway uses the mari network stack and must run the Mari gateway firmware.

The documentation to setup a Mari gateway is located here.

Python CLI script

The Python CLI script provides commands for flashing, starting and stopping user code on the device, as well as monitoring and checking the status of devices in the swarm.

The Python CLI script connects via a virtual COM port to the gateway connected to the computer.

The Python CLI script is available on PyPI. Install it using:

pip install swarmit

Print usage using swarmit --help:

Usage: swarmit [OPTIONS] COMMAND [ARGS]...

Options:
  -p, --port TEXT                 Serial port to use to send the bitstream to
                                  the gateway. Default: /dev/ttyACM0.
  -b, --baudrate INTEGER          Serial port baudrate. Default: 1000000.
  -H, --mqtt-host TEXT            MQTT host. Default: localhost.
  -P, --mqtt-port INTEGER         MQTT port. Default: 1883.
  -T, --mqtt-use_tls              Use TLS with MQTT.
  -n, --network-id INTEGER        Marilib network ID to use. Default: 1
  -a, --adapter [edge|cloud]
                                  Choose the adapter to communicate with the
                                  gateway.  [default: edge]
  -d, --devices TEXT              Subset list of devices to interact with,
                                  separated with ,
  -v, --verbose                   Enable verbose mode.
  -V, --version                   Show the version and exit.
  -h, --help                      Show this message and exit.

Commands:
  flash    Flash a firmware to the robots.
  message  Send a custom text message to the robots.
  monitor  Monitor running applications.
  reset    Reset robots locations.
  start    Start the user application.
  status   Print current status of the robots.
  stop     Stop the user application.

Control Tower Dashboard

The Control Tower is a web-based platform (backend and frontend) that enables users to manage and monitor the testbed remotely. It provides an interface for reserving timeslots, inspecting the live status of all DotBots, and supervising experiments. The platform displays each device’s position and operational state, and offers mechanisms to flash firmware, start or stop experiments, and oversee ongoing activity across the testbed.

Setup

  1. Download all requirements.
pip install swarmit[dashboard]
  1. Generate a private and public key for the JWT
# Create the data directory
mkdir -p .data

# Generate Ed25519 private key
openssl genpkey -algorithm Ed25519 -out .data/private.pem

# Extract the public key
openssl pkey -in .data/private.pem -pubout -out .data/public.pem

Running the Dashboard

After the initial setup (required only once), you can launch the dashboard with all configuration options using:

python3 -m swarmit.dashboard.main --http-port 8080 --open-browser

Access the dashboard at https://localhost:8080

NOTE: Your dashboard CLI options may differ depending on your example or environment.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

swarmit-0.7.0.tar.gz (178.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

swarmit-0.7.0-py3-none-any.whl (193.5 kB view details)

Uploaded Python 3

File details

Details for the file swarmit-0.7.0.tar.gz.

File metadata

  • Download URL: swarmit-0.7.0.tar.gz
  • Upload date:
  • Size: 178.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for swarmit-0.7.0.tar.gz
Algorithm Hash digest
SHA256 223cdbe7f181a7f58cea9c7d4b4ea095a2b69f3a37c8463917e73db42a4ce080
MD5 070045d10ce69a2d6e38b1eb81663cde
BLAKE2b-256 45bcc2844c6b7de5996e8690093ede6c10e1221ebcf30f14911636482f141853

See more details on using hashes here.

File details

Details for the file swarmit-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: swarmit-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 193.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for swarmit-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31b156a939b858b89b29e4ba5b89c35b2dde2b84bfb67de4dbd83f0c291a0543
MD5 ac3cc0430106ed424b867edcc1f610dc
BLAKE2b-256 a880972a72803d36401e32154adcc22e073ad0602ef1a871a27cbae65a2cf150

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page