How bdrc-com/mcldrone works
MCLDrone combines a GNSS-denied UAV localization runtime with an offline similarity-model training and evaluation workflow. Training builds map-patch data, pretrains and flight-finetunes a model; deployment combines camera imagery, IMU and VIO with map matching to publish visual odometry for mission control. Bag replay supports offline localization analysis, while MapDB indexing is a separate map-preparation capability. The README describes further workflow details, but its excerpt ends during real-patch preparation; links for unsampled stages are kept at documented subsystem level.
Main entry points: train_similarity.py Train pipeline · mcl_node.py Live MCL node · mission_manager.py Mission manager · bag_mcl.py Bag replay
Components 27
Model training
- Train pipeline
train_similarity.py - Training config
train_config.yml - Similarity networks
sivl/models/orthosimilarity.py - Image utilities
sivl/utils/utils.py - Training imagery
- Patch bank
- Flight recordings
- Real patch pairs
- Model checkpoint
checkpoints_huizhou - Real-patch evaluation
eval_real_patches.py
Localization
- Bag replay
bag_mcl.py - Bag reader
bag_reader.py - Orthoprojection
orthoprojection.py - Particle filter
mcl.py - Live MCL node
ovws/src/ov_mcl/ov_mcl/mcl_node.py - Localization launch
ovws/src/ov_mcl/launch/mcl_localization.launch.py
Mission control
- Mission manager
mission_manager.py - Mission guard
mission_guard.py
Map data
- Stitched map
maps - Tile index builder
gnss_free/gnss_free_core/mapdb/build_tile_index.py - Offline map tiles
Other components
- Data curator
- VIO estimator
- Downward camera
- IMU
- PX4 autopilot
- Mission operator
Connections 33
- Data curator → Training imagery: prepares imagery
- Data curator → Flight recordings: records flights
- Training config → Train pipeline: configures
- Training imagery → Train pipeline: builds bank from
- Train pipeline → Patch bank: writes
- Train pipeline → Similarity networks: trains
- Train pipeline → Image utilities: uses
- Flight recordings → Train pipeline: supplies flight data
- Train pipeline → Real patch pairs: builds real pairs
- Patch bank → Train pipeline: supplies patches
- Real patch pairs → Train pipeline: fine-tunes with
- Train pipeline → Model checkpoint: saves
- Model checkpoint → Real-patch evaluation: evaluated by
- Real patch pairs → Real-patch evaluation: provides truth pairs
- Flight recordings → Bag replay: replayed from
- Bag replay → Bag reader: reads frames
- Bag replay → Orthoprojection: orthoprojects frames
- Bag replay → Particle filter: runs localization
- Downward camera → Live MCL node: publishes images
- IMU → Live MCL node: publishes measurements
- Localization launch → VIO estimator: starts
- Localization launch → Live MCL node: starts
- VIO estimator → Live MCL node: publishes odometry
- Live MCL node → Orthoprojection: orthoprojects frames
- Live MCL node → Particle filter: runs particle filter
- Stitched map → Live MCL node: supplies map imagery
- Model checkpoint → Live MCL node: loads model
- Live MCL node → Mission manager: publishes visual odometry
- PX4 autopilot → Mission manager: sends vehicle state
- Mission operator → Mission manager: provides mission
- Mission manager → Mission guard: checks mission state
- Mission manager → PX4 autopilot: publishes setpoints
- Offline map tiles → Tile index builder: indexes tiles