![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch
Messages
Services
Plugins
Recent questions tagged uav_simulator at Robotics Stack Exchange
![]() |
uav_simulator package from navrl repomap_manager navigation_runner onboard_detector uav_simulator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | [IEEE RA-L'25] NavRL: Learning Safe Flight in Dynamic Environments (NVIDIA Isaac/Python/ROS1/ROS2) |
Checkout URI | https://github.com/zhefan-xu/navrl.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-07-03 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | reinforcement-learning robotics collision-avoidance robot-navigation nvidia-isaac embodied-ai isaac-sim ros1-noetic ros2-humble |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Zhefan Xu
Authors
Lightweight Gazebo/ROS-based Simulator for Unmanned Aerial Vehicles (UAVs)
This package implements a lightweight quadcopter unmanned aerial vehicles (UAVs) simulator including various static and dynamic based on Gazebo/ROS. It also includes an optional PX4-based quadcopter simulation wrapper.
Author: Zhefan Xu, Computational Engineering & Robotics Lab (CERLAB) at Carnegie Mellon University (CMU).
If you find this work helpful, kindly show your support by giving us a free ⭐️. Your recognition is truly valued.
This repo can be used as a standalone package and also comes as a module of our autonomy framework.
I. Installation Guide
This repo has been tested on ROS Melodic with Ubuntu 18.04 and ROS Noetic with Ubuntu 20.04.
a. Non-PX4 Simulator (Required)
To install the non-PX4 simulator, please follow the standard catkin package make process as follows:
sudo apt-get install ros-[melodic/noetic]-mavros* # this package depends on mavros related ROS packages
git clone https://github.com/Zhefan-Xu/uav_simulator.git
cd ~/catkin_ws
catkin_make
setup environment variable. Add following to your
source path/to/uav_simulator/gazeboSetup.bash
b. PX4-based Simulator Wrapper (Optional but Recommended)
Please make sure that you have follow the previous steps to build the non-px4 simulator.
Step 1: Install vehicle models and make it compatible with your current ROS. The following lines give the summaries:
🍎 Current PX4 version has some problems with offboard mode, please use v1.12.0 as modified in the following lines:🍎
cd directory/to/install # this should not be your catkin workspace
git clone https://github.com/PX4/PX4-Autopilot.git --recursive --branch v1.12.0
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh # this step will ask you to reboot
# Please make sure you reboot after the previous step
cd /path/to/PX4-Autopilot
DONT_RUN=1 make px4_sitl_default gazebo
Step 2: Add the following script to
```. Remember to replace
```<PX4-Autopilot_clone>
``` with the path to your PX4-Autopolot directory. This step will you setup the environment variables properly.
source
**Step 3**: Install geographiclib datasets for PX4 simulation.
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo bash ./install_geographiclib_datasets.sh
## II. Quick Start
a. To launch the non-PX4 simulator with a quadcopter:
roslaunch uav_simulator start.launch
You should be able to see a customized quadcopter in a predefined gazebo environment as shown below:

b. To launch the PX4 simulator with a quadcopter:
roslaunch uav_simulator px4_start.launch
```
You should be able to see a PX4 IRIS quadcopter in a predefined gazebo environment as shown below:
III. Keyboard Control
Our non-PX4 customized simulator supports the keyboard control function. You are able to control the quadcopter motion when you click the keyboard controller panel shown as below:
IV. Simulation Environments
- There are various predefined environments in this package and you can easily switch environment when you modify the launch file located in
uav_simululator/launch/start.launch
oruav_simululator/launch/px4_start.launch
. All the predifined environments are listed in the lanuch files. - There are some environments which contains dynamic objects (e.g. moving persons). You can distinguish those dynamic environments by the environments’ names. For example, the environment name
floorplan1_dynamic_16.world
indicates that there are 16 dynamic objects in the floorplan1 environment.
One example of the dynamic environment is shown as below:
V. ROS Topics
Here lists some important ROS topics related to the simulator:
-
Non-PX4 Simulator:
-
/CERLAB/quadcopter/cmd_acc
: The command acceleration to the quadcopter. -
/CERLAB/quadcopter/pose
: The ground truth pose of the quadcopter. -
/CERLAB/quadcopter/odom
: The ground truth odom of the quadcopter. -
/CERLAB/quadcopter/setpoint_pose
: The command pose to the quadcopter. -
/camera/color/image_raw
: The color image from the onboard camera. -
/camera/depth/image_raw
: The depth image from the onboard camera. -
/camera/depth/points
: The depth cloud from the onboard camera.
-
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
roscpp | |
rospy | |
std_msgs | |
geometry_msgs | |
sensor_msgs | |
message_generation | |
gazebo_ros | |
mavros | |
mavros_extras | |
catkin | |
message_runtime |
System Dependencies
Dependant Packages
Launch files
- launch/px4_start.launch
-
- x [default: 0]
- y [default: 0]
- z [default: 0]
- R [default: 0]
- P [default: 0]
- Y [default: 0]
- est [default: ekf2]
- vehicle [default: iris]
- world [default: $(find uav_simulator)/worlds/generated_env/generated_env_static.world]
- sdf [default: $(find uav_simulator)/urdf/px4_iris.sdf]
- gui [default: true]
- debug [default: false]
- verbose [default: false]
- paused [default: false]
- respawn_gazebo [default: false]
- fcu_url [default: udp://:14540@localhost:14557]
- respawn_mavros [default: false]
- interactive [default: true]
- launch/rviz.launch
- launch/rviz_px4.launch
- launch/setupTF.launch
-
- pose_topic [default: /CERLAB/quadcopter/pose]
- launch/start.launch