Is OTA for ROS 2 robots a solved problem?

I could not find anything out there built specifically for OTA updates in the ROS 2 ecosystem. Coming from the web I wanted to see how close I could get to the developer experience I know, so I built a small project on a Raspberry Pi. The device pulls new container images from GitHub releases, runs a health check and rolls back automatically if a release is broken.

It turned out to be harder than just shipping Docker containers. My updater for example could not update itself. A/B updates seem to solve that, but each approach has its trade-offs.

So I would love to hear from people who run robots in production. What did you pick and why? Is anything still painful with Mender, balena or other tools or do they already cover everything?

Write-up: The code was the easy part - Max Riazantsev
Code: https://github.com/maxriazantsev/vision-stand

1 Like

There recently was a related thread: How are you handling firmware updates on fleet robots without bricking one?

1 Like

Very nice write-up! You said MacOS is not really supported. Did you go the Homebrew way or the Pixi way?

1 Like