How dynamicswarms/crazyflie_hardware works
This ROS 2 repository provides Crazyflie radio and per-drone hardware control for dynamic swarms. The main workflow is a client requesting a drone through the gateway; the gateway creates and configures a Crazyflie node, whose CRTP driver communicates over ROS interfaces with the radio node and USB radio. Driver modules also support firmware parameters, logging, console, commands, and localization; localization connects to the tracker and broadcaster. The README is sparse, so subsystem coverage also relies on the tree, launch configuration, and sampled excerpts; unsampled module wiring is represented only where the tree or excerpts support it.
Main entry points: crazyflie.cpp Crazyflie node · logic.cpp CRTP logic · localization.cpp Localization module · crazyradio_node.cpp Crazyradio ROS node
Components 18
Fleet management
- Crazyflie gateway
src/crazyflie_hardware_gateway_components/src/gateway.cpp
Drone drivers
- Crazyflie node
src/crazyflie_hardware_cpp/src/crazyflie.cpp - Command modules
src/crazyflie_hardware_cpp/src/crtp_driver_cpp/hl_commander.cpp - Firmware parameters
src/crazyflie_hardware_cpp/src/crtp_driver_cpp/parameters.cpp - Telemetry logging
src/crazyflie_hardware_cpp/src/crtp_driver_cpp/logging.cpp - Console
src/crazyflie_hardware_cpp/src/crtp_driver_cpp/console.cpp - Python driver option
src/crazyflie_hardware/crazyflie_hardware/crazyflie.py
CRTP transport
- ROS CRTP link
src/crazyflie_hardware_cpp/src/crtp_link_ros.cpp - CRTP logic
src/crtp_cpp/src/crtp_cpp/logic/logic.cpp - CRTP packers
src/crtp_cpp/src/crtp_cpp/packer/crtp_packer.cpp - Crazyradio ROS node
src/crazyradio/src/crazyradio_node.cpp - Radio link manager
src/crazyradio/deps/libcrtp/CrtpLinkContainer.cpp - Crazyradio USB
src/crazyradio/deps/libcrazyradio/Crazyradio.cpp
Localization
- Localization module
src/crazyflie_hardware_cpp/src/crtp_driver_cpp/localization.cpp - Pose broadcaster
src/crazyflie_hardware_cpp/src/broadcaster.cpp
Other components
- Fleet client
- Crazyflie aircraft
- Object tracker
Connections 23
- Fleet client → Crazyflie gateway: add or remove
- Crazyflie gateway → Crazyflie node: loads component
- Crazyflie node → ROS CRTP link: creates link
- Crazyflie node → Command modules: initializes
- Crazyflie node → Firmware parameters: initializes
- Crazyflie node → Telemetry logging: initializes
- Crazyflie node → Console: creates
- Crazyflie node → Localization module: creates
- Command modules → CRTP logic: uses
- Firmware parameters → CRTP logic: uses
- Telemetry logging → CRTP logic: uses
- Console → CRTP logic: uses
- Localization module → CRTP logic: uses
- CRTP logic → CRTP packers: encodes packets
- ROS CRTP link → Crazyradio ROS node: exchanges CRTP
- Crazyradio ROS node → Radio link manager: manages links
- Crazyradio ROS node → Crazyradio USB: sends packets
- Crazyradio USB → Crazyflie aircraft: radio packets
- Crazyflie aircraft → Crazyradio USB: radio responses
- Localization module → Object tracker: registers object
- Localization module → Pose broadcaster: registers broadcast
- Python driver option → Object tracker: registers object
- Python driver option → Pose broadcaster: registers broadcast