lerobot

lerobot

实用机器学习库助力实际机器人开发

LeRobot是一个基于PyTorch的机器人应用开发库,提供模型、数据集和工具。它侧重模仿学习和强化学习,包含预训练模型、人类示范数据集和仿真环境,降低机器人技术门槛。该库支持ALOHA、PushT和XArm等多种环境和策略,未来将扩展实际机器人支持。LeRobot旨在促进数据集和预训练模型的共享,推动机器人技术发展。

LeRobot机器人强化学习模拟环境预训练模型Github开源项目
<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="media/lerobot-logo-thumbnail.png"> <source media="(prefers-color-scheme: light)" srcset="media/lerobot-logo-thumbnail.png"> <img alt="LeRobot,Hugging Face机器人库" src="https://yellow-cdn.veclightyear.com/835a84d5/3b09ecb2-c2ec-45ae-987d-b6d6c6258ee0.png" style="max-width: 100%;"> </picture> <br/> <br/> </p> <div align="center">

测试 覆盖率 Python版本 许可证 状态 版本 示例 贡献者公约 Discord

</div> <h3 align="center"> <p>用于现实世界机器人的最先进机器学习</p> </h3>

🤗 LeRobot旨在为PyTorch中的现实世界机器人提供模型、数据集和工具。其目标是降低机器人领域的准入门槛,使每个人都能贡献并从共享数据集和预训练模型中受益。

🤗 LeRobot包含已被证明可以迁移到现实世界的最先进方法,重点关注模仿学习和强化学习。

🤗 LeRobot已经提供了一系列预训练模型、包含人类收集的演示数据集,以及仿真环境,让你无需组装机器人就能开始使用。在接下来的几周内,我们计划为最实惠和最强大的真实机器人添加更多支持。

🤗 LeRobot在Hugging Face社区页面上托管预训练模型和数据集:huggingface.co/lerobot

仿真环境中预训练模型的示例

<table> <tr> <td><img src="https://yellow-cdn.veclightyear.com/835a84d5/6a8dd93e-d9ba-4b49-807f-0276af547b74.gif" width="100%" alt="ALOHA环境中的ACT策略"/></td> <td><img src="https://yellow-cdn.veclightyear.com/835a84d5/40ea11f5-a679-4ed9-98c5-694b3619a306.gif" width="100%" alt="SimXArm环境中的TDMPC策略"/></td> <td><img src="https://yellow-cdn.veclightyear.com/835a84d5/8c11d0e4-ca09-4728-ba5c-7efa34505fba.gif" width="100%" alt="PushT环境中的扩散策略"/></td> </tr> <tr> <td align="center">ALOHA环境中的ACT策略</td> <td align="center">SimXArm环境中的TDMPC策略</td> <td align="center">PushT环境中的扩散策略</td> </tr> </table>

致谢

  • 感谢Tony Zaho、Zipeng Fu及其同事开源ACT策略、ALOHA环境和数据集。我们的版本改编自ALOHAMobile ALOHA
  • 感谢Cheng Chi、Zhenjia Xu及其同事开源扩散策略、Pusht环境和数据集,以及UMI数据集。我们的版本改编自扩散策略UMI抓取器
  • 感谢Nicklas Hansen、Yunhai Feng及其同事开源TDMPC策略、Simxarm环境和数据集。我们的版本改编自TDMPCFOWM
  • 感谢Antonio Loquercio和Ashish Kumar的早期支持。
  • 感谢Seungjae (Jay) LeeMahi Shafiullah及其同事开源VQ-BeT策略并帮助我们将代码库适配到我们的仓库。该策略改编自VQ-BeT仓库

安装

下载我们的源代码:

git clone https://github.com/huggingface/lerobot.git cd lerobot

创建一个Python 3.10的虚拟环境并激活它,例如使用miniconda

conda create -y -n lerobot python=3.10 conda activate lerobot

安装🤗 LeRobot:

pip install -e .

注意: 根据您的平台,如果在此步骤中遇到任何构建错误,您可能需要安装cmakebuild-essential来构建我们的一些依赖项。 在Linux上:sudo apt-get install cmake build-essential

对于仿真,🤗 LeRobot附带了可以作为额外功能安装的gymnasium环境:

例如,要安装带有aloha和pusht的🤗 LeRobot,请使用:

pip install -e ".[aloha, pusht]"

要使用Weights and Biases进行实验跟踪,请登录:

wandb login

(注意:您还需要在配置中启用WandB。请参见下文。)

目录结构

.
├── examples             # 包含演示示例,从这里开始了解LeRobot
|   └── advanced         # 包含更多高级示例,适合掌握基础知识的用户
├── lerobot
|   ├── configs          # 包含可在命令行中覆盖的所有选项的hydra yaml文件
|   |   ├── default.yaml   # 默认选择,加载pusht环境和扩散策略
|   |   ├── env            # 各种仿真环境及其数据集:aloha.yaml, pusht.yaml, xarm.yaml
|   |   └── policy         # 各种策略:act.yaml, diffusion.yaml, tdmpc.yaml
|   ├── common           # 包含类和实用工具
|   |   ├── datasets       # 各种人类演示数据集:aloha, pusht, xarm
|   |   ├── envs           # 各种仿真环境:aloha, pusht, xarm
|   |   ├── policies       # 各种策略:act, diffusion, tdmpc
|   |   ├── robot_devices  # 各种真实设备:dynamixel电机、opencv相机、koch机器人
|   |   └── utils          # 各种实用工具
|   └── scripts          # 包含通过命令行执行的函数
|       ├── eval.py                 # 加载策略并在环境中评估
|       ├── train.py                # 通过模仿学习和/或强化学习训练策略
|       ├── control_robot.py        # 遥控真实机器人、记录数据、运行策略
|       ├── push_dataset_to_hub.py  # 将数据集转换为LeRobot数据集格式并上传到Hugging Face hub
|       └── visualize_dataset.py    # 加载数据集并渲染其演示
├── outputs               # 包含脚本执行结果:日志、视频、模型检查点
└── tests                 # 包含用于持续集成的pytest实用工具

可视化数据集

查看示例1,了解如何使用我们的数据集类,该类可以自动从Hugging Face hub下载数据。

您还可以通过从命令行执行我们的脚本来本地可视化hub上数据集中的片段:

python lerobot/scripts/visualize_dataset.py \ --repo-id lerobot/pusht \ --episode-index 0

或者从本地文件夹中的数据集,使用根DATA_DIR环境变量(在以下情况下,将在./my_local_data_dir/lerobot/pusht中搜索数据集)

DATA_DIR='./my_local_data_dir' python lerobot/scripts/visualize_dataset.py \ --repo-id lerobot/pusht \ --episode-index 0

它将打开rerun.io并显示相机流、机器人状态和动作,如下所示: 我们的脚本还可以可视化存储在远程服务器上的数据集。有关更多说明,请参阅 python lerobot/scripts/visualize_dataset.py --help

LeRobotDataset 格式

LeRobotDataset 格式的数据集使用起来非常简单。它可以从 Hugging Face hub 上的仓库或本地文件夹中加载,例如 dataset = LeRobotDataset("lerobot/aloha_static_coffee"),并且可以像任何 Hugging Face 和 PyTorch 数据集一样进行索引。例如,dataset[0] 将从数据集中检索单个时间帧,其中包含作为 PyTorch 张量的观察和动作,可以直接输入到模型中。

LeRobotDataset 的一个特点是,除了通过索引检索单个帧外,我们还可以通过设置 delta_timestamps 为相对于索引帧的相对时间列表,来检索多个与索引帧具有时间关系的帧。例如,使用 delta_timestamps = {"observation.image": [-1, -0.5, -0.2, 0]},可以为给定索引检索 4 个帧:3 个"之前"的帧(分别在索引帧之前 1 秒、0.5 秒和 0.2 秒),以及索引帧本身(对应于 0 条目)。有关 delta_timestamps 的更多详细信息,请参阅示例 1_load_lerobot_dataset.py

在底层,LeRobotDataset 格式使用了几种序列化数据的方法,如果您计划更深入地使用这种格式,了解这些方法可能会有所帮助。我们尝试创建一种灵活yet简单的数据集格式,以涵盖强化学习和机器人领域中存在的大多数类型的特征和特性,包括仿真和现实世界中的情况,重点关注相机和机器人状态,但也可以轻松扩展到其他类型的感官输入,只要它们可以用张量表示。

以下是使用 dataset = LeRobotDataset("lerobot/aloha_static_coffee") 实例化的典型 LeRobotDataset 的重要细节和内部结构组织。具体特征会因数据集而异,但主要方面保持不变:

数据集属性:
  ├ hf_dataset:一个 Hugging Face 数据集(由 Arrow/parquet 支持)。典型特征示例:
  │  ├ observation.images.cam_high (VideoFrame):
  │  │   VideoFrame = {'path': mp4 视频路径, 'timestamp' (float32): 视频中的时间戳}
  │  ├ observation.state (float32 列表):例如机械臂关节位置
  │  ... (更多观察)
  │  ├ action (float32 列表):例如机械臂关节目标位置
  │  ├ episode_index (int64):此样本的剧集索引
  │  ├ frame_index (int64):此样本在剧集中的帧索引;每个剧集从 0 开始
  │  ├ timestamp (float32):剧集中的时间戳
  │  ├ next.done (bool):表示剧集结束;每个剧集的最后一帧为 True
  │  └ index (int64):整个数据集中的通用索引
  ├ episode_data_index:包含每个剧集的起始和结束索引的两个张量
  │  ├ from (1D int64 张量):每个剧集的第一帧索引 — 形状 (num episodes,) 从 0 开始
  │  └ to:(1D int64 张量):每个剧集的最后一帧索引 — 形状 (num episodes,)
  ├ stats:数据集中每个特征的统计信息(最大值、平均值、最小值、标准差)字典,例如
  │  ├ observation.images.cam_high:{'max': 具有相同维度数的张量(例如图像为 `(c, 1, 1)`,状态为 `(c,)`),等}
  │  ...
  ├ info:数据集元数据字典
  │  ├ codebase_version (str):用于跟踪创建数据集的代码库版本
  │  ├ fps (float):数据集记录/同步的每秒帧数
  │  ├ video (bool):指示帧是否编码为 mp4 视频文件以节省空间或存储为 png 文件
  │  └ encoding (dict):如果是视频,这记录了用于编码视频的 ffmpeg 主要选项
  ├ videos_dir (Path):存储/访问 mp4 视频或 png 图像的位置
  └ camera_keys (字符串列表):在数据集返回的项目中访问相机特征的键(例如 `["observation.images.cam_high", ...]`)

LeRobotDataset 使用几种广泛使用的文件格式来序列化其各个部分,即:

  • hf_dataset 使用 Hugging Face 数据集库序列化为 parquet
  • 视频以 mp4 格式存储以节省空间,或存储为 png 文件
  • episode_data_index 使用 safetensor 张量序列化格式保存
  • stats 使用 safetensor 张量序列化格式保存
  • info 使用 JSON 保存

数据集可以无缝地上传/下载到 HuggingFace hub。要在本地数据集上工作,您可以将 DATA_DIR 环境变量设置为您的根数据集文件夹,如上述数据集可视化部分所示。

评估预训练策略

查看示例 2,该示例说明了如何从 Hugging Face hub 下载预训练策略,并在其对应的环境中运行评估。

我们还提供了一个更强大的脚本,可以在同一次推理中并行评估多个环境。以下是使用托管在 lerobot/diffusion_pusht 上的预训练模型的示例:

python lerobot/scripts/eval.py \ -p lerobot/diffusion_pusht \ eval.n_episodes=10 \ eval.batch_size=10

注意:训练完自己的策略后,您可以使用以下命令重新评估检查点:

python lerobot/scripts/eval.py -p {OUTPUT_DIR}/checkpoints/last/pretrained_model

有关更多说明,请参阅 python lerobot/scripts/eval.py --help

训练您自己的策略

查看示例 3,该示例说明了如何在 Python 中使用我们的核心库训练模型,以及示例 4,该示例展示了如何从命令行使用我们的训练脚本。

通常,您可以使用我们的训练脚本轻松训练任何策略。以下是在 Aloha 仿真环境中训练 ACT 策略的示例,该策略使用人类收集的插入任务轨迹:

python lerobot/scripts/train.py \ policy=act \ env=aloha \ env.task=AlohaInsertion-v0 \ dataset_repo_id=lerobot/aloha_sim_insertion_human \

实验目录会自动生成,并在终端中以黄色显示。它看起来像 outputs/train/2024-05-05/20-21-12_aloha_act_default。您可以通过在 train.py Python 命令中添加以下参数来手动指定实验目录:

hydra.run.dir=your/new/experiment/dir

在实验目录中,会有一个名为 checkpoints 的文件夹,其结构如下:

checkpoints ├── 000250 # 训练步骤 250 的检查点目录 │ ├── pretrained_model # Hugging Face 预训练模型目录 │ │ ├── config.json # Hugging Face 预训练模型配置 │ │ ├── config.yaml # 合并的 Hydra 配置 │ │ ├── model.safetensors # 模型权重 │ │ └── README.md # Hugging Face 模型卡片 │ └── training_state.pth # 优化器/调度器/随机数生成器状态和训练步骤

要使用 wandb 记录训练和评估曲线,请确保您已经运行了 wandb login 作为一次性设置步骤。然后,在运行上述训练命令时,通过添加以下内容来启用配置中的 WandB:

wandb.enable=true

运行的 wandb 日志链接也会在终端中以黄色显示。以下是它们在浏览器中的样子示例:

注意:为了提高效率,在训练过程中,每个检查点都会在少量剧集上进行评估。您可以使用 eval.n_episodes=500 来评估比默认更多的剧集。或者,在训练之后,您可能希望在更多剧集上重新评估最佳检查点或更改评估设置。有关更多说明,请参阅 python lerobot/scripts/eval.py --help

重现最先进的技术(SOTA)

我们已经组织了配置文件(位于 lerobot/configs 下),以便它们能够重现各自原始工作中给定模型变体的 SOTA 结果。只需运行:

python lerobot/scripts/train.py policy=diffusion env=pusht

即可重现 Diffusion Policy 在 PushT 任务上的 SOTA 结果。

预训练策略及其重现详细信息可在 https://huggingface.co/lerobot 的"Models"部分找到。

贡献

如果您想为 🤗 LeRobot 做出贡献,请查看我们的贡献指南

添加新数据集

要将数据集添加到 hub,您需要使用具有写入权限的令牌登录,该令牌可以从 Hugging Face 设置 生成:

huggingface-cli login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential

然后指向您的原始数据集文件夹(例如 data/aloha_static_pingpong_test_raw),并使用以下命令将数据集推送到 hub:

python lerobot/scripts/push_dataset_to_hub.py \ --raw-dir data/aloha_static_pingpong_test_raw \ --out-dir data \ --repo-id lerobot/aloha_static_pingpong_test \ --raw-format aloha_hdf5

有关更多说明,请参阅 python lerobot/scripts/push_dataset_to_hub.py --help。 如果您的数据集格式不受支持,请在 lerobot/common/datasets/push_dataset_to_hub/${raw_format}_format.py 中实现您自己的格式,可以参考以下示例:pusht_zarrumi_zarraloha_hdf5xarm_pkl

添加预训练策略

一旦您训练了一个策略,您可以使用类似 ${hf_user}/${repo_name} 的 hub ID(例如 lerobot/diffusion_pusht)将其上传到 Hugging Face hub。

首先,您需要在实验目录中找到检查点文件夹(例如 outputs/train/2024-05-05/20-21-12_aloha_act_default/checkpoints/002500)。其中应包含一个 pretrained_model 目录,里面应该有:

  • config.json:策略配置的序列化版本(遵循策略的数据类配置)。
  • model.safetensors:一组 torch.nn.Module 参数,以 Hugging Face Safetensors 格式保存。
  • config.yaml:一个综合的 Hydra 训练配置,包含策略、环境和数据集配置。策略配置应与 config.json 完全匹配。环境配置对于想要评估您的策略的人来说很有用。数据集配置仅作为可重现性的记录。

要将这些上传到 hub,请运行以下命令:

huggingface-cli upload ${hf_user}/${repo_name} path/to/pretrained_model

查看 eval.py 以了解其他人如何使用您的策略。

通过性能分析改进您的代码

以下是一个用于分析策略评估的代码片段示例:

from torch.profiler import profile, record_function, ProfilerActivity def trace_handler(prof): prof.export_chrome_trace(f"tmp/trace_schedule_{prof.step_num}.json") with profile( activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], schedule=torch.profiler.schedule( wait=2, warmup=2, active=3, ), on_trace_ready=trace_handler ) as prof: with record_function("eval_policy"): for i in range(num_episodes): prof.step() # 插入要分析的代码,可能是 eval_policy 函数的整个主体

引用

如果您愿意,可以使用以下方式引用本工作:

@misc{cadene2024lerobot, author = {Cadene, Remi and Alibert, Simon and Soare, Alexander and Gallouedec, Quentin and Zouitine, Adil and Wolf, Thomas}, title = {LeRobot: State-of-the-art Machine Learning for Real-World Robotics in Pytorch}, howpublished = "\url{https://github.com/huggingface/lerobot}", year = {2024} }

此外,如果您使用了任何特定的策略架构、预训练模型或数据集,建议引用原作者的工作,如下所示:

@article{chi2024diffusionpolicy, author = {Cheng Chi and Zhenjia Xu and Siyuan Feng and Eric Cousineau and Yilun Du and Benjamin Burchfiel and Russ Tedrake and Shuran Song}, title ={Diffusion Policy: Visuomotor Policy Learning via Action Diffusion}, journal = {The International Journal of Robotics Research}, year = {2024}, }
@article{zhao2023learning, title={Learning fine-grained bimanual manipulation with low-cost hardware}, author={Zhao, Tony Z and Kumar, Vikash and Levine, Sergey and Finn, Chelsea}, journal={arXiv preprint arXiv:2304.13705}, year={2023} }
@inproceedings{Hansen2022tdmpc, title={Temporal Difference Learning for Model Predictive Control}, author={Nicklas Hansen and Xiaolong Wang and Hao Su}, booktitle={ICML}, year={2022} }
@article{lee2024behavior, title={Behavior generation with latent actions}, author={Lee, Seungjae and Wang, Yibin and Etukuru, Haritheja and Kim, H Jin and Shafiullah, Nur Muhammad Mahi and Pinto, Lerrel}, journal={arXiv preprint arXiv:2403.03181}, year={2024} }

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多