---
title: ROS Japan UG #54 関西ROSJP macOS上でROS 2 Humbleを動かす
tags: 
author: [dandelion](https://convert.docswell.com/user/dandelion1124)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/8EDY9M88EG.jpg?width=480
description: ROS Japan UG #54 関西ROSJP macOS上でROS 2 Humbleを動かす by dandelion
published: February 13, 24
canonical: https://convert.docswell.com/s/dandelion1124/KM1PJL-2024-02-13-093736
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/8EDY9M88EG.jpg)

ROS Japan UG #54 関西ROSJP
macOS上でROS 2 Humbleを動かす
@dandelion1124


# Page. 2

![Page Image](https://bcdn.docswell.com/page/V7P6ZR8WJ8.jpg)

自己紹介
●
吉村康弘（@dandelion1124）
○
専門はロボティクス、コンピュータビジョン、ソフトウェア高速化
○
OpenCVコントリビューター
■
○
OpenCV書籍執筆 https://gihyo.jp/book/2022/978-4-297-12775-6
2023年10月よりサイバーエージェント AI Labで人物行動理解に関する研究に従事
dandelion1124
atinfinity


# Page. 3

![Page Image](https://bcdn.docswell.com/page/2JV3WRN9EQ.jpg)

モチベーション
●
Apple Silicon搭載macOSマシンはバッテリーの持ちがよく、軽量なので屋内・屋外ロボット開発
でも使いたい。
●
また、音声認識、 LLM inferenceフレームワークは Metal対応も活発であることが多いため、ロボッ
ト開発で活用しやすい。
○
○
○
○
○
Whisper.cpp：https://github.com/ggerganov/whisper.cpp
MLX：https://github.com/ml-explore/mlx
llama.cpp：https://github.com/ggerganov/llama.cpp
Ollama：https://ollama.ai/
PowerInfer：https://github.com/SJTU-IPADS/PowerInfer
■
TODOsに「Support Metal for Mac」が入っている
上記の点から、macOSでもROS 2を使いたい！


# Page. 4

![Page Image](https://bcdn.docswell.com/page/5EG3DMK47L.jpg)

ROS 2 on macOSの現状
●
macOSでROS 2インストールは基本的にソースビルドのみ
○
https://docs.ros.org/en/humble/Installation.html


# Page. 5

![Page Image](https://bcdn.docswell.com/page/4JQ51RNR7P.jpg)

ROS 2 on macOSの現状
●
ROS 2 HumbleのmacOSサポートは、amd64アーキテクチャだと Tier 3（コミュニティレベルのサ
ポート）、arm64アーキテクチャに至っては空欄となっている [1]。
●
つまり、何かトラブルが起きても自力 or コミュニティで頑張るしかない
[1] https://www.ros.org/reps/rep-2000.html#humble-hawksbill-may-2022-may-2027


# Page. 6

![Page Image](https://bcdn.docswell.com/page/K749R8GQE1.jpg)

ROS 2 on macOSの現状
●
macOS向けの公式セットアップドキュメントはあるがメンテナンスされていない
○
●
https://docs.ros.org/en/humble/Installation/Alternatives/macOS-Development-Setup.html
RoboStack[2]を使おうとするもトラブル発生
○
○
セットアップし、RViz2が起動できることは確認できたが、Fast DDSを使った通信時にクラッシュ[3]
別のDDSを使用し、問題なく動いている事例[4]もある
[2] https://robostack.github.io/index.html
[3] https://github.com/RoboStack/ros-humble/issues/32
[4] https://qiita.com/Nyanziba/items/d84211e8e9d9654c6253


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LJ1KQ2DL7G.jpg)

広がるROS 2 on macOS
●
そんな状況下でも macOS上でROS 2を使う猛者が増えてきている（ツイートは時系列順）
●
#macOSで始めるROS2 ハッシュタグで盛り上げていきたい
https://twitter.com/zibaanyan/status/175110
1007575372100
https://twitter.com/tg3517/status/17240570
26135740735
https://twitter.com/dandelion1124/status/17
37471075871514661
https://twitter.com/Ray255Ar/status/173769
8560773353670


# Page. 8

![Page Image](https://bcdn.docswell.com/page/GJWDMRYQ72.jpg)

今回やったこと
ROS 2の最低限の機能を動かせるようにした ros2_m1_native[5]が公開されているので
こちらをベースラインとして以下の対応を実施。
●
RViz2対応
○
●
rqt tools対応
○
●
https://github.com/TakanoTaiga/ros2_m1_native/pull/6
Cyclone DDS対応（レビュー中）
○
●
https://github.com/TakanoTaiga/ros2_m1_native/pull/5
https://github.com/TakanoTaiga/ros2_m1_native/pull/7
nav2_rviz_plugins対応
[5] https://github.com/TakanoTaiga/ros2_m1_native


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4EZGQRX3J3.jpg)

ハマりポイント
●
Xcodeインストールが必要
○
○
パッケージによってはmacOS固有のフレームワークに依存
■
例：OGRE (Object-Oriented Graphics Rendering Engine)
そのため、少なくともRViz2を使う場合はXcodeインストールが必要
https://github.com/OGRECave/ogre/blob/v1.12.10/OgreMain/include/OgrePlatform.h


# Page. 10

![Page Image](https://bcdn.docswell.com/page/Y76Y6R4ZEV.jpg)

ハマりポイント
●
arm64アーキテクチャの Homebrewをインストールする
○
○
ネイティブで動かすためにarm64アーキテクチャ向けのパッケージをインストールしたい
ただし、意図せずx86_64アーキテクチャのHomebrewをインストールしてしまうと、arm64アーキテクチャの
パッケージを参照できない[6]
&quot;ModuleNotFoundError: No module named &#039;catkin_pkg&#039;&quot;
○
ターミナルで下記コマンドを実行し、arm64アーキテクチャのHomebrewをインストールすること
uname -m # arm64と表示されることを確認しておく
/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;
[6] https://ar-ray.hatenablog.com/entry/2023/12/24/115051


# Page. 11

![Page Image](https://bcdn.docswell.com/page/G75G68Q974.jpg)

ハマりポイント
●
Homebrewでインストールされるパッケージバージョンに注意
○
○
○
今回想定しているパッケージバージョンはPython 3.11、Qt 5.x、empy 3.3.4
例えば、HomebrewでOpenCVをインストールすると依存解決のためにPython 3.12、Qt 6がインストールさ
れ、意図するバージョンと異なってしまう
（あまりスマートな方法ではないが）今回使いたい機能からこれらは参照されないのでアンインストールする
# Python 3.12とQt 6をアンインストール
brew uninstall --ignore-dependencies python@3.12 qt6
○
empy3、empy4間では破壊的変更が入っているため、明示的にバージョンを指定してempyをインストール
する[6]
# empy 3.3.4をインストール
python3.11 -m pip install -U empy==3.3.4


# Page. 12

![Page Image](https://bcdn.docswell.com/page/9J2YMKP5JR.jpg)

ハマりポイント
●
colconのデスクトップ通知無効化
○
colconにはビルドステータスをデスクトップ通知してくれる機能がある
○
ただし、この機能はmacOS上では機能しないので無効化[7]が必要
# colconのデスクトップ通知無効化
export COLCON_EXTENSION_BLOCKLIST=colcon_core.event_handler.desktop_notification
[7] https://github.com/colcon/colcon-notification/issues/31#issuecomment-554213559


# Page. 13

![Page Image](https://bcdn.docswell.com/page/DEYGXN56EM.jpg)

ハマりポイント
●
setuptoolsバージョンに注意
○
○
setuptoolsのバージョンが古すぎるとROS 2パッケージによってはビルドできないことがある
今回はsetuptools 69.0.3を用いた


# Page. 14

![Page Image](https://bcdn.docswell.com/page/VJNG1X4178.jpg)

現状できること
●
トピック配信、購読
●
DDS対応
よく使われているであろう下記の2種類で動作確認
○
○
●
eProsima Fast DDS(https://www.eprosima.com/index.php/products-all/eprosima-fast-dds)
Eclipse Cyclone DDS(https://projects.eclipse.org/projects/iot.cyclonedds)
rosbag2記録、再生
○
以下のフォーマットで動作確認を実施
■
SQLite3
■
MCAP


# Page. 15

![Page Image](https://bcdn.docswell.com/page/YE9W58QYE3.jpg)

現状できること
●
Simple Discovery
○
●
下図における左のディスカバリー方式
Discovery Server[8]
○
下図における右のディスカバリー方式
○
冗長性を持たせるためServerを複数設定することも可能
[8] https://docs.ros.org/en/humble/Tutorials/Advanced/Discovery-Server/Discovery-Server.html


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GE8NY8GK7D.jpg)

現状できること
●
RViz2
○
下図はhttps://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/ROSBAG-Demo にある
sample_moriyama_150324.bag2を再生した例（画面右下を見ると 30fpsで描画できていることがわかる）


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LELP4RGP7R.jpg)

現状できること
●
rqt_tools：rqt_topic
○
トピックの型、バンド幅、配信周期などをモニタリングするツール


# Page. 18

![Page Image](https://bcdn.docswell.com/page/4JM4KRQ27W.jpg)

現状できること
●
rqt_tools：rqt_plot
○
トピックの値をプロットするツール


# Page. 19

![Page Image](https://bcdn.docswell.com/page/PJRWXR8579.jpg)

現状できること
●
rqt_tools：rqt_graph
○
ノードとトピック配信、購読の関連を可視化するツール


# Page. 20

![Page Image](https://bcdn.docswell.com/page/PEXP6R8X7X.jpg)

現状できること
●
rqt_tools：rqt_bag
○
rosbag2に格納されているコンテンツの可視化、プロットを行うツール


# Page. 21

![Page Image](https://bcdn.docswell.com/page/3EKD1RK9JD.jpg)

現状できること
●
rqt_tools：rqt_console
○
○
ノードからの出力メッセージを可視化するツール
Severityでフィルタリングできる


# Page. 22

![Page Image](https://bcdn.docswell.com/page/L73RQ8Z9J5.jpg)

現状できること
●
nav2_rviz_plugins
○
以下の手順でnav2_rviz_pluginsパッケージをビルド
mkdir -p nav2_ws/src
cd nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git -b 1.1.13
git clone https://github.com/ros/bond_core.git -b ros2
git clone https://github.com/ros/diagnostics.git -b ros2
cd ..
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$(brew --prefix qt@5)
export PATH=$PATH:$(brew --prefix qt@5)/bin
export COLCON_EXTENSION_BLOCKLIST=colcon_core.event_handler.desktop_notification
colcon build --symlink-install --packages-up-to nav2_rviz_plugins --cmake-args \
-DBUILD_TESTING=OFF \
-DCMAKE_BUILD_TYPE=Release \
-Wno-dev
source install/setup.bash


# Page. 23

![Page Image](https://bcdn.docswell.com/page/87DY9MR87G.jpg)

現状できること
●
nav2_rviz_plugins
○
○
下図はNavigation2パネルからWayPoint Followingを実行した例。
現状、シミュレータ、ナビゲーション処理は同一ネットワーク上の別マシンで動作。


# Page. 24

![Page Image](https://bcdn.docswell.com/page/VJP6ZRWWE8.jpg)

まとめ
●
Apple Silicon搭載macOSマシンでもROS 2の基本的な機能は動きます！
●
ただし、ソースビルドが基本なので少し面倒に感じることも
○
○
●
ポジティブに捉えると、現状、ROS 2コアパッケージで残っている未修正のwarningなどが発見しやす
い。
■ 普段、ROS 2をUbuntuで使っていてaptでインストールしていると気付きにくい
つまり、ROS 2コアパッケージのコントリビューションのチャンス！
よりよくしていくためにROS 2 on macOSをコミュニティで盛り上げていきましょう！


# Page. 25

![Page Image](https://bcdn.docswell.com/page/2EV3WR897Q.jpg)

参考ページ
●
https://docs.ros.org/en/humble/Installation/Alternatives/macOS-Development-Setup.html
●
https://github.com/TakanoTaiga/ros2_m1_native
●
https://ar-ray.hatenablog.com/entry/2023/12/24/115051
●
https://zenn.dev/kagaribi_tech/scraps/c4610ec4095d4e


# Page. 26

![Page Image](https://bcdn.docswell.com/page/57G3DM54JL.jpg)

Activity Understanding（行動理解）チーム
研究テーマ：実世界AIサービスのための人物行動理解とロボティクス
株式会社サイバーエージェント AI Labの行動理解チームでは、実世界においてAIサービスを実現するための基盤研究に取り組んでいます。
リテールテック（小売）やガブテック（行政）といった事業でAIを活用するためには、複雑に変化する実環境において人々の多様な行動を
計測・理解し、AIによって生成された情報を適切に伝達する技術が必要です。また、人々の日常生活と密接に関わる技術やサービスは、
人々の生活やプライバシーを尊重し、社会的に受け入れられる形であることが不可欠です。
本チームは機械学習やコンピュータビジョン、ロボティクス、ユビキタスコンピューティングなど複数分野に基づく多角的なアプローチに
よって、このような技術の創出と実世界AIサービスへの還元を目指します。


# Page. 27

![Page Image](https://bcdn.docswell.com/page/4EQ51RZRJP.jpg)

主な研究テーマ
マルチモーダルセンシングによる人物行動の計測と理解
スマートフォンIMUやBLEビーコンといった各種デバイス・センサーを活用し、
カメラの導入が難しい場面で人物の行動を計測、理解する技術を研究しています。
センシング技術とLLMを活用した自律移動広告ロボット
LLMを活用した自律移動ロボットによる情報提示・インタラクション技術、
販促活動に適した環境理解・ナビゲーション技術を研究しています。


# Page. 28

![Page Image](https://bcdn.docswell.com/page/KJ49R83Q71.jpg)

現在チーム立ち上げ中です！
リサーチサイエンティスト
求人ページ：
●
人物行動理解に関するコンピュータビジョン・機械学習・ユビキタスコンピューティング研究を推進してくださる方
●
自律移動ロボットのためのセンシング、パーセプション、プランニング技術の研究を推進してくださる方
リサーチエンジニア
●
求人ページ：
▼求人ページ
リテール分野への応用に興味を持ちつつ、自律移動ロボットにおけるセンシング、パーセプション、
プランニングの技術開発を
●
▼求人ページ
推進してくださる方
実機（ロボット、センサなど）を用いて、実世界でロボットを動かしていく社会実装を推進してくださる方
▼面談フォーム
まずはカジュアルな情報交換をご希望の方は、こちらのフォームからお問い合わせください。
＊東京/京都拠点でインターン（フルタイム2ヶ月）、またはアルバイトも随時募集中です。


