When optimizing isn’t enough

234 words

My Final Attempt at Installing ROS 2 on my Raspberry Pi 3

After optimizing my Raspberry Pi 3, I was finally ready to use ROS 2—or so I thought. I had switched to a lighter desktop environment, installed a more efficient browser, and expanded swap space to 8GB. The system felt noticeably smoother, and I was ready to take on the real challenge.

The installation appeared to complete successfully as I had left it running overnight—no warnings, no error messages—so I assumed everything was fine. But when I tried to run ROS 2, nothing happened. The issue wasn’t just with launching it; the entire build process seemed to have failed.

Determined to get it working, I started a fresh attempt by running a full ROS 2 build:

colcon build --symlink-install

It didn’t work, but I wasn’t ready to give up. So, I tried reducing parallel jobs, installing in smaller batches, and even manually rebuilding key dependencies—but the crashes kept coming. Sometimes, progress was painfully slow; other times, it crashed without warning.

Limited parallel jobs to avoid overloading RAM:

colcon build --symlink-install --parallel-workers 1

Manually built key dependencies first:

colcon build --symlink-install --packages-select ament_cmake ament_cmake_gen_version_h

Installed in smaller batches instead of one massive build:

colcon build --symlink-install --packages-select $(colcon list | awk 'NR>=1 && NR<=10 {print $1}')

I spent time debugging, installing missing dependencies, and skipping failed packages when necessary. But at some point, it became clear: even if I got ROS 2 installed, the performance would likely be too slow to be useful.

That doesn’t mean I’m giving up on ROS 2. I’ll probably give it another try on a newer model with better specs, or I might just use a dedicated Ubuntu machine. For now, it’s clear that the Pi 3 isn’t the right tool for this job.

Still, this was a valuable learning experience. I now have a much better understanding of what it takes to compile large software projects on low-power hardware.

If you’re considering running ROS 2 on a Raspberry Pi 3, I’d strongly recommend against it—it’ll save you a lot of time and frustration.

Previous Post : From Laggy to Usable

Notes mentioning this note


Here are all the notes in this garden, along with their links, visualized as a graph.