Spent the weekend getting ROS2 running on my Mac and it finally works

Nov 03, 2026 Last reply: 2 hours ago 4 Replies
Jump to replies (4)

Spent most of Saturday and half of Sunday getting this sorted, so figured I'd share how it went. First tried running everthing in Docker. Got two terminals talking to each other in about twenty minutes, felt pretty great. Then tried opening the visualization tool and it all fell apart. Graphics forwarding on macOS is its own little nightmare and I nearly chucked the laptop out the window. So I gave up on that route and installed Ubuntu in a UTM virtual machine instead. Setup took an afternoon. Everything just behaves now. The GUI tools open fine, the simulator runs without drama, and I can acutally see what my code is doing. It runs a bit slower than it would on a proper Linux machine but it's totally fine for learning and testing. If it helps anyone else, skip the container approach if you need windows and graphics, just put Linux in a VM and be done with it. Containers are still handy for quick headless tests though. My plan is to keep both, VM for anything with a screen, containers for everything else.


Went through almost the same rollercoaster on my M1 MacBook Air, except I never even got the two terminal part working cleanly. Burned two evenings on the container setup and kept hitting errors about missing displays whenever anything with graphics started. Gave up on that pretty fast. I ended up using VMware Fusion with Ubuntu instead of the same virtual machine app you picked, and had the same result. One afternoon of setup, everything opens, no wierd display errors. It does feel a bit sluggish when I crank up the particle count in the visualization, but my little two wheeled robot project doesn't care.

One thing that bit me on Apple silicon: a couple of packages I needed only had builds for Intel chips. Had to find substitutes for those, which cost me most of a Sunday. So before committing hours to an install, check that your dependencies actually support ARM. Your split of containers for headless stuff and a VM for anything with a window matches where I landed too. Mine runs build tests overnight in a container and it's quick.

Funny timing reading this, beacuse I took the opposite path a few months back. I kept my 2019 Intel MacBook for everything else but picked up a used ThinkPad off a local listing for cheap, wiped it, put Ubuntu straight on the metal, and that became my robotics box. No virtual machines, no containers, no graphics forwarding weirdness. The laptop cost less than the hours I'd allready burned fighting the Mac, and rviz runs at a usable framerate even with a couple of camera streams going.

I did try the Homebrew route on the Mac first since people claim it works natively now. It sort of does, til you hit a package that was only ever tested on Linux and the build fails over some library version. I got the core tools running but never trusted it enough to build anything real on it.

The split setup works better than I expected. I write and edit code on the Mac during the day, push it to the ThinkPad over the network, and run everything there. Only annoyance is remembering which machine has which workspace checked out, I've lost count of the times I edited a file on the wrong one and spent ten minutes confused about why my changes did nothing.

The check for ARM builds saved me too. I did my VM setup on an M1 Pro and one simulator dependency I wanted just didn't have a working version for the chip, so I downgraded to an older release and it's been fine since. Wish I'd known before starting the install, would have saved me an hour of googling error messages. The sluggishness with heavy visuals is real though, mine chokes when I load a big point cloud, but for anything code related it's plenty.

So I went back and checked my setup after reading that bit about ARM builds and version mismatches. Turns out one of the tools I had running in the VM was an older release too, just never questioned why it worked. Updated everything to the same newer version and it broke imediately. Reverted it. Guess the lesson is leave the VM alone unless something actually needs changing.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required