Blog post: Reproducible cross-platform ROS installation with Pixi

Hey all,

We’ve seen a big increase in the interest on making ROS supported on multiple platforms. And in general easier to install. This is not the first time I post on this forum about this, but seeing it’s a recurring topic, I would like to cross-post our latest blog post on the matter.

Blog post: Pixi: Modern package management for Robotics | prefix.dev

I’ve included a few of short videos to showcase what it could look like if you use ROS through Pixi.

I’m really looking forward to discussing the topic further at ROSCon2025. There will be two related BOF’s on Monday:

  • 10:00: Deployment & Launch Tooling, by Emerson Knapp

  • 15:00: Tools for Environment Isolation, by Nathan Brooks

And @KimMcG and myself will present on the topic on Wednesday starting at 14:00.

Please try it out and let me know what you think!

Let’s make it easy and quick to install ROS anywhere and bring ROS to a new level of users it can reach!

1 Like

When I do that on Mac for example, is it creating a Ubuntu environment (docker-like) or is it running on macOS somehow?

Pixi uses conda packages which are all build for the native architecture. Eliminating any overhead.

1 Like

I’m not using Pixi yet (sorry :tulip:).

But to offer support for it to others, would it make sense to integrate it as an option into industrial_ci?
That way we can make sure our packages work for Pixi as well.

Or have an easy to use github action to quickly integrate this into an open source package?

RTFM: ros-example/.github/workflows/test.yml at main · ruben-arts/ros-example · GitHub

Thanks for the writeup, I’ll have to give this a go sometime soon to see what the limitations are. :+1:

It ought to be pretty useful on Ubuntu as well, possibly the main way to install ROS everywhere in the long run, because apt is incapable of installing all required packages even on tier 1 supported OSes.

I think we’re all familiar with how pip on Ubuntu 23 and onwards wisely refuses to install packages globally without an override flag, but as all but the most popular packages are missing on apt install python3-* the only resort is to run that override and mix dep managers which eventually devolves into conflicts. Goes without saying that rosdep can’t resolve these deps either, so it’s not a production option.

What does Pixi do in this case? I’d assume that it has to try and match the apt versions in the corresponding Ubuntu release for the ROS version, but what if there isn’t one?

Distribution coupling: Each ROS distribution (like ROS Noetic, Humble, or Jazzy) is tightly linked to a specific Ubuntu release, limiting OS flexibility.

How well does pixi resolve incompatibility issues that stem from the platform’s environment itself?

I ask because I’ve been using ROS One a whole lot lately, which is essentially Noetic modernized for 22.04 and 24.04, with all three being interoperable (even the md5sums match), and while that’s worked unexpectedly well so far, it’s mostly becuase there’s a team that releases patches for newer systems which probably isn’t the case for Pixi. There are still a few conceptual problems, like Gazebo 11 being non-existent on 24.04 since there’s no official release.

I presume Pixi faces the same kind of problem on Windows and Mac where the graphical UI is not X11 or Wayland, so Rviz/Gazebo/Turtlesim/etc. probably don’t run without some kind of emulation, what’s the approach there?

Install ROS on Linux, macOS, and Windows — without needing Docker or Ubuntu.

If ROS now fully runs on something as wildly incompatible as Windows without WSL2 then… does that mean we can finally run ROS on Android? Not that it would be of much practical use :face_with_tongue: