Windows11にRoboStackをインストールしてROS2(Jazzy)環境を構築する - 公式インストールでつまずいた方へ

### はじめに

ROS2をWindows環境で利用したいと考え、公式サイトのインストールガイドを試された方も多いかと思います。特に最新版の ROS2 Jazzy Jalisco は、Python のバージョン指定などが厳密であり、既存の環境との競合や依存関係の解決に苦労された経験があるかもしれません。

本記事では、このような公式インストールでのつまずきを回避し、より安定した ROS 2 環境を Windows 11 上に構築できる **Robostack** を利用する方法をご紹介します。Robostack は、conda パッケージマネージャーを活用することで、ROS 2 とその依存関係をクリーンな環境に簡単にインストールできます。

### Robostack とは？

Robostack は、科学技術計算分野で広く使われているパッケージマネージャーである [conda](https://docs.conda.io/en/latest/) を利用して、ROS や関連ライブラリをクロスプラットフォームで提供するプロジェクトです。Windows, macOS, Linux のそれぞれ一貫した方法で ROS 環境を構築できる点が大きな特長です。

conda 環境を利用するため、システム全体の Python やその他のライブラリに影響を与えることなく、分離された環境で ROS 2 を実行できます。これにより、依存関係の衝突などの問題を大幅に軽減できます。

### 前提条件

本記事を進めるにあたり、以下の環境が必要となります。

  * Windows11(or 10)のPC
  * インターネット接続
  * [Mambaforge](https://tooomm.github.io/github-release-stats/?username=conda-forge&repository=miniforge) のインストール
  * [Visual Studio 20119 or 2022](https://docs.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-160)
  　* Visual Studio 2022の場合はコマンドラインツール（`mamba install vs2022_win-64`）

### Robostack を使った ROS 2 Jazzy のインストール手順

それでは、Robostack を使って ROS 2 Jazzy 環境を構築する手順を説明します。Powershellはサポートされておらず、mambaのコマンドが利用できるMiniforge Promptプロンプトを使用することをお勧めします。

1.  **conda 環境の作成**

    まず、ROS 2 Jazzy 用の新しい conda 環境を作成します。環境名は任意ですが、ここでは `robostack_jazzy` とします。ROS 2 Jazzy は Python 3.11 を推奨しているため、バージョンを指定して作成します。

    ```bash
    mamba create -n robostack_jazzy python=3.11
    ```

    実行すると、必要なパッケージとその依存関係が表示され、インストール確認が求められますので `y` と入力して進めます。

2.  **作成した環境のアクティベート**

    作成した環境をアクティベートします。今後、この環境で ROS 2 を利用する際は、必ずこのコマンドを実行してから作業を開始します。

    ```bash
    mamba activate robostack_jazzy
    ```

    プロンプトの先頭に `(robostack_jazzy)` のように環境名が表示されれば成功です。

3.  **Robostack チャンネルの追加**

    Robostack のパッケージは、特定の conda チャンネルで配布されています。以下のコマンドを実行して、必要なチャンネルを追加します。

    ```bash
    conda config --env --add channels conda-forge
    conda config --env --remove channels defaults
    conda config --env --add channels robostack-jazzy
    ```

4.  **ROS 2 Jazzy パッケージのインストール**

    いよいよ ROS 2 Jazzy の主要パッケージをインストールします。ここでは、一般的な開発に必要なツールが含まれる `ros-jazzy-desktop` をインストールします。

    ```bash
    mamba install ros-jazzy-desktop
    ```

    このコマンドを実行すると、ROS 2 Jazzy およびその依存関係にある多くのパッケージがインストールされます。時間がかかる場合がありますので、完了するまで待ちます。途中でインストール確認が求められたら `y` を入力してください。
    環境を非アクティブ化して再アクティブ化し、構成された ROS 環境を初期化します。
    ```bash
    mamba deactivate
    mamba activate robostack_jazzy
    ```

5.  **開発ツールのインストール**

    以下のコマンドで開発支援ツールをインストールします。

    ```bash
    mamba install compilers cmake pkg-config make ninja colcon-common-extensions catkin_tools rosdep
    ```

### 動作確認

インストールが完了したら、正しく環境が構築できたか確認してみましょう。

1.  **簡単な ROS 2 プログラムの実行 (talker/listener)**

    ROS 2 の基本的な通信を確認するために、`demo_nodes_cpp` パッケージの `talker` と `demo_nodes_py` パッケージの `listener` を実行してみます。

    **ターミナルを2つ開きます。** それぞれのターミナルで、以下の手順を実行してください。

      * **ターミナル 1:** `talker` ノードを実行します。

        ```bash
        mamba activate robostack_jazzy
        ros2 run demo_nodes_cpp talker
        ```

        このターミナルには、メッセージをパブリッシュしていることを示すログが繰り返し表示されます。

      * **ターミナル 2:** `listener` ノードを実行します。

        ```bash
        mamba activate robostack_jazzy
        ros2 run demo_nodes_py listener
        ```

        このターミナルには、`talker` から送信されたメッセージを受信していることを示すログが繰り返し表示されます。

    両方のターミナルで期待されるログが表示されていれば、Robostack を使った ROS 2 Jazzy 環境の構築と基本的な通信の動作確認は成功です！


### まとめ

本記事では、Windows 11 環境で公式の ROS 2 インストールで発生しがちな Python のバージョン問題などを回避するために、Robostack を利用して ROS 2 Jazzy 環境を構築する手順を解説しました。conda を利用することで、システムの環境を汚さずにクリーンな ROS 2 環境を構築できるのが Robostack の大きなメリットです。

今回構築した環境をベースに、ご自身の ROS 2 開発を進めてみてください。必要に応じて、`conda install` コマンドで他の ROS 2 パッケージを追加インストールすることも可能です。

  * Robostack ドキュメント: [https://robostack.github.io/](https://robostack.github.io/)

この記事が、Windows 環境で ROS 2 を始めたい方の助けになれば幸いです。