spot-telluride-workshop-dataset
收藏资源简介:
Spot Telluride Workshop数据集是一个多模态机器人传感器数据集,包含从Boston Dynamics Spot D02机器人在课堂演示中收集的数据,这些数据从ROS包中提取,专为Telluride神经形态与AI研讨会准备。数据集包含9个独立的配置,涵盖多种传感器模态:Intel RealSense D455的RGB图像(约2,479帧)和深度图像(约2,478帧)、Spot机器人前左和前右RGB摄像头图像(各约743帧)、水平Ouster激光雷达的点云数据(约1,655帧,20Hz,每帧65,536个点,包含x、y、z、强度和环索引字段)、2D占据栅格地图快照(约830帧)、OctoMap二进制快照(约911帧),以及两种里程计数据流——基于LIO-SAM(激光雷达+IMU融合,约6Hz,500个位姿)和IMU预积分(约500Hz,41,360个位姿)的位姿估计。数据集强调不同模态间的时间同步性有限,需通过timestamp_ns字段进行近似对齐。该数据集适用于机器人定位与建图(SLAM)、传感器融合、运动规划、控制算法开发以及多模态感知研究。
The Spot Telluride Workshop dataset is a multimodal robot sensor dataset containing data collected from a Boston Dynamics Spot D02 robot during classroom demonstrations, extracted from ROS packages, and specifically prepared for the Telluride Neuromorphic and AI Workshop. The dataset includes 9 independent configurations, covering multiple sensor modalities: RGB images (approximately 2,479 frames) and depth images (approximately 2,478 frames) from an Intel RealSense D455, front-left and front-right RGB camera images from the Spot robot (each approximately 743 frames), point cloud data from a horizontal Ouster LiDAR (approximately 1,655 frames, 20Hz, with each frame containing 65,536 points, including x, y, z, intensity, and ring index fields), 2D occupancy grid map snapshots (approximately 830 frames), OctoMap binary snapshots (approximately 911 frames), and two odometry data streams—pose estimates based on LIO-SAM (LiDAR + IMU fusion, approximately 6Hz, 500 poses) and IMU pre-integration (approximately 500Hz, 41,360 poses). The dataset emphasizes limited temporal synchronization between different modalities, requiring approximate alignment via the timestamp_ns field. It is suitable for research in robot localization and mapping (SLAM), sensor fusion, motion planning, control algorithm development, and multimodal perception.
数据集概述:Spot Telluride Workshop Dataset
该数据集包含来自 波士顿动力 Spot D02 机器人在教室演示中记录的多模态传感器数据,数据从 ROS bag 中提取,专为 Telluride 神经形态与人工智能研讨会准备。
- 许可协议: Apache-2.0
- 任务类别: 机器人学
- 语言: 英语
- 标签: spot, boston-dynamics, ros, lidar, multimodal, mobile-robot, telluride
- 数据规模: 1,000 < n < 10,000 (总样本数)
- 机器人平台: Spot D02 (Marble 背包计算单元)
- 采集地点: 教室
- 运行编号:
run1 - 提取工具:
extract_demo_data.py(位于 GitHub 仓库arpg/ARPG中) - 重要说明: 不同模态的数据配置未进行时间同步(传感器频率不同)。仅能通过
timestamp_ns字段进行近似时间对齐。
数据集结构
数据集包含 9 个配置(Config),每个配置代表一种数据模态,存储在 Hugging Face Hub 的对应目录下。
| 配置名称 | 描述 | 样本数量 (约) | 主要字段 |
|---|---|---|---|
rgb_d455 |
Intel RealSense D455 彩色图像及相机内参 | 2,478 | frame_idx, timestamp_ns, image (图像), camera_info (JSON字符串) |
depth_d455 |
D455 深度图 (16位 PNG, 已对齐到彩色图) | 2,478 | frame_idx, timestamp_ns, depth (图像) |
rgb_spot_frontleft |
Spot 左前 RGB 图像及内参 | 742 | frame_idx, timestamp_ns, image, camera_info (JSON字符串) |
rgb_spot_frontright |
Spot 右前 RGB 图像及内参 | 742 | frame_idx, timestamp_ns, image, camera_info (JSON字符串) |
pointclouds |
水平 Ouster 激光雷达点云 (ASCII PCD 格式, 包含 XYZ + 强度 + 环) | 1,655 | frame_idx, timestamp_ns, pcd_bytes (二进制PCD文件内容) |
occupancy_grid |
2D 占用网格地图快照 (PNG 格式) | 828 | timestamp_ns, map_snapshot (图像) |
octomap |
OctoMap 二进制快照 (.bt 文件) |
911 | timestamp_ns, octomap_bt (大型二进制数据) |
odometry_lio_sam |
由 LIO-SAM 优化的 SLAM 位姿 (激光雷达 + IMU) | 496 | timestamp_ns, x, y, z, qx, qy, qz, qw (位置 + 四元数) |
odometry_imu |
高频 IMU 预积分位姿 | 41,360 | timestamp_ns, x, y, z, qx, qy, qz, qw (位置 + 四元数) |
核心传感器与数据特性
激光雷达 (LiDAR) 传感器规格
- 传感器: 水平 Ouster 激光雷达
- 工作模式:
1024x20(20 Hz 转速, 每圈 1024 列) - 垂直通道: 64 环 (环索引 0–63)
- 单帧点数: 65,536 点 (64 x 1024)
- 每个点的字段:
x,y,z(float32),intensity(float32),ring(uint16) - 时间戳: 基于 PTP 1588 协议 (主时钟为 NUC 的
enp1s0接口) - 数据时长: 约 83 秒 (1,655 帧 ÷ 20 Hz)
里程计 (Odometry) 数据流
| 特性 | odometry_lio_sam |
odometry_imu |
|---|---|---|
| ROS 话题 | /D02/lio_sam/mapping/odometry |
/D02/odometry/imu |
| 数据源 | LIO-SAM SLAM 后端 (融合 Ouster 激光雷达 + IMU) | IMU 预积分前端 (惯性测量积分) |
| 频率 | 约 6 Hz | 约 500 Hz |
| 典型用途 | 全局轨迹、地图对齐、与点云/地图同步 | 短时运动估计、高频速度计算、插值 |
| 使用建议 | 绘制轨迹、定位、与地图产品联合使用 | 需要高时间分辨率的帧间运动、速度估计 |
关键区别: LIO-SAM 通过激光雷达结构校正漂移,提供全局一致性;IMU 预积分提供高密度时间序列但会随时间漂移。两者不可互换,应根据需求选择。
加载与使用示例 (Python)
使用 datasets 库加载数据:
python from datasets import load_dataset import numpy as np
repo = "lorinachey/spot-telluride-workshop-dataset"
加载 RGB 图像
rgb = load_dataset(repo, "rgb_spot_frontleft", split="train") print(rgb[0]["timestamp_ns"]) rgb[0]["image"].show()
加载深度图
depth = load_dataset(repo, "depth_d455", split="train")
加载点云
pcd = load_dataset(repo, "pointclouds", split="train") print(f"{len(pcd)} 帧")
解析 PCD 字节数据为 NumPy 数组
def parse_pcd(pcd_bytes: bytes) -> np.ndarray: lines = pcd_bytes.decode().splitlines() data_start = next(i for i, l in enumerate(lines) if l.startswith("DATA")) + 1 return np.array([list(map(float, l.split())) for l in lines[data_start:] if l.strip()], dtype=np.float32) cloud = parse_pcd(pcd[0]["pcd_bytes"]) xyz = cloud[:, :3] # 坐标 intensity = cloud[:, 3] # 强度 ring = cloud[:, 4].astype(np.uint16) # 环号
加载里程计数据
odom_lio_sam = load_dataset(repo, "odometry_lio_sam", split="train") odom_imu = load_dataset(repo, "odometry_imu", split="train")
文件名约定
提取帧的命名格式为: frame_<索引>_<时间戳纳秒>.{jpg,png,pcd}。
引用信息
使用该数据集时,请引用 ARPG Spot Telluride 研讨会数据集并链接到 Hugging Face 页面。
许可协议
Apache 2.0 (数据集打包)。机器人数据是为研究和教育目的在 Telluride 研讨会上收集的。




