#### NOTE
This is a **Hugging Face dataset**. For large datasets, ensure `huggingface_hub>=1.1.3` to avoid rate limits. Learn more in the <a href="https://docs.voxel51.com/integrations/huggingface.html#loading-datasets-from-the-hub" target="_blank">Hugging Face integration docs</a>.

<a href="https://huggingface.co/datasets/Voxel51/ColoRadar-Sample" target="_blank">![Hugging Face](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Dataset-yellow)</a>

# Dataset Card for ColoRadar Sample

![preview](https://huggingface.co/datasets/Voxel51/ColoRadar-Sample/resolve/main/preview.gif)

This is a [FiftyOne](https://github.com/voxel51/fiftyone) dataset with 7 samples. Each sample is one handheld sequence from ColoRadar, stored as a native multimodal MCAP episode.

The source is [ColoRadar](https://arpg.colorado.edu/coloradar/), the 3D millimetre-wave radar dataset from the Autonomous Robotics and Perception Group at the University of Colorado Boulder, converted from ROS 1 bags. A handheld rig carries two FMCW radars, a TI MMWCAS-RF-EVM cascaded imaging radar and a TI AWR1843BOOST single-chip radar, beside an Ouster OS1-64 LiDAR and a Lord Microstrain 3DM-GX5-25 inertial unit. The release holds 52 sequences recorded in seven places: hallways, a lab, a large motion-capture space, outdoor built environments, the narrow and the large passages of an underground mine, and a fast ride along paths and roads. This sample carries one sequence from each place, the shortest of its group.

## Installation

If you haven’t already, install FiftyOne:

```bash
pip install -U fiftyone
```

## Usage

```python
import fiftyone as fo
import fiftyone.utils.huggingface as fouh

# Load the dataset
# Note: other available arguments include 'max_samples', etc
dataset = fouh.load_from_hub(
    "Voxel51/ColoRadar-Sample",
    name="ColoRadar-Sample",
    persistent=True,
)

# Launch the App
session = fo.launch_app(dataset)
```

## Dataset Details

### Dataset Description

7 sequences totalling 13m 46s of recording, 8,263 LiDAR scans holding 382.6 million points, 4,145 cascaded radar frames and 8,340 single-chip radar scans.

- **Curated by:** Autonomous Robotics and Perception Group, University of Colorado Boulder (source release)
- **Funded by:** [More Information Needed]
- **Shared by:** Voxel51 (FiftyOne conversion)
- **Language(s):** Not applicable (sensor data)
- **License:** Apache 2.0

### Dataset Sources

- **Repository:** [ColoRadar](https://arpg.colorado.edu/coloradar/) (source release); [Voxel51/ColoRadar-Sample](https://huggingface.co/datasets/Voxel51/ColoRadar-Sample) (this conversion)
- **Paper:** [ColoRadar: The direct 3D millimeter wave radar dataset](https://doi.org/10.1177/02783649211068535) (The International Journal of Robotics Research, 2022)
- **Demo:** [More Information Needed]

## Uses

### Direct Use

Research on millimetre-wave radar, LiDAR and inertial sensing, including SLAM, in indoor, outdoor and subterranean environments, using the LiDAR-inertial ground-truth trajectory shipped with each sequence.

### Out-of-Scope Use

[More Information Needed]

## Dataset Structure

**Topology**

An ungrouped FiftyOne dataset with `media_type="multimodal"`. One sample is one sequence, and its `filepath` is a `.fo.mcap` file. There are 7 samples, no sample tags, and an empty `dataset.info`. The dataset has no FiftyOne label fields; every signal lives inside the MCAP file as a channel and is shown by the App’s multimodal viewer.

**Sample fields**

| Field                                                                  | FiftyOne type   | Description                                                                            |
|------------------------------------------------------------------------|-----------------|----------------------------------------------------------------------------------------|
| `id`, `filepath`, `tags`, `metadata`, `created_at`, `last_modified_at` | built-in        | Standard FiftyOne sample fields                                                        |
| `sequence`                                                             | `StringField`   | Sequence name, e.g. `arpg_lab_run2`                                                    |
| `environment`                                                          | `StringField`   | The release’s own description of the sequence’s group, e.g. `Indoor built environment` |
| `recorded`                                                             | `StringField`   | Recording date                                                                         |
| `duration`                                                             | `FloatField`    | Sequence length in seconds                                                             |
| `num_lidar_scans`                                                      | `IntField`      | LiDAR scans                                                                            |
| `num_lidar_points`                                                     | `IntField`      | LiDAR points across all scans                                                          |
| `num_cascade_frames`                                                   | `IntField`      | Cascaded radar frames                                                                  |
| `num_cascade_points`                                                   | `IntField`      | Points derived from the cascaded radar heatmaps across all frames                      |
| `num_single_chip_scans`                                                | `IntField`      | Single-chip radar scans                                                                |
| `num_single_chip_points`                                               | `IntField`      | Single-chip radar points across all scans                                              |
| `num_imu_samples`                                                      | `IntField`      | Inertial samples                                                                       |
| `ground_truth_path_m`                                                  | `FloatField`    | Length of the LiDAR-inertial ground-truth trajectory in metres                         |
| `has_motion_capture`                                                   | `BooleanField`  | Whether the sequence carries a motion-capture pose track                               |

**Episode contents**

Each MCAP episode contains these channels:

| Channel                                   | Schema or content                                                                                                    |
|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------|
| `/lidar-points`                           | Ouster OS1-64 scans, `foxglove.PointCloud` with `x`, `y`, `z`, `intensity`, `reflectivity` and `ring`                |
| `/single-chip-radar-points`               | The AWR1843’s own point clouds, `foxglove.PointCloud` with `x`, `y`, `z`, `intensity`, `range` and `doppler`         |
| `/cascade-radar-points`                   | Points derived from each cascaded radar heatmap, `foxglove.PointCloud` with `x`, `y`, `z`, `intensity` and `doppler` |
| `/cascade-radar-bev`                      | A top-down render of each cascaded radar heatmap, `foxglove.CompressedVideo`                                         |
| `/imu.plot`                               | The Microstrain inertial unit at about 100 Hz                                                                        |
| `/ground-truth`, `/ground-truth.plot`     | The release’s LiDAR-inertial trajectory as `foxglove.PoseInFrame`, with its position as a plot                       |
| `/motion-capture`, `/motion-capture.plot` | The Vicon pose of the rig in the motion-capture space, with its position as a plot                                   |
| `/tf`                                     | Each sensor’s pose in the rig’s base frame, `foxglove.FrameTransform`                                                |
| `/sequence`                               | Names the sequence and its environment                                                                               |

**Sequences**

| Sequence               | Environment                          | Recorded   | Duration   |   LiDAR scans |   Cascade frames |   Single-chip scans | Path   |
|------------------------|--------------------------------------|------------|------------|---------------|------------------|---------------------|--------|
| `arpg_lab_run2`        | Indoor built environment             | 2020-12-21 | 1m 41s     |         1,014 |              504 |               1,015 | 67 m   |
| `aspen_run9`           | Large motion capture space           | 2021-02-24 | 1m 16s     |           765 |              414 |                 836 | 42 m   |
| `ec_hallways_run4`     | Indoor built environment             | 2020-12-21 | 1m 30s     |           899 |              447 |                 902 | 103 m  |
| `edgar_army_run5`      | Large subterranean environment       | 2021-02-23 | 1m 54s     |         1,141 |              567 |               1,141 | 108 m  |
| `edgar_classroom_run4` | Narrow subterranean environment      | 2021-02-23 | 2m 44s     |         1,639 |              816 |               1,639 | 184 m  |
| `longboard_run1`       | High-speed multi-use paths and roads | 2021-02-22 | 2m 57s     |         1,767 |              882 |               1,770 | 766 m  |
| `outdoors_run8`        | Outdoor built environment            | 2021-03-02 | 1m 44s     |         1,038 |              515 |               1,037 | 121 m  |

**Parsing decisions**

- **Why MCAP:** the dataset is one multimodal sample per sequence, so the radars, LiDAR, inertial unit, plots and poses play back on one shared clock.
- **ROS 1 bags:** the bags are ROS 1 and were read without a ROS install.
- **LiDAR and single-chip radar:** the LiDAR scans drop the returns the sensor marks empty, and the single-chip radar’s point clouds are carried as recorded.
- **Cascaded radar points:** the cascaded radar publishes no point cloud, only a heatmap of 128 range by 128 azimuth by 32 elevation cells, each holding an intensity and a Doppler velocity. Its points are derived the way the release’s plotting tool derives them: every cell beyond the tenth range bin whose intensity exceeds a fifth of the way from the frame’s weakest cell to its strongest, placed at the cell’s centre. The release’s tool also thins them on a 0.3 m grid; these are not thinned.
- **Cascaded radar render:** `/cascade-radar-bev` draws each heatmap from above, the strongest cell in each column of elevations on a scale of 30 dB below the frame’s peak, with the radar facing up.
- **Calibration:** `/tf` is the release’s calibration, each sensor’s pose in the rig’s base frame, with the single-chip radar’s heatmap frame `dca_link` placed on its point-cloud frame as the bags place it.
- **Left out:** the raw ADC samples of both radars and the single-chip radar’s heatmaps are not carried, nor are the bags’ own `/tf` stream and the LiDAR’s built-in inertial unit; all are in the release.

## Dataset Creation

### Curation Rationale

[More Information Needed]

### Source Data

#### Data Collection and Processing

Recorded with a handheld rig carrying a TI MMWCAS-RF-EVM cascaded imaging radar, a TI AWR1843BOOST single-chip radar, an Ouster OS1-64 LiDAR and a Lord Microstrain 3DM-GX5-25 inertial unit. The FiftyOne conversion reads the ROS 1 bags without a ROS install and writes one MCAP episode per bag; see Parsing decisions above for the changes made.

#### Who are the source data producers?

The Autonomous Robotics and Perception Group at the University of Colorado Boulder.

### Annotations

#### Annotation process

The dataset has no human annotations. The ground-truth trajectory in each sequence is the release’s LiDAR-inertial trajectory.

#### Who are the annotators?

Not applicable.

#### Personal and Sensitive Information

[More Information Needed]

## Citation

Work using the dataset should cite:

**BibTeX:**

```bibtex
@article{kramer2022coloradar,
  title={ColoRadar: The direct 3D millimeter wave radar dataset},
  author={Kramer, Andrew and Harlow, Kyle and Williams, Christopher and Heckman, Christoffer},
  journal={The International Journal of Robotics Research},
  volume={41},
  number={4},
  pages={351--360},
  year={2022},
  doi={10.1177/02783649211068535}
}
```

**APA:**

Kramer, A., Harlow, K., Williams, C., & Heckman, C. (2022). ColoRadar: The direct 3D millimeter wave radar dataset. *The International Journal of Robotics Research, 41*(4), 351-360. https://doi.org/10.1177/02783649211068535

## More Information

The source release is distributed under the Apache License 2.0, and this conversion is distributed under the same license, whose text is in the `LICENSE` file beside this card.

Changes from the source: 7 of the release’s 52 sequences, converted from ROS 1 bags to the FiftyOne MCAP flavor, the LiDAR’s empty returns dropped, points derived from the cascaded radar’s heatmaps with a top-down render of each, the release’s calibration carried as transforms, and the raw ADC samples, the single-chip heatmaps and the bags’ own `/tf` left out.

## Dataset Card Authors

[More Information Needed]

## Dataset Card Contact

[More Information Needed]
