ledrone_pybullet_takeoff
收藏资源简介:
ledrone_pybullet_takeoff 是一个目标条件、基于状态的模仿学习数据集,专注于四旋翼无人机执行起飞任务(从地面爬升并保持目标高度)。该数据集在PyBullet刚体物理环境中生成,使用特权分析专家系统。每个数据帧包含无人机的全本体状态和相对目标,以及专家的速度加偏航率命令,适用于训练目标条件控制策略(如Diffusion Policy、ACT等)。第一人称视角(FPV)相机流作为可选辅助提供,任务可仅从状态解决。数据集基于LeRobot(v3.0格式)和ledrone项目构建,包含200个片段和40,000帧数据,采用状态基础方法,动作空间为NED速度加偏航率。
ledrone_pybullet_takeoff is a goal-conditioned, state-based imitation learning dataset focused on quadrotor UAV takeoff tasks, which involve climbing from the ground and maintaining a target altitude. This dataset is generated in the PyBullet rigid-body physics environment using a privileged analytical expert system. Each data frame contains the full proprioceptive state of the UAV, the relative target, as well as the expert's velocity plus yaw rate commands, making it suitable for training goal-conditioned control policies such as Diffusion Policy, ACT, and others. First-Person View (FPV) camera streams are provided as optional auxiliary inputs, and the task can be solved solely from state observations. The dataset is built upon the LeRobot (v3.0 format) and ledrone projects, containing 200 episodes and 40,000 frames of data. It adopts a state-based approach, with the action space being NED velocity plus yaw rate.
数据集概述:ledrone_pybullet_takeoff
这是一个目标条件化、基于状态的模仿学习数据集,用于四旋翼无人机(quadrotor)执行起飞任务(从地面爬升并保持目标高度)。数据集在PyBullet刚体物理引擎中生成,使用特权分析专家。
核心信息
| 属性 | 内容 |
|---|---|
| 任务 | takeoff:从地面爬升并保持目标高度 |
| 类型 | 目标条件化,基于状态(FPV图像为可选的辅助输入) |
| Episode | 300 个 |
| 帧数 | 60,000 帧 (200 帧/episode, 30 Hz 下约 6.7 秒) |
| 机器人类型 | ledrone (四旋翼) |
| 物理引擎 | PyBullet 刚体动力学 (基于 gym-pybullet-drones) |
| 专家策略 | 分析型 PD + 参考速度前馈 + 航向偏航,带有斜率限制启动(特权、仅状态) |
| 相机 | FPV 96×96 RGB (AV1) — 辅助输入;场景包含目标标记、地标、纹理地面 |
| 动作 | NED 速度 + 偏航角速率 |
| 格式 | LeRobot v3.0 |
| 许可证 | Apache-2.0 |
| 大小 | 10K<n<100K |
数据特征
| 特征 | 数据类型 | 形状 | 描述 |
|---|---|---|---|
observation.state |
float32 | (13,) | 位置 (n/e/d)、速度 (n/e/d)、姿态四元数 (q_w/x/y/z)、FRD 机体角速率 (rate_x/y/z) |
observation.environment_state |
float32 | (3,) | 相对于当前位置的目标:err_n, err_e, err_d |
action |
float32 | (4,) | 命令:vx, vy, vz, yaw_rate |
observation.images.fpv |
video | (96, 96, 3) | 前视 FPV 相机图像,AV1 编码(辅助) |
- 状态是最新的四旋翼策略观测(相对目标 + 速度 + 姿态 + 机体角速率);电池状态被有意排除(通过域随机化处理,不直接观测)。
- 姿态以单位四元数表示,可按需映射为连续6D表示。
- 动作为NED速度 + 偏航角速率,限定在包络内(水平≤2 m/s,爬升≤1 m/s,偏航≤45°/s)。
数据生成方法
- DART风格覆盖:无人机由带噪声的命令驱动(速度通道σ = 0.15 m/s),但每帧都标注了无噪声的专家命令,使得策略能够看到离分布状态及其最优修正,从而减轻行为克隆的协变量偏移。
- 斜率限制启动:命令从静止开始斜坡式增加,抑制底层控制器在初始阶段的瞬态响应。
- 受控航向:采用航向到目标的偏航控制。
- 随机化起止:每个episode的起始位置和目标位置随机化;目标以相对于当前位置的形式存储。
- 收敛门控:仅当专家达到/跟踪目标时,episode才被接受(否则重新采样起始/目标)。
预期用途与局限性
- 预期用途:用于四旋翼无人机的起飞任务的、基于状态的目标条件化模仿学习(状态+相对目标→速度+偏航角速率)。所有300个episode均标记为训练集。
- 基于状态,非视觉运动:该任务仅使用
observation.state和observation.environment_state即可解决;FPV目标标记仅出现在约13%的帧中,图像为可选的辅助输入。 - DART覆盖,但无严重故障:注入的噪声提供了离分布恢复标签,但数据不包含坠机、大扰动或故障演示。
- 仅仿真环境:基于PyBullet / gym-pybullet-drones的Crazyflie 2.x模型,FPV场景为合成基准场景,非照片级真实或仿真到真实的图像。
数据使用示例
python from lerobot.datasets.lerobot_dataset import LeRobotDataset ds = LeRobotDataset("ahive/ledrone_pybullet_takeoff") frame = ds[0] # observation.state (13,), observation.environment_state (3,), action (4,)



