Automated PX4 SITL Simulation & Validation on AWS (with ROS 2 & GitHub Actions)

Hi everyone,

I’d like to share an open-source project I’ve been working on that might interest the PX4, DevOps, and robotics simulation communities:

PX4 SITL on AWS — Automated Simulation & Validation with ROS 2 and GitHub Actions

Overview

This project enables running PX4 SITL simulations (using Gazebo Harmonic) on AWS EC2 instances, with the entire workflow managed by GitHub Actions. The main goal is to make large-scale, automated testing and validation of offboard control algorithms (ROS 2 + uXRCE-DDS) simple and reproducible.

Key Features:

  • Automated EC2 provisioning: Spin up on-demand EC2 instances as simulation runners.
  • ROS 2 + PX4 SITL inside Docker: Pulls a prebuilt Docker image with PX4, ROS 2, and simulation dependencies.
  • Flexible simulation launch: Start multiple parallel simulations with custom ROS 2 parameters from the GitHub UI (no manual CLI work needed).
  • Bag recording & S3 storage: Automatically records data to ROS 2 bags and uploads them to S3 for later analysis.
  • CI/CD Integration: Supports both interactive (manual) runs and CI-triggered simulations (e.g., on release/PR merge).
  • Automatic log/report generation: After all runs, generates a summary report using the collected data.
  • Auto shutdown: EC2 instances terminate themselves after the workflow, minimizing cost.

Example Use Cases

  • Continuous integration/validation of offboard algorithms
  • Cloud-based batch simulation/testing of new mission logic or parameter sweeps
  • Quick, reproducible SITL runs without needing a local dev environment.

Repository

The project is open source and available here:

Looking for Feedback & Collaboration

I’d love to get feedback from the PX4 community!

  • Any thoughts on improvements, integrations, or features you’d find useful?
  • Interested in collaborating or extending this workflow for your use case?
  • Want to try it out or need help setting it up? Let me know!

Feel free to reply here or open an issue/discussion in the repo.

Thanks!

4 Likes

Cool project @iftahnaf, in the past I have always wanted a standalone SITL in the cloud instance, but could never find the time to work on this. I haven’t yet read the whole project but looks promising, I’ll probably ask more questions once I’m able to spend more time with this.

For now, have you seen this project? it could potentially complement your work, we use it heavily on PX4-Autopilot ci running on Dronecode’s AWS account

@rroche thanks alot for your reply, I really appreciate it.

I agree, once the development environment is set up, having it packaged in a standalone container brings huge advantages for validation and operations research of the offboard algorithms, especially in terms of scalability and sharing a consistent SITL setup across the team.

The ability to change ROS 2 parameters (and maybe even PX4 parameters later on) at launch time, combined with the scalability of cloud runners, really turns this into a data-generation machine.

The RunsOn project looks amazing. I did check it out, but personally found it a bit more complex to get started with, compared to ec2-github-runner, which was very straightforward to use. That said, I’ll definitely add RunsOn runners to my roadmap.

1 Like

Hello @ iftahnaf

Great project !!

I would like to know whether the following can be done

  1. Integrate the PX4 simulation with a platform such as Arduino IDE platform so that more
    sensors can be tested .

thank you

Hi @sibujacob,

Thanks for your question and the kind words!

If I understand correctly, you want to know if you can use the PX4 simulation together with platforms like Arduino IDE to test additional sensors.

  • If you’re running HITL (hardware-in-the-loop), you can connect real sensors to your flight controller and test them in a simulated environment.
  • If you want to simulate new sensors in SITL (software-in-the-loop), you can add or modify the model in the simulation configuration files (such as the model’s SDF for Gazebo).

Just to clarify, this project is focused on testing PX4 SITL algorithms with the Gazebo simulator in the cloud, so HITL scenarios aren’t really the main goal here.

You can find additional information in the px4 docs.

Hello ,

thank you for the feedback. I didn’t realize this was for PX4 SITL algorithms testing purposes…oops…my bad … :slightly_smiling_face:

1 Like