This is a fork of PegasusSimulator/PegasusSimulator. The upstream project is a framework built on top of NVIDIA Omniverse and Isaac Sim for simulating the dynamics of aerial vehicles with PX4 / ArduPilot integration. See the upstream documentation for the original framework, its installation, and its API.
This fork ports the framework to Isaac Sim 6.0 and integrates a real drone ("DPV" — Digital Place Vision) GPS-denied autonomy stack against it in place of Gazebo. All upstream content is preserved below the fork section; the
CHANGELOG.mdrecords every change session by session.
The framework has been ported to and validated end-to-end (spawn → PX4 boot → EKF init → arm → takeoff → auto mission) on:
| Component | Version |
|---|---|
| NVIDIA Isaac Sim | 6.0.0 (imports moved from omni.isaac.* to isaacsim.*; physics via isaacsim.core.experimental.prims) |
| PX4-Autopilot | v1.16.2 (SITL, TCP HIL link on port 4560 — the simulator is the tcpin server) |
| Ubuntu | 22.04 LTS |
| Python (Isaac bundled) | 3.12 |
Isaac Sim 6.0 port. Updated all omni.isaac.* imports to their isaacsim.* equivalents, moved rotor
force/torque application to the Isaac 6.0 RigidPrim tensor API (the old bare physxForce USD attributes
were silently discarded), added isaacsim.core.api as an explicit extension dependency, and fixed the PX4
v1.16 MAVLink HIL link — it is always TCP with the simulator as the tcpin server, so connection_type
must stay tcpin and the removed PX4_SIM_PROTOCOL env var is a no-op. QGroundControl connects
automatically on UDP 14550 on the same machine.
DPV autonomy stack (examples/dpv_sim/). A GPS-denied warehouse-inspection pipeline replacing Gazebo:
a full-scale custom V1 quadrotor (bench-measured thrust curve, ZED 2i-class RGB-D camera, RPLIDAR-class 2D
lidar), Cartographer SLAM feeding PX4 external vision in place of GPS, a warehouse mission / path-planning /
pose-correction chain, and a real ZED SDK VIO path via the Stereolabs zed-isaac-sim streamer. start.sh /
stop.sh orchestrate the whole bring-up over tmux (Isaac Sim, MicroXRCEAgent, the ROS 2 bringup, and
QGroundControl), with selectable phases — see examples/dpv_sim/ and the phase notes in
examples/dpv_sim/PLAN.md.
See CHANGELOG.md for the full, dated list of changes (including known issues such as the
Phase 4 real-ZED-VIO SDK version gap).
isaac_run is now used to launch Isaac Sim. This is a function that should be added to your .bashrc or .zshrc file during the installation of Isaac Sim. See Installation Instructions for more details.
This was done to simplify the launching of Isaac Sim from the terminal with ROS2 support. All previous instructions that mentioned launching Isaac Sim examples from the examples folder using the ISAACSIM_PYTHON command should now use isaac_run instead.
Please refer to the updated documentation for more details.
ROS 2 environment note. Isaac Sim bundles its own rclpy (built for Isaac's Python) via the
isaacsim.ros2.bridgeextension. If your shell sources a system ROS 2 whose Python version differs from Isaac's (e.g. system Humble on py3.10 vs Isaac's py3.12), that system rclpy leaks ontoPYTHONPATH/LD_LIBRARY_PATHand shadows Isaac's, crashing any example that imports rclpy withModuleNotFoundError: No module named 'rclpy._rclpy_pybind11'. Launch Isaac viascripts/isaac_run.sh, which strips/opt/rosandros2_wsentries from the environment before starting Isaac (defineisaac_run() { "$HOME/PegasusSimulator/scripts/isaac_run.sh" "$@"; }in your rc file). The system-side ROS 2 nodes — e.g.examples/slam_v1/run_slam.sh— still source system ROS 2 directly and are unaffected.
- 2026-06-23: Pegasus Simulator v6.0.0 is released for Isaac 6.0. Updated all
omni.isaac.*imports toisaacsim.*equivalents and removed deprecated Kit dependencies. The Ardupilot experimental interface was not tested in this version. - 2025-10-26: Pegasus Simulator v5.1.0 is released for Isaac 5.1.0. This version is NOT compatible with older versions of Isaac Sim. The Ardupilot experimental interface was not tested in this version. This update had an initial open-source contribution from Victor Kallenbach.
- 2025-10-25: Pegasus Simulator v4.5.1 is released for Isaac 4.5.0. This version is NOT compatible with older versions of Isaac Sim. The Ardupilot experimental interface was fixed and improved by Seunghwan Jo and Tomer Tiplitsky.
- 2025-07-20: Pegasus Simulator v4.5.0 is released for Isaac 4.5.0. This version is NOT compatible with older versions of Isaac Sim. The Ardupilot experimental interface was not tested in this version.
- 2024-11-01: Pegasus Simulator v4.2.0 is released for Isaac 4.2.0. This version is NOT compatible with older versions of Isaac Sim. This version includes a new experimental interface for Ardupilot integration, provided by open-source contributor Tomer Tiplitsky.
- 2024-08-02: Pegasus Simulator v4.1.0 is released for Isaac 4.1.0. This version is NOT compatible with older versions of Isaac Sim.
Everything below is unchanged from the upstream Pegasus Simulator project.
If you find Pegasus Simulator useful in your academic work, please cite the paper below. It is also available here.
@INPROCEEDINGS{10556959,
author={Jacinto, Marcelo and Pinto, João and Patrikar, Jay and Keller, John and Cunha, Rita and Scherer, Sebastian and Pascoal, António},
booktitle={2024 International Conference on Unmanned Aircraft Systems (ICUAS)},
title={Pegasus Simulator: An Isaac Sim Framework for Multiple Aerial Vehicles Simulation},
year={2024},
volume={},
number={},
pages={917-922},
keywords={Simulation;Robot sensing systems;Real-time systems;Sensor systems;Sensors;Task analysis},
doi={10.1109/ICUAS60882.2024.10556959}}
This simulation framework is an open-source effort, started by me, Marcelo Jacinto in January/2023. It is a tool that was created with the original purpose of serving my Ph.D. workplan for the next 4 years, which means that you can expect this repository to be mantained, hopefully at least until 2027.
- Project Founder
- Marcelo Jacinto, under the supervision of Prof. Rita Cunha and Prof. Antonio Pascoal (IST/ISR-Lisbon)
- Architecture
- Multirotor Dynamic Simulation and Control
- Example Applications
- Ardupilot Integration (Experimental)
Also check the always up-to-date Github contributors list with all the open-source contributors.
In parallel to this project, the Pegasus (GNC) guidance, control, and navigation project serves as the foundation control code for performing real-world experiments for my Ph.D. More information can be found at this link: Pegasus GNC
An high level project roadmap is available here.
We welcome new contributions from the community to improve this work. Please check the Contributing section in the documentation for the guidelines on how to help improve and support this project.
- Use Discussions for discussing ideas, asking questions, and requests features.
- Use Issues to track work in development, bugs and documentation issues.
- Use Pull Requests to fix bugs or contribute directly with your own ideas, code, examples or improve documentation.
Pegasus Simulator is released under BSD-3 License. The license files of its dependencies and assets are present in the docs/licenses directory.
NVIDIA Isaac Sim is available freely under individual license.
PX4-Autopilot is available as an open-source project under BSD-3 License.
- Dynamics Systems and Ocean Robotics (DSOR) group of the Institute for Systems and Robotics (ISR), a research unit of the Laboratory of Robotics and Engineering Systems (LARSyS).
- Instituto Superior Técnico, Universidade de Lisboa
The work developed by Marcelo Jacinto and João Pinto was supported by Ph.D. grants funded by Fundação para a Ciência e Tecnologia (FCT).
extensions/pegasus.simulator— the core Isaac Sim extension. Itspegasus/simulator/logicpackage contains the vehicle dynamics, controlbackends(PX4/ArduPilot MAVLink, python control),sensors,graphical_sensors,thrusters,graphs,people/people_backends, andvehiclessubmodules that make up the simulation framework's public API.examples— standalone runnable scripts demonstrating the framework, numbered roughly in order of complexity (e.g.1_px4_single_vehicle.py,2_px4_multi_vehicle.py,3_ros2_single_vehicle.py,4_python_single_vehicle.py,8_camera_vehicle.py,9_people.py,11_ardupilot_multi_vehicle.py,12_px4_v1_vehicle.py), plusdpv_simandslam_v1subdirectories with more elaborate ROS 2 / navigation bringup setups.scripts/isaac_run.sh— the launcher used by theisaac_runshell function to start Isaac Sim with a ROS-free environment so its bundled rclpy is used instead of any system ROS 2 install.docs— Sphinx documentation sources, published at pegasussimulator.github.io/PegasusSimulator.
Once Isaac Sim and the isaac_run shell function are installed (see the Installation Instructions), run any example script with:
isaac_run examples/1_px4_single_vehicle.pyThis launches Isaac Sim, loads the Pegasus Simulator extension, and spawns a single multirotor vehicle controlled through the PX4 MAVLink backend. Browse the examples directory for other scenarios (multi-vehicle, ROS 2, camera sensors, ArduPilot, and the custom V1 vehicle).




