Skip to content

About

Swarm application and client for managing and maintaining Crazyflies

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swarmkeeper

A tool for creating, configuring, and maintaining Crazyflie swarms. For some specific functionality there's also an accompanying application.

Still very much work in progress...

Components

Firmware

Out-of-tree Crazyflie firmware application providing swarm-specific functionality.

Building:

cd firmware/swarmkeeper-app
CRAZYFLIE_BASE=<path-to-crazyflie-firmare> make

Client

Rust desktop application for managing and operating Crazyflie swarms. Built with Slint for the UI and OpenGL for 3D visualization.

Features:

  • Unit management -- connect to a swarm of Crazyflies, monitor status (battery, position, state), upload trajectories, and control flight (takeoff, goto, land, emergency stop)
  • Several Crazyradios -- a URI with the radio left empty (radio:///80/2M/E7E7E7E701) means any Crazyradio. Connecting the swarm spreads those Crazyflies over all Crazyradios that can be opened, keeping Crazyflies on the same (or a neighbouring) channel on one radio; a number in the URI still pins that radio. The same rules as cfcli. The unit list shows the radio each one got
  • Rechannel -- spread the swarm over several channels (Setup > Rechannel Swarm...) so that it can use one Crazyradio per channel. Each Crazyflie that moves is reprogrammed, rebooted and found on its new channel before its URI in the swarm file changes
  • Shared TOC download -- connecting the swarm downloads each parameter/log TOC that isn't cached yet from one Crazyflie only; the others with the same firmware wait and then connect from the cache. Each Crazyradio connects 8 Crazyflies at a time
  • Shared swarms -- sign in to a server that shares swarms (the account menu at the right of the menu bar), and File > Open swarm lists the swarms shared in your organizations next to the swarm files, with the same <org>/<swarm> IDs as cfcli. A shared swarm opens at its latest revision, or from this computer's copy when the server can't be reached, and a newer revision is offered for reloading
  • Radio test -- measure link quality per channel for each Crazyflie in the swarm
  • 3D visualization -- real-time view of Crazyflie positions, Lighthouse base stations, and Loco anchors with labels
  • Lighthouse coverage -- place base stations, configure room dimensions and offsets, and compute/visualize which areas have coverage from 0--4+ base stations. Includes receiver FOV and tilt compensation settings. Load base station geometry from Crazyflie config files
  • Lighthouse wizard -- guided step-by-step calibration of Lighthouse base station geometry from measurement samples, with a built-in solver (WIP)
  • TDoA3 coverage -- place Loco anchors and compute GDOP / positioning error metrics (GDOP, HDOP, VDOP, per-axis error, sensitivity) with color-mapped voxel visualization
  • Planning -- combined scene editor for designing a positioning system. Place Lighthouse base stations, TDoA3 anchors, and opaque geometric obstacles (boxes, cylinders with per-object color). Computes combined LH + TDoA3 coverage with obstacle occlusion. Import scenes from the individual LH/TDoA3 tabs. Save/load planning scenes as YAML

Install (Linux, x86_64 and arm64):

curl -fsSL https://evoggy.github.io/packages/apt/evoggy.gpg.key \
  | sudo gpg --dearmor -o /usr/share/keyrings/evoggy-archive-keyring.gpg
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/evoggy-archive-keyring.gpg] https://evoggy.github.io/packages/apt stable main" \
  | sudo tee /etc/apt/sources.list.d/evoggy.list
sudo apt update && sudo apt install swarmkeeper

The package adds Swarmkeeper to the application menu and installs the udev rules for the Crazyradio. Started that way, swarms, scenes, plans, log configs, journals and recordings are kept in ~/Documents/Swarmkeeper; run from client/ in a checkout, they stay in the checkout as before.

System Dependencies (Linux):

# Ubuntu/Debian
sudo apt install libfontconfig1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev

# Fedora
sudo dnf install fontconfig-devel libxcb-devel libxkbcommon-devel

Building:

cd client
cargo build
cargo run

About

Swarm application and client for managing and maintaining Crazyflies

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages