RF-Behavior
Aalto University, School of Electrical Engineering Ambient Intelligence group

Dataset · Aalto University

RF-Behavior: a multimodal radio-frequency dataset for activity and affective behavior analysis

Si Zuo*, Yuqing Song*, Jin Han, Sahar Golipoor, Ying Liu, Xujun Ma, Petter Holme, Stephan Sigg

Ambient Intelligence group, Department of Information and Communications Engineering, Aalto University, Finland; Xujun Ma: Southeast University, China. * Equal contribution.

61 + 7participants: 44 in the laboratory, 17 more in a living room and an industrial site, 7 in a physiological reference subset
37classes: 21 gestures (also with the RFID antenna at a distance), 10 activities, 6 sentiments
5sensing modalities, recorded at the same time
13mmWave radars: 8 ground, 5 ceiling
3environments: laboratory, living room, industry

Overview

Five radio-frequency and reference modalities, one clock

Participants performed hand and arm gestures, daily activities, and expressions of six sentiments while 13 mmWave radars, a LoRa link, passive RFID tags on the arms, body-worn IMUs, and a 24-camera infrared motion-capture system recorded them at the same time. The motion capture gives the reference of body motion for every radio-frequency signal.

Radar

13 TI IWR1443 mmWave radars (77–81 GHz). Point clouds of moving reflections: time, x, y, z, signal strength. About 30 frames/s on the ground, 5–7 on the ceiling.

node r · all radars of a trial in one zip

LoRa

Semtech SX1276 node and USRP receiver at 865.5 MHz. Amplitude of the baseband signal at 200 Hz, its difference, and its variance at 20 Hz.

node 5 · next to radar 5

RFID

Six passive Alien tags on the arms (wrist, below and above the elbow), read by an Impinj Speedway R420. Time stamp, tag, RSSI, and phase of every read.

node 13 · antenna on radar 5

Motion capture

24 infrared cameras at 100 Hz. Position and rotation of the rigid bodies of the suit: chest, arms; in activities and sentiments also hips and legs.

node 14 · reference of body motion

IMU

Movesense sensors on the chest and the limbs at 104 Hz: acceleration, angular rate, magnetic field.

node x · body-worn

ECG and EEG (reference subset)

Seven participants of the living room repeated the sentiment protocol with a Shimmer3 ExG ECG (four electrodes, 512 Hz) and a NeuroSky MindWave Mobile EEG (one channel, 512 Hz, with band powers and eSense scores at 1 Hz), next to radar and IMU.

node x · body-worn · folders ecg/ eeg/

Setup

The laboratory

The laboratory: the grey floor with the standing point, the ground radars on tripods around it, and the infrared cameras on the truss above
The laboratory: the ground radars on tripods around the standing point, the infrared cameras on the truss above, and the ceiling radars 3 m high (first part of C1: 5 m).

The participant stands at the centre of a circle of eight ground radars (radius 1.5 m, height 1.3 m, every 45°). Five more radars look down from the ceiling. The LoRa antenna and the RFID antenna sit next to radar 5. The motion-capture frame has its origin at the standing point.

CampaignClassesLength
C1 gestures21 hand and arm gestures (raise, push, pull, swipe, throw, circles, …)3.5 s
C2 activitieswalking, running, sitting, lying, stairs, basketball, badminton, floorball, football6 s
C3 sentimentsfocus, distraction, stress, relaxation, depression, excitement2.5 min
C4 gestures at antenna distancesthe 21 gestures of C1, RFID only; the antenna at 1.5 m or 3 m, in front or at the side1.5 s

The ceiling radars were 5 m high for the first 16 participants of C1 and 3 m high afterwards; the trial table records the height of every trial.

Data

One zip per trial and modality

The release has flat folders and one zip for each trial and modality (the file convention of the OctoNet dataset), named <node>_<modality>_<environment>_<user>_<class>_<repetition>_<time>.zip. The five zips of a trial share the same time stamp.

radar/   r_radar_1_1_M10_1_20250710163420.zip    radar_00.npz … radar_12.npz
lora/    5_lora_1_1_M10_1_20250710163420.zip     abs_200Hz.csv, diff_200Hz.csv, var_20Hz.csv
rfid/    13_rfid_1_1_M10_1_20250710163420.zip    rfid.csv   (C4 antenna positions 15, 16, 17: rfid_15/ rfid_16/ rfid_17/)
mocap/   14_mocap_1_1_M10_1_20250710163420.zip   mocap.csv
imu/     x_imu_1_3_E01_1_20250720180733.zip      Chest_acc_data.csv, Chest_gyro_data.csv, …
meta/    trials_Lab.csv, classes.csv, nodes.csv, packing_log_Lab.csv
scripts/ readers, loader, download script
EnvironmentModalitiesParticipantsTrialsZips
1 laboratoryradar, LoRa, RFID, motion capture, IMU (C3); C4 RFID only4417,03036,060
2 living roomradar, IMU; plus ECG and EEG for a physiological reference subset of 7 participants (34 phases)17 + 72,172 + 344,339 + 136
3 industrial siteradar, IMU91,1822,359
Total6120,38442,758 (1.7 GB)
Segments (one per trial and modality; one per radar file)Total segments
C1 gestures66,167
C2 activities31,943
C3 sentiments2,258
C4 gestures at antenna distances (RFID)10,620
Living room (radar files, IMU)26,947
Industrial site (radar files, IMU)13,880
Total151,815

The trial table meta/trials_Lab.csv has one row per trial: participant, class, repetition, reference time, ceiling height, and for every modality its presence, start, duration, and extra facts. A Python loader and a reader with figures for every modality ship with the data.

Compatibility note: the loader uses the same calls as the loader of the OctoNet dataset (get_dataset, get_dataloader), so code written for OctoNet runs on RF-Behavior with few changes.

Explore

Open a trial in your browser

This page reads the release zips of the sample trials and draws them here, with the same transforms as the reader scripts: the radar point cloud in the room, the LoRa features, the motion of the RFID tags, the motion-capture skeleton, and the IMU signals. Nothing is sent to a server.

Time window: whole trial

Download

Access for academic research

The dataset is released under CC BY-NC-SA 4.0 for non-commercial research. Access is gated: accept the terms on the dataset page, and access is granted at once. Then:

  1. Log in once: hf auth login
  2. Download a selection with the script, for example gestures of three participants, radar and LoRa only:
python download_rfbehavior.py --campaign C1 --user 1 3 4 \
    --modality radar lora --out ./RF-Behavior

or with the Hub library:

from huggingface_hub import snapshot_download
snapshot_download("Si-Z/RF-Behavior", repo_type="dataset",
    local_dir="RF-Behavior",
    allow_patterns=["meta/*", "radar/r_radar_1_1_M*"])

Load

from rfbehavior_loader import get_dataset, get_dataloader

config = {"environment": [1], "campaign": ["C1"],
          "node_id": [5, 6, 7],
          "modality": ["radar", "lora", "rfid", "mocap"]}
dataset = get_dataset(config, "RF-Behavior")
sample = dataset[0]
sample["class_name"]                     # 'arms swing'
sample["modality_data"]["radar"][5]["points"]
loader = get_dataloader(dataset, batch_size=4)

To draw a trial with the reader scripts, put the download into the recording layout first:

python unpack_release.py --download ./RF-Behavior --out ./RF-Behavior_unpacked
python Radar/read_vis.py --root ./RF-Behavior_unpacked/Lab/Radar     --view animation --campaign C2 --user U01 --cls A01

Cite

Citation

@article{zuo2025rfbehavior,
  title   = {RF-Behavior: A Multimodal Radio-Frequency Dataset for Activity and Affective Behavior Analysis},
  author  = {Zuo, Si and Song, Yuqing and Han, Jin and Golipoor, Sahar and Liu, Ying and Ma, Xujun and Holme, Petter and Sigg, Stephan},
  journal = {arXiv preprint arXiv:2511.06020},
  year    = {2025}
}

Contact: Si Zuo, Aalto University.