gym-pybullet-drones:四旋翼强化学习环境
基于PyBullet物理引擎、兼容Gymnasium的多智能体四旋翼控制强化学习环境。
- Star 数
- ★ 2.2k
- 最近更新
- 2 天前
- License
- MIT
- 主语言
- Python
- FA 评分
- 42/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 平台专用
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 研究人员在四旋翼控制算法开发中,使用该环境进行单智能体悬停或轨迹跟踪的强化学习实验。
- 不适合
- 需要跨平台运行 Betaflight SITL 示例的用户(仅支持 Ubuntu)
- 不愿使用 conda 管理环境的团队
- 在无 OpenGL/GPU 上下文支持的 NVIDIA 系统上部署的用户
这个 Agent 能做什么,适合哪些场景?
gym-pybullet-drones 是原始仓库的精简重构,提供基于 PyBullet 物理引擎的 Gymnasium 环境,用于单智能体和多智能体四旋翼控制强化学习。它支持与 Stable-Baselines3 2.0 及 Betaflight/Crazyflie 固件的 SITL 仿真集成,并包含 PID 控制、下洗效应和强化学习示例。该环境在 IROS 2021 论文中提出,并已获得 GitHub 维护者聚焦。安装需通过 conda 创建 Python 3.10 环境并安装依赖,支持 Ubuntu 和 macOS,但 Betaflight SITL 示例仅限 Ubuntu。
该仓库提供 Gymnasium 环境(如 gym-pybullet-drones),用于四旋翼控制任务。它通过 PyBullet 物理引擎进行仿真,支持单智能体和多智能体(如双无人机悬停)场景。包含 PID 控制示例(pid.py、pid_velocity.py)、下洗效应示例(downwash.py)和强化学习示例(learn.py、play.py),其中 learn.py 使用 Stable-Baselines3 的 PPO 训练策略。还提供与 Betaflight SITL(通过 beta.py)和 pycffirmware(cf.py)的集成,用于固件仿真。所有示例均通过命令行运行,并支持 pytest tests/ 运行测试。
- 研究人员在四旋翼控制算法开发中,使用该环境进行单智能体悬停或轨迹跟踪的强化学习实验。
- 多智能体系统研究者利用
--multiagent true选项,模拟多无人机协同任务,如不同高度的悬停控制。 - 控制工程师通过 PID 示例快速验证位置和速度控制算法,进行参数调整。
- 对 Betaflight 固件感兴趣的用户,在 Ubuntu 上通过 SITL 仿真测试控制算法与真实固件的交互。
- 教育场景中,用于教学强化学习和多智能体控制,结合 Stable-Baselines3 进行实验。
如何安装或部署这个 Agent?
克隆仓库并创建 conda 环境(Python 3.10):
git clone https://github.com/learnsyslab/gym-pybullet-drones.git
cd gym-pybullet-drones/
conda create -n drones python=3.10
conda activate drones
pip install -e .若需构建 pybullet,可能需要安装 build-essential。
如何使用这个 Agent?
进入示例目录并运行脚本:
cd gym_pybullet_drones/examples/
python pid.py
python learn.py
python learn.py --multiagent true
LATEST_MODEL=$(ls -t results | head -n 1) && python play.py --model_path "results/${LATEST_MODEL}/best_model.zip"运行测试:pytest tests/。Betaflight SITL 示例需额外构建 Betaflight 固件并运行 beta.py。
这个 Agent 有哪些优点和局限?
- 基于 PyBullet 的物理仿真,提供真实的动力学交互。
- 兼容 Gymnasium 和 Stable-Baselines3 2.0,便于集成现有 RL 工具链。
- 支持单智能体和多智能体场景,覆盖多种研究需求。
- 提供 PID 和 RL 示例,降低入门门槛。
- Betaflight SITL 示例仅支持 Ubuntu,限制了跨平台部署。
- 需要 conda 环境管理,对环境配置有一定要求。
- 依赖 PyBullet,可能对 GPU 和 OpenGL 上下文有要求(如 NVIDIA 双显卡需切换模式)。
- 当前为重构版本,与原始 IROS 2021 代码库存在差异,需切换分支以获取原版。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| gym-pybullet-drones:四旋翼强化学习环境 当前 | 42 · 缺口较多 | 命令行工具免费 | ★ 2.2k | 2 天前 | Python | — |
| Mobile-Agent:多平台GUI智能体系列 | 29 · 缺口较多 | 云服务 / SaaS免费版 + 付费版 | ★ 9.3k | 3 个月前 | Python | — |
| GOD 智能体社会控制室 | 60 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 1.2k | 16 天前 | Python | OpenAI API |
| LoopX 长任务控制平面 | 84 · 表现良好 | 命令行工具免费 + 模型费 | ★ 6.4k | 今天 | Python | Codex |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:仓库未包含任何权限声明、用户确认机制、数据流说明或敏感数据处理策略;依赖项未进行安全审计,外部效果(如网络访问)未说明,回滚机制未提及。来源归属方面,README和pyproject.toml明确列出了作者和机构,但发布者身份未经验证。因此,除来源归属外,其余标准均因缺乏证据而评为0。
证据显示:README中的安装和使用说明与pyproject.toml中的依赖声明一致,测试文件与示例对应,自洽性较好。依赖项均为常见库,但未提供版本锁定或安全审计,依赖可用性一般。失败消息方面,README和代码中未提供详细的错误处理或故障排除信息,仅有一个简短的Troubleshooting注释,因此评为1。
证据显示:README明确面向研究者和开发者,提供了多种使用场景(PID控制、强化学习、SITL等),受众和场景覆盖较好。能力边界在README中通过示例和说明有所体现,但未明确列出所有限制。触发精度方面,示例命令清晰,但未提供详细的参数说明或配置选项,评为1。环境适配方面,README提到了Ubuntu和macOS,但未详细说明其他平台或硬件要求,评为2。
证据显示:README结构清晰,包含安装、使用、测试、引用等部分,信息架构良好。安装说明详细,包括conda和pip步骤。命名稳定,包名和模块名一致。示例丰富,但FAQ缺失。已知限制在README的WIP部分有提及,但未系统化。许可证为MIT,版本号在pyproject.toml中为2.1.0,但未提供CHANGELOG。维护责任在README中通过作者和机构信息有所体现,但未明确说明维护策略。
证据显示:输出可用性方面,示例脚本和测试提供了可运行的代码,但未提供详细的输出格式说明。边际价值方面,该仓库提供了独特的PyBullet无人机仿真环境,具有较高的研究价值。成本效益方面,安装和使用成本较低,但未提供性能基准或资源需求说明。
证据显示:README中的声明(如兼容性、功能)与代码和测试文件基本一致,可追溯性较好。跨来源验证方面,仅依赖单一仓库,未提供外部验证。事实与推断分离方面,README明确区分了事实(如安装步骤)和推断(如推荐其他工具),但未明确标注。
- 源码中未见:最小权限约束只授予完成任务所需的权限:用专用账号或只读令牌,并限定可访问的目录和仓库。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:数据流向说明运行时观察它连接了哪些外部服务(代理或防火墙日志);弄清数据去向之前不要输入敏感数据。
- 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
- 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
- 源码中未见:外部影响披露先弄清它会写入、发送或修改哪些外部系统,用测试账号或测试仓库验证后再接入正式环境。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 发布者身份未经验证,应视为未知,不要基于品牌信任。
- 依赖项未进行安全审计,且未固定版本,存在供应链风险。
- 未提供数据流或权限说明,若用于敏感环境需谨慎。
- 未提供回滚机制,更新可能带来不兼容变化。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
常见问题
是否支持 Windows 或 macOS?
是否需要 GPU 才能运行?
如何获取原始论文版本?
git checkout paper 命令切换到原始代码库。是否支持多智能体训练?
learn.py --multiagent true 提供了双无人机悬停示例。