gym-pybullet-drones:用 PyBullet 物理仿真跑通无人机强化学习的最小路径

📅 2026/8/22 18:50:26
gym-pybullet-drones:用 PyBullet 物理仿真跑通无人机强化学习的最小路径
gym-pybullet-drones用 PyBullet 物理仿真跑通无人机强化学习的最小路径【免费下载链接】gym-pybullet-dronesPyBullet Gymnasium environments for single and multi-agent reinforcement learning of quadcopter control项目地址: https://gitcode.com/gh_mirrors/gy/gym-pybullet-drones训练无人机控制策略需要一套既懂物理仿真、又对接口强化学习库的环境自己从零封装 GymnasiumPython 强化学习环境接口标准并不轻松。gym-pybullet-drones 就是为此准备的它基于 PyBullet开源物理引擎提供单智能体与多智能体四旋翼强化学习的 Gymnasium 环境并与 stable-baselines3 的 PPO一种基于策略梯度的强化学习算法开箱即用。项目是什么面向单/多智能体无人机强化学习的 Gymnasium 环境项目把 Crazyflie 级小型四旋翼默认模型 CF2X封装成标准强化学习环境PyBullet 负责刚体动力学仓库负责观测组装、奖励定义和回合管理。它是 IROS 2021 原项目的极简重构适配 gymnasium 与 stable-baselines3 2.x并内置 Betaflight 与 Crazyflie 的 SITLsimulation-in-the-loop在仿真器内运行真实固件。与同类项目相比它同时提供可跑的强化学习环境和一个经典 PID 控制基线方便对比“学出来的策略”和“手调的控制器”。核心目录环境定义单/多智能体悬停、轨迹跟踪、SITLgym_pybullet_drones/envs/控制算法离散 PID、MRAC模型参考自适应控制gym_pybullet_drones/control/可运行示例PID、强化学习、下洗、SITLgym_pybullet_drones/examples/核心能力从基础到进阶单智能体悬停环境HoverAviary一架 CF2X 对准 (0, 0, 1m) 定点悬停回合长 8 秒 → 用它调通 PPO 超参数。多智能体协同环境MultiHoverAviary2 架无人机分别悬停在 1.2m 与 0.7m 高度 → 做多智能体强化学习num_drones参数可调整架数。经典控制基线DSLPIDControlpid.py 里现成的离散 PID → 不训练策略就能验证轨迹跟踪也可作为强化学习的对比基线。物理模型扩展downwash.py 使用 PYB_DW下洗气流等选项 → 研究无人机间气动相互作用与近地悬停。固件 SITLbeta.py 在仿真器内运行真实 Betaflight 固件 → 把策略迁移到真实固件前做验证。 5分钟跑通从克隆到第一次仿真git clone https://gitcode.com/gh_mirrors/gy/gym-pybullet-drones cd gym-pybullet-drones pip install -e .要求 Python 3.10pip 会自动装好 pybullet、gymnasium、stable-baselines3 等依赖。装完后进入gym_pybullet_drones/examples/执行python3 pid.pyPyBullet 窗口弹出3 架 CF2X 以不同高度绕原点盘旋12 秒后自动画出轨迹曲线。 动手从单目标到多目标用 PID 螺旋轨迹验证环境目标先不碰强化学习确认物理仿真与经典控制链路正常。cd gym_pybullet_drones/examples/ python3 pid.py3 架无人机沿不同高度的圆形轨迹飞行整体形成螺旋结束后若位置、角速度与 RPM 曲线收敛到目标值说明环境可用。经典 PID 只能证明环境可用下一步把控制器换成学出来的策略。单无人机悬停 PPO 训练再切到双机目标用 PPO 训练单架无人机在 1m 高度悬停再翻一个参数扩展到双机任务。cd gym_pybullet_drones/examples/ python learn.py python learn.py --multiagent true训练期间终端滚动输出奖励日志达到目标累计奖励单机 474 / 双机 949.5会提前停止随后弹出 PyBullet 窗口回放学到的策略并画出奖励随训练步数的变化曲线双机任务中两架无人机分别悬停在 1.2m 与 0.7m。调参与踩坑物理参数、观测空间、动作空间切换物理模型阻力、下洗与地面效应在环境构造函数的physics参数里从 enums.py 的 Physics 枚举中选默认 PYB 是纯刚体PYB_DRAG 加空气阻力PYB_DW 加机间下洗PYB_GND 加地面效应PYB_GND_DRAG_DW 全开。切换后 downwash.py 场景里下方飞机会被上方旋翼尾流明显压住行为更贴近真实飞行控制任务也更难。切换观测空间与动作空间改环境构造函数的obs与act参数默认值在 examples/learn.py 里kin one_d_rpm。obs可选 kin位姿加速度的低维向量或 rgb每架无人机视角相机图像适合视觉方法act可选 one_d_rpm单维推力、四个电机同值训练最快、rpm四个电机转速或 vel三维速度期望环境内部用 PID 跟踪。调整act是最直接的任务难度旋钮。容易踩的坑⚠️pip install -e .时 pybullet 编译失败通常是缺 gcc先执行sudo apt install build-essential再重试。无显示器的服务器上 PyBullet 窗口无法打开learn.py 加--gui false关掉 GUI另外默认 1e7 训练步在本地很慢脚本会在达到目标奖励时提前停也可以直接调小 total_timesteps。延伸学习深入入口README.md 有 Betaflight SITL 的完整编译步骤、pycffirmware 接入说明和 IROS 2021 引用信息。相关方向IROS 2021 原始论文arXiv: 2103.02142及仓库内 paper 分支的原始代码库以及 stable-baselines3 的 PPO 实现。定位在“PyBullet → Gymnasium 环境 → PPO 训练 → SITL 真实固件”这条链路里它承担中间的环境层。【免费下载链接】gym-pybullet-dronesPyBullet Gymnasium environments for single and multi-agent reinforcement learning of quadcopter control项目地址: https://gitcode.com/gh_mirrors/gy/gym-pybullet-drones创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考