えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

m2 MacではじめるROS 2🍎🐢

MacBookにROS2を入れてみました。

新しいROS2学習の始まりですね👀


m2 MacではじめるROS 2🍎🐢 とは?

MacBookでROS2を動かすことです。

私は元々RaspberryPi OS Bullseye 32bitにROS2をインストールすることに取り組んでおり、その集大成として「RaspberryPi OSではじめるROS2」という資料をZennで公開しています。

zenn.dev

これをm1 mac向けにビルドする手順を書いてる人がいるので、このように呼んでいます。

MacでROSはビルドできない?

MacでROS2を動かしたとだけ書いているということは、元々MacでROS2は動かなかったのでしょうか?

当初はMac OSはTier 1サポートされていましたが、Galactic以降はTier 3(コミュニティレベルのサポート)に格下げされました。

Installing ROS 2 on macOS — ROS 2 Documentation: Dashing documentation

↓ ディスカッション

macOS support in ROS 2 Galactic and beyond - Next Generation ROS - ROS Discourse

どうやらWindowsMacを同時に実機でサポートするにはリソースが足りず、Mac+ROS2に関してアクティブなユーザがそもそもいなかったという背景があります(≒ 実機に搭載している人数が多くない)


しかし、その1年後、M1 MacというすごいPCが出現しました。

現在のMacBookはちょっと高すぎますが、円高だったあの頃では買わないと損レベルの高効率高コスパモデルだったので、これを機にMacBookに乗り換えた方も多いのではないでしょうか?

…そうなればMacをロボットに乗せてROS2を動かす需要も…?となるかもしれませんが、従来の困難にARM64が追加されてさらに実行への道のりは遠くなりました。


常に困難が伴うMacですが、m1チップ以降のMacの効率に魅せられた(?)狂人がやってのけました。

qiita.com

しばらくしてRvizやrqtを動かす狂人も👀

私もやってみました。意外とすんなり言ってうれしみ。


これでメジャーなOS(Ubuntu・Windows11・DebianMac OS)の直ビルドは一通りできるようになりました。

ということで、つまづきポイントをいくつか説明します。


m2 Macのつまづきポイントと対策

いずれの解決策も、一旦ビルドキャッシュを全消し( rm -rf build install log )前提です。

Pythonのリンクが違う

Macにはx86→armの過渡期があり、全てのアプリケーションがarm対応している訳ではない時期があった(多分今も一部はそう)ので、多くの場合はRosetta 2上にx86対応homebrewをインストールすることがあります。

私は、これのせいでcatkinのimportにコケまくっていました。

実行時のエラーの一部↓

"ModuleNotFoundError: No module named 'catkin_pkg'"

そのため、x86のhomebrewを削除します。

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

この時点ではRosetta 2 自体はアンインストールされていません。


Rviz2のOgreでエラー

要するにMacの開発ツールキット系のコードを参照しようとしてコケた場合です。(Rviz2は全く関係ない)

Availability.h' file not found

Xcodexcode command lineをインストールします。

執筆時点ではバージョン15です。

Downloads and Resources - Xcode - Apple Developer


empyでエラー

Python3で pip3 install empy を実行すると、empy4がインストールされます。

empy3→empy4間では破壊的変更が入っているため、Mac OS関係なくこれがインストールされると、ROS2の開発用CLIツールがもれなく壊れます。

pip3 install empy==3.3.4 でインストールしましょう。


ようやくMacBookをロボットに搭載できるようになりました。

ア、Macもう一台買わなきゃ…🍎😇💻