Strawberry Robotics Operation Datasets

This page lists strawberry-picking datasets collected with three systems: SROI V1, SROI V2, and a SCARA robot. The datasets differ in collection hardware, storage format, observations, and actions. The sections after the dataset list document the SROI V2 processing pipeline.

SROI V2 EXAMPLE / COLOR / 640 × 480 / 30 FPSVALIDATION EPISODE 050
SROI V1original handheld field collection · ROS bags
SROI V2D405 handheld collection · camera-pose actions
SCARAteleoperated real robot · joint-space actions

Data sources and formats

The datasets were recorded with three different collection systems. SROI V1 is distributed as ROS bags. SROI V2 and SCARA data are distributed in LeRobot v3.0 format with different observation and action schemas.

SROI V1

Original handheld field recordings

Demonstrations collected with the original handheld SROI device in real agricultural settings. The archive preserves synchronized sensor streams as ROS bags rather than LeRobot episodes. See the sensor details below.

Zenodo archive

SROI V1 ROS bag collection

zenodo.org/records/15515834

Original field demonstrations recorded with OAK-D-SR or RealSense D435i configurations. The bags contain stereo/RGB sensing, IMU streams, calibration, and collection-state records; they require the V1 ROS-bag processing path.

Open on Zenodo

SROI V2

Handheld D405 demonstrations

Human demonstrations recorded with the D405-equipped SROI V2 device. Each frame pairs first-person RGB with a 7-D transformed pose and gripper-opening action; no robot arm is involved during collection.

Training

SROI V2 laboratory picking

zfff/sroiv2_strawberry_picking_lab_1459_occlusion

1,459 episodes and 140,522 frames. The release combines a 1,125-episode base set with 177 July and 157 August recordings selected to increase coverage of occluded picking cases.

Open on Hugging Face
Validation

July 2026 validation collection

zfff/sroiv2_strawberry_picking_lab_validation

100 episodes and 9,274 frames from the separate 14 July 2026 recording. All 100 episodes were classified ok by the documented trajectory and gripper QC rules.

Open on Hugging Face

SCARA

Teleoperated robot demonstrations

Human-teleoperated demonstrations from a 4-DoF SCARA arm. These releases provide a 4-D joint state, a 5-D joint-and-gripper action, and multi-view RGB observations in LeRobot v3.0 format.

Paper experiments

Clustered strawberry picking

zfff/strawberry_picking_dataset_scara_clustered

511 episodes and 119,830 frames collected in a controlled physical mock-up with clustered fruit and occlusions. This is the dataset associated with Learning to Pick.

Open on Hugging Face
Additional data

SCARA extra tasks and setups

zfff/strawberry_picking_dataset_scara_extra

659 episodes and 127,470 frames across eight source datasets and 21 session tasks. The unified top, wrist, and wrist_down schema uses black frames where a source camera was absent. These data were not used in the paper experiments.

Open on Hugging Face
Dataset familyCollection sourceRelease formatData representation
SROI V1Original handheld SROI device in field settingsROS bagsSynchronized camera, IMU, calibration, and collection-state streams
SROI V2D405-equipped handheld SROI V2 device in laboratory settingsLeRobot v3.0First-person RGB and 7-D transformed camera-pose/gripper actions
SCARAHuman-teleoperated 4-DoF SCARA robotLeRobot v3.0Multi-view RGB, 4-D joint state, and 5-D joint/gripper actions

SROI V2 RGB observation and next-frame pose target

Stereo infrared images are used to estimate motion during processing. They are not included in the final observation; the released policy input is the color stream.

Observation

First-person color image

Intel RealSense D405 color frames encoded as AV1 video under observation.images.camera.

video · [480, 640, 3] · yuv420p · 30 fps

Action

Transformed camera pose and gripper opening

For each frame, the target is taken from the following frame; the final frame repeats its own target. Position and rotation are derived from the transformed D405 trajectory.

[ee.x, ee.y, ee.z, ee.wx, ee.wy, ee.wz, ee.gripper_pos]
Interpretation of the metadata. The ee.* labels are a learning-schema convention: the current converter writes the transformed D405 camera pose directly to these fields. The measured camera-to-gripper-tip transform is used for projection-based QC and is not composed into the released action. Likewise, robot_type: so100 is a converter compatibility label; these are handheld SROI demonstrations, not SO-100 joint logs. No joint state or observation.state field is released.
FieldDefinitionType
observation.images.cameraD405 RGB image presented to the policyvideo [480, 640, 3]
ee.x / ee.y / ee.zCamera-trajectory translation after conversion to X-forward, Y-left, Z-up axes3 × float32
ee.wx / ee.wy / ee.wzOrientation of the transformed pose represented as a rotation vector3 × float32
ee.gripper_posAprilTag-derived gripper opening; 0 is closed and 1 is openfloat32 [0, 1]
taskTask vocabulary entry used by the release“pick the strawberry”

From synchronized camera streams to LeRobot episodes

The diagram and records below follow the implementation in sroi_dataprocess. Every visual is derived from validation episode 050 so the intermediate products can be compared directly.

01Captureleft IR · color · right IR
02DecodeMP4 → frame sequences
03Reconstructmasked stereo ORB-SLAM3
04Transformrobot-aligned coordinates
05Estimate gripperAprilTag separation
06QC + convertLeRobot v3.0
Trace example: validation_20260714_160922 / episode_050 88 frames · 32.5 cm recovered path · 0 missing gripper frames · QC category: ok
01

Direct acquisition

Record three synchronized D405 streams

The Raspberry Pi recorder uses pyrealsense2 to capture left infrared, color, and right infrared at 640 × 480 and 30 fps. Hardware timestamps and per-stream calibration are stored with each episode. ROS is not part of the current V2 acquisition path.

Tool
record_realsense.py --encode-video
Output
left.mp4, color.mp4, right.mp4, timestamps.json, camera calibration
Raw synchronized recording · left IR / color / right IR · validation episode 050
02

Regenerable workspace

Decode frames without modifying the raw recording

Compressed MP4 streams are expanded into a separate PNG processing tree. Calibration, timestamps, and the generated ORB-SLAM camera configuration remain attached to the episode. The raw MP4 directory is retained as the acquisition record.

Tool
batches/decode_batch.sh / decode_videos.py
Output
left_*.png, color_*.png, right_*.png, times.txt
03

Stereo reconstruction

Mask the gripper and estimate camera motion

The known finger region is blacked out in temporary copies of both infrared streams. ORB-SLAM3 then reconstructs the camera trajectory from the remaining stereo features, avoiding feature tracks on the moving gripper. Original PNG frames are not altered.

Tools
apply_gripper_mask.py + orbslam_batch_local.sh
Config
configs/gripper_mask_sroi_v2_d405.json
Output
CameraTrajectory.txt in KITTI 3 × 4 pose format
Decoded left infrared frame beside the temporary gripper-masked ORB-SLAM input
Frame 44 · decoded left IR compared with temporary masked SLAM input
04

Pose convention

Convert the trajectory into robot-aligned axes

The ORB-SLAM trajectory is transformed to the project convention: X forward, Y left, and Z up. Position and orientation from this transformed D405 camera pose become the first six action values during conversion.

Tool
transform_trajectory.py
Output
CameraTrajectoryTransformed.txt
QC view
visualization/visualize_traj_video.py
Projection check and recovered 3-D path · camera-to-tip extrinsics are used only in this QC view
05

Gripper state

Estimate opening from the two finger tags

AprilTag IDs 0 and 15 are detected in the lower region of each color image. Horizontal tag separation provides the raw opening signal, which is clipped and normalized to the [0, 1] convention used by the action vector.

Tool
gripper_estimation_april_tag.py
Output
gripper_distances.txt and normalization provenance where available
Meaning
0 = closed, 1 = open
Normalized gripper opening for validation episode 050, falling from open to closed
Episode 050 · normalized opening transitions from approximately 0.98 to 0.03
06

Acceptance and packaging

Review quality and create the LeRobot dataset

QC classifies episodes using trajectory availability and length, gripper validity and variation, and final closure. Selected episodes are converted to AV1 RGB video, Parquet action records, episode indices, task metadata, and aggregate statistics.

Tools
visualization/qc.py + lerobot/sroi_to_lerobot.py
Filter
qc_categories=ok for the documented releases
Output
LeRobot v3.0 dataset directory
EPISODE 050 / OK
  • Trajectory88 / 88 frames
  • Path length32.5 cm
  • Gripper NaN0 frames
  • Signal range0.961
data/
  chunk-000/file-000.parquet
videos/observation.images.camera/
  chunk-000/file-000.mp4
meta/
  info.json
  stats.json
  tasks.parquet
  episodes/…
Normalization provenance. The 1,459-episode training release records a shared range of 84.0789–261.7803 detector pixels across all merged inputs. The July validation release’s DATA_SOURCES.md instead records a range pooled over its own 100 episodes. Current pipeline documentation recommends the fixed training-reference configuration sroi_v2_d405_1000_onesb_range.json when building new comparable V2 releases. These are distinct provenance statements and should not be conflated.

Training release lineage

The final local release record documents both merge operations, input counts, codec compatibility, shared gripper range, and the exact official LeRobot merge command.

Composition of the 1,459-episode release

“Occlusion” in the repository name describes the targeted additions; it does not indicate that every episode in the base collection contains an occlusion.

1,125base set / QC ok
177July additions
157August additions
1,459 episodes · 140,522 frames
Official LeRobot merge operation · AV1 video copied unchanged
  • Created locally4 August 2026
  • Merge toolLeRobot 0.5.2
  • Video codecAV1 / yuv420p
  • Shared gripper range84.0789–261.7803 px
  • Task count1

Related papers by dataset family

Publication links are listed by collection system. Dataset-specific citation guidance is available in each repository.

SROI V1 and SROI V2 context

Strawberry Robotic Operation Interface

Hou, L., Lu, W., Wang, Y., Peng, C., & Fei, Z. (2025). Strawberry Robotic Operation Interface: An Open-Source Device for Collecting Dexterous Manipulation Data in Robotic Strawberry Cultivation. IFAC-PapersOnLine, 59(23), 303–308.

Open paper

SCARA clustered dataset

Learning to Pick

Fei, Z., Lu, W., Hou, L., Ye, Z., & Peng, C. (2026). Learning to Pick: A Visuomotor Policy for Clustered Strawberry Picking. IEEE Transactions on AgriFood Electronics. The SCARA extra dataset was not used in this paper’s experiments.

Open paper

SROI V1 sensor configurations

The original SROI field collection is preserved on Zenodo. It uses ROS bags, OAK-D-SR or RealSense D435i sensor configurations, and its own processing workflow.

OAK-D-SR configuration

Field stereo RGB and IMU

1280 × 720 stereo RGB at 30 fps with 400 Hz IMU data, camera calibration, and action-segmentation state.

RealSense D435i configuration

Stereo infrared, color, and IMU

848 × 480 left/right infrared and RGB at 30 fps with accelerometer and gyroscope streams.