0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pixiで始めるmacOSにおけるROS 2開発環境構築(Gazebo Fortressとnav2を添えて)

Last updated at Posted at 2025-04-15

TL;DR

  • これまでROS 2のmacOSサポート状況は決して手厚いとは言えない状況でした
  • pixiの登場によってmacOSでもROS 2ソフトウェア開発ができるようになってきました
  • 今後のpixiの発展に期待しましょう!

1. 昨今のROS 2のサポート事情

ROS 2 Jazzy時点でmacOS(かつ、amd64)のサポートはTier3でソースビルドのみとなっています。そのため、ROS 2のmacOSサポート状況は決して手厚い状況ではありません。

ros2_support.png

https://www.ros.org/reps/rep-2000.html#jazzy-jalisco-may-2024-may-2029より引用

2. macOS上におけるROS 2環境構築

一方、普段使い慣れているmacOSでROS 2ソフトウェア開発をしたい方も一定数居ます。macOS上におけるROS 2環境構築は以下のパターンがあります。

  • ソースビルド
  • Dockerコンテナ
  • pixi
  • pixi + Dockerコンテナ

それぞれの概要、メリット、デメリットを述べていきます。

2.1 ソースビルド

公式ドキュメントはhttps://docs.ros.org/en/jazzy/Installation/Alternatives/macOS-Development-Setup.htmlにあります。先人たちの涙ぐましい取り組みは以下にあります。

「ソースビルド」におけるメリット、デメリットについては後述します。

メリット

  • GPUなどの各種アクセラレータが使える
  • USBカメラなどのセンサデバイスが使える
  • ネイティブで動作させるため、シミュレータ環境、RViz2などが高速に動作する

デメリット

  • HomebrewでROS 2関連のパッケージは管理されていないため、必要なパッケージは基本的にソースビルドが必要
  • パッケージ依存解決にrosdepが使えない
  • Homebrewのパッケージ更新によって頻繁にビルドできなくなるため、定期的なメンテナンスが必要
  • ホスト環境が汚れる

2.2 Dockerコンテナ

macOS上のDockerコンテナ上でROS 2を動かす方法があります。CUIのみであればhttps://hub.docker.com/_/rosで十分ですが、GUIツール(Rqtツール、RViz2、Gazeboなど)を使う場合、https://github.com/Tiryoh/docker-ros2-desktop-vncで動かすのが楽ちんです。

「Dockerコンテナ」におけるメリット、デメリットについては後述します。

メリット

  • apt、rosdepが使えるため、パッケージインストール、依存解決が簡単
  • Ubuntuと同じ操作コマンドのため、そちらに慣れている方にはハードルが低い
  • ホスト環境が汚れない

デメリット

  • GPUなどの各種アクセラレータが使えない
  • USBカメラなどのセンサデバイスが使えない
  • GUIアプリケーション(シミュレータ環境、RViz2)をDockerコンテナ上で動かすと低速

GUIありでGazebo Fortressを起動するとCPU使用率が以下のようになります。Gazebo FortressのプロセスのCPU使用率が高くなっていることがわかります。

docker_gazebo_gui.png

GUIなし(headless mode)でGazebo Fortressを起動するとCPU使用率が以下のようになります。GUIありよりもCPU使用率が下がっているものの、Gazebo FortressのプロセスのCPU使用率が高くなっていることがわかります。

docker_gazebo_headless.png

2.3 pixi

クロスプラットフォーム対応のパッケージ管理システムpixiがあり、ROS 2パッケージも配布しています。対応しているパッケージが気になる方はhttps://prefix.dev/channels/robostack-stagingを読むとよいでしょう。

本記事ではpixiそのものの詳細は取り上げないので気になる方は以下のページを参照ください。

「pixi」におけるメリット、デメリットについては後述します。

メリット

  • pixi addが使えるため、パッケージインストール、依存解決が簡単
  • ワークスペース単位で分離されているのでホスト環境が汚れない

デメリット

  • パッケージ依存解決にrosdepが使えない
  • コマンドにpixi runを付ける必要があるため、少し慣れが必要

2.4 pixi + Dockerコンテナ

pixiとDockerコンテナを併用することでそれぞれの欠点を補う方法です。詳細はhttps://qiita.com/dandelion1124/items/cf6399071744049b7370を参照ください。

「pixi + Dockerコンテナ」におけるメリット、デメリットについては後述します。

メリット

  • pixi
    • ワークスペース単位で分離されているのでホスト環境が汚れない
  • Dockerコンテナ
    • apt、rosdepが使えるため、パッケージインストール、依存解決が簡単
    • ホスト環境が汚れない

デメリット

  • pixi
    • パッケージ依存解決にrosdepが使えない
    • コマンドにpixi runを付ける必要があるため、少し慣れが必要
  • Dockerコンテナ
    • GUIアプリケーション(シミュレータ環境、RViz2)をDockerコンテナ上で動かすと低速
  • 全般
    • 何をpixiで動かして、何をDockerで動かすかの判断、パッケージ構成を工夫する必要がある

4. pixi上でGazebo、navigation2を動かす

pixi上でどこまでできそうかを掴むためにGazebo、navigation2を動かしてみます。

4.1 動作確認環境

今回動作確認に用いた開発環境は以下の通りです。

  • MacBook Air (15インチ, M3, 2024)
  • macOS Sonoma 14.4
  • Docker Desktop on Mac 4.39.0
  • pixi 0.45.0

4.2 GitHubリポジトリ

以下の図からpixi上でGazebo Fortressとnav2を動かせるソースコード一式を以下のリポジトリに格納しています。
https://github.com/atinfinity/pixi_ros2_gazebo_example

4.3 動作確認

pixi上でGazebo Fortressとnav2が動かせていることがわかります。

また、pixi上でGUIなし(headless mode)でGazebo Fortressを起動するとCPU使用率が以下のようになります。macOSネイティブ上で実行しているため、Gazebo FortressのプロセスのCPU使用率が減っていることがわかります。

pixi_gazebo_headless.png

追加で3D LiDARのシミュレーションも追加してみましたが、こちらもmacOSネイティブ上で実行しているため、快適に動作しています、

4.4 制限事項

また、はっきりと原因を特定できていませんが、2D LRFのURDFを以下のように記述していました。

<scan>
  <horizontal>
    <samples>1000</samples>
    <resolution>1</resolution>
    <min_angle>-3.141592</min_angle>
    <max_angle>3.141592</max_angle>
  </horizontal>
</scan>

ただし、これをそのまま使うと以下のようになってしまいました・・・。

invalid_scan.jpeg

そのため、verticalタグを追加して回避しています。

<scan>
  <horizontal>
    <samples>1000</samples>
    <resolution>1</resolution>
    <min_angle>-3.141592</min_angle>
    <max_angle>3.141592</max_angle>
  </horizontal>
  <vertical>
    <samples>2</samples>
    <resolution>0.01</resolution>
    <min_angle>-0.01</min_angle>
    <max_angle>0.01</max_angle>
  </vertical>
</scan>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?