Online Ardupilot and PX4 SITL Simulation

About a year ago I got really interested in creating a cloud based simulation website designed to easily create Ardupilot and PX4 simulations. There are a number of use cases I wanted to address with the site. All of the use cases are very cool IMO, but trying to address all of them and make a functioning saas site has spread me thin and I have struggled with scope creep and scatter brain.

These are some of the features my site, https://intelligentquads.com/ currently supports:

  • PX4 and ardupilot SITLs
  • Multi-vehicle simulation
  • Mixing of autopilots and vehicles
  • API for programmatically creating your simulations
  • Connecting to simulations via mavlink from your computer
  • Online Dev Environment
    • If you don’t want to have to install any applications you can get started quickly by using the online
    • If you want to run your application locally and connect to the sim via mavlink this is also supported and also my preferred method
      text editor and terminal
  • Web Based Visualization

Some of the use cases for my Online simulator are below.

Reduce the barrier to entry for making mavlink based applications:

I run the youtube channel Intelligent Quads. The videos I make are mostly about helping new drone developers make basic autonomous drone applications. Unfortunately, There is a lot of setup required, and I really want a web based dev environment that I can point people to where they can immediately start learning and getting their feet wet. I have a demo setup on the website where a text editor and a visualizer and terminal are spawned in at creation of the simulation. This is a super early proof of concept, but I am hopeful that the idea will be really helpful for people learning.

Make it easier to Configure Simulations

The ardupilot SITL is a great tool that has a lot of features that are configurable via the command line. By putting these configurations into a GUI developers could be more aware of the tools available and it is a little easier for them to reconfigure. This aspect of the website, I still want to improve a lot. I would love to add a GUI for doing common fault injections such as turning off GPS or failing a motor or changing the wind speed.

Quickly Change Between Software Versions, Vehicles and Autopilots

With a local dev environment changing versions of the software requires checking out a different commit, cleaning the build folder, updating submodules and running another build which can be time consuming. With the online site all the tagged software versions and vehicles are prebuilt and deployable within a few seconds. This allows developers to test their applications against various builds to check for compatibility and to see if their software breaks between versions. In addition it is also very easy to hop between PX4 and Ardupilot and allows developers to support both major autopilots. This would have previously required installing two separate tool chains and learning two separate development environments

Multi Vehicle Simulation and Infinite Scalability

Now that all of the vehicles are running in a kubernetes cluster, obtaining more compute for more simulated vehicles is handled by the cloud provider. This allows developers to create massive simulations without having to invest in expensive physical computers. From my perspective, I should be able to keep costs relatively low since the cluster can autoscale up and down to fit demand.

Heterogenous Autopilots

PX4 and Ardupilot both use MAVlink which offers a command interface. By staggering the MAVlink system IDs it should be possible to manage both autopilots on the same mavlink network. With the online simulator developers can now mix and match autopilots and vehicle types.

Automated Integration Testing

Overtime both PX4 and Ardupilot’s core functionality changes. The only way to be certain your application doesn’t break between versions is to conduct integration tests. Now with the online simulator and the available API developers can easily create and configure sitl environments to run against with their automated tests. I have started to prove this use case with my iq_pymavlink_tutorial git repo. Unit Tests by ericjohnson97 · Pull Request #3 · Intelligent-Quads/iq_pymavlink_tutorial · GitHub

One added benefit of using the github workflows and the online simulator is parallelization. All unit tests can run at the same time on isolated github runners and create isolated environments to connect to on the IQ online simulator.

Pricing

Right now there is one pricing tier that allows up to 3 concurrent simulations or 3 vehicles in a single simulation as well as access to the API for $7 per month. I realize that some people would be interested in creating massive simulations and would like more than 3. The site can support this, but I am having a hard time finding a pricing model. I am very unsure how to tier the subscriptions. I also know that some people would love to create large amounts of vehicles via the API, but I also have not figured out how to charge for this. I have thought about separating the API and web dashboard and having the API be pay as you go, but I am very unsure. I would love feedback here!

Limitations

Some of the things the site doesn’t currently support are as follows.

  • Other simulators such as gazebo or airsim
  • Collisions between vehicles
  • Vision applications
  • Deploying a developer application into the cluster

Disclaimer

The website as its stands is a beta and I want any users to understand that there are inevitably going to be bugs and missing features. I also want people to understand that the website is not a full time project. It’s really just a hobby that I have been working on on nights and weekends. That being said I am really looking forward to all your thoughts and feedback!

6 Likes

Hello @sprained_ankle ,
This is fantastic… Congratulation.
I really want to join and try your apps.
I hope it works as expected.
Any youtube tutorial ?

Thank you
Tony

I appreciate the kind words! I have a couple videos in this playlist showing how to use it.

Also, everyone who creates an account now gets a 14 day free trial. Would love to hear what you think!