Adding a baseline means creating a BaselineVSLAMLAB subclass, registering a pixi feature/environment for its dependencies, and wiring both into Baselines/get_baseline.py.
Implement the class: create
Baselines/baseline_files/baseline_<name>.py, subclassingBaselineVSLAMLAB(Baselines/BaselineVSLAMLAB.py). There is no template file for baselines — copy the closest existing baseline of similar type (e.g.baseline_droidslam.pyfor a learned/CUDA method,baseline_orbslam2.pyfor a classical feature-based method) and adapt it. At minimum implement the abstract hooks:__init__(self, baseline_name, baseline_folder, default_parameters='')— setbaseline_path,settings_yaml, labels/colors.build_execute_command(self, exp_it, exp, dataset, sequence_name)— construct the shell command that runs the baseline on a sequence.is_installed(self)— check whether the baseline's environment/weights are already set up.
Add a pixi feature in
pixi.tomlfor the baseline's dependencies (mirror[feature.<name>]blocks like[feature.droidslam]):[feature.<name>]— channels/platforms (e.g.platforms = ["linux-64-cuda"]if it needs CUDA).[feature.<name>.tasks]— at minimum agit-clonetask pointing at the baseline's source repo, plusexecute-mono/execute-rgbd/execute-stereotasks (whichever modes the baseline supports) that invoke its executable/entrypoint.[feature.<name>.dependencies]— conda/pip packages the baseline needs.- Register the environment in the top-level
[environments]table:<name> = { features = ["<name>", ...], solve-group = "<name>" }(pin sharedcuda*/py*features and asolve-groupthe waydroidslamdoes, to reuse dependency solves across baselines).
Register it in
Baselines/get_baseline.py: import the class and add it to the baseline switcher/lookup, following the existing pattern (mirrorsDatasets/get_dataset.py'sswitcherdict).Verify: run
pixi run install-baselineto clone/build the new baseline, thenpixi run demo <name> <dataset> <sequence> <mode>or aconfigs/test_exp_<name>.yamlviapixi run vslamlab configs/test_exp_<name>.yamlto confirm it executes end-to-end and produces a trajectory output.
Full reference docs live on the project's GitHub Wiki if more detail is needed.