Skip to content

A Multi-UAV Indoor Localization dataset with UWB and Vision

Notifications You must be signed in to change notification settings

decargroup/miluv

Repository files navigation

DECAR Logo DECAR — MILUV devkit

Welcome to the MILUV devkit page. This Python devkit provides useful functions and examples to accompany the MILUV dataset. To begin using this devkit, clone or download and extract the repository.

Table of Contents

Changelog

03-07-2024: MILUV devkit v1.0.0 released.

Devkit setup and installation

The devkit requires Python 3.8 or greater. To install the devkit and its dependencies, run

$ pip3 install .

inside the devkit's root directory (~/path/to/project/MILUV).

Alternatively, run

$ pip3 install -e .

inside the devkit's root directory, which installs the package in-place, allowing you make changes to the code without having to reinstall every time.

For a list of all dependencies, refer to requirements.txt in the repository's root directory.

To ensure installation was completed without any errors, test the code by running

$ pytest

in the root directory.

Getting started with MILUV

Setting up the dataset

To get started, download the MILUV dataset. By default, the devkit expects the data for each experiment is present in /miluv/data/EXP_NUMBER, where EXP_NUMBER is the number of the experiment.

If you wish to change the default data location, be sure to modify the data directory in the devkit code.

Examples

Using the MILUV devkit, retrieving sensor data by timestamp from experiment 1c can be implemented as:

from miluv.data import DataLoader
import numpy as np

mv_1c = DataLoader(
        "3a",
        barometer=False,
        height=False,
    )

timestamps = np.arange(0, 10, 1)  # Time in s

data_at_timestamps = mv_1c.data_from_timestamps(timestamps)

This example can be made elaborate by selecting specific robots and sensors to fetch from at the given timestamps.

from miluv.data import DataLoader
import numpy as np

mv_1c = DataLoader(
        "3a",
        barometer=False,
        height=False,
    )

timestamps = np.arange(0, 10, 1)  # Time in s

robots = ["ifo001", "ifo002"]  # We are leaving out ifo003
sensors = ["imu_px4", "imu_cam"]  # Fetching just the imu data

data_at_timestamps = mv_1c.data_from_timestamps(
    timestamps,
    robots,
    sensors,
    )

Wiki

For more information regarding the MILUV development kit, please refer to the documentation.

License

This development kit is distributed under the MIT License.