2025年02月15日
最近はあまりネイティブのUbuntu OSを起動しておらず、大体全てをWindows上のWSLで済ませているのですが、その中でROSを使いたいときにとても便利なのが、mambaの仮想環境内にROSをインストールできるRoboStackです。例えば、通常のROSのインストール手順だとUbuntuのバージョンに制約があったりします(最新のROS 2 JazzyはUbuntu24.04にのみ対応している、等)が、仮想環境なら基本的にOSのバージョンを問いません。また、仮想環境を使えば同じマシン内でROS 1とROS 2を共存させることさえ可能です。ベース環境を汚すことなくROSを使いたい場合、RoboStackは最強だと思います。
尚、インストールできるパッケージがRoboStackに登録されているものに限られるなど、制約もあるのでROSをがっつり使いたい場合は通常のインストール手段の方が良いと思います。なお、2025年2月時点の情報で書かれているのでもし公式チュートリアルとの差が生じてしまっている場合適宜読み替えて実行していってください。
パッケージマネージャ関連の用語がconda、mamba、miniforge、conda-forgeなどいちいち似ていてとてもややこしいのですが、ひととおり説明してみます(この記事を書くために初めてちゃんと調べました)
conda
: これらのツール類の中では元祖パッケージマネージャ。これにデータサイエンス系のパッケージが含まれたディストリビューションがAnaconda
だが、今回はあまり関係ない。mamba
: condaをC++で書き直した高速版。conda install
よりmamba install
の方が依存関係の解決がだいぶ早いらしいので基本これを使うべき。miniforge
: condaの軽量ディストリビューションで、これをインストールすればmambaもついてくる。今回はこれをまずインストールする。conda-forge
: condaやmambaに対応したパッケージリポジトリ。要はApp Storeみたいなもので、今回利用するRoboStackのROS 2環境もここで配布されている。それでは、ROS2環境を作っていきましょう。おおむねRoboStackのチュートリアル通りですが、躓いたところをピックアップしているので、もとの記事と合わせて読んでいってほしいです。
miniforge
をインストールcurl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
でインストーラをダウンロードして、
bash Miniforge3-$(uname)-$(uname -m).sh
でインストールします。
これもチュートリアル通り、まずros_env
という仮想環境を作り
mamba create -n ros_env python=3.11
それをアクティベートして環境内に入ります
mamba activate ros_env
ここで「mamba init
してください」みたいな文句を言われる場合があるので、その場合はmamba init
(zsh
シェルを使っている場合はmamba init zsh
)してターミナルを開きなおしてからもう一度mamba activate ros_env
しなおしてください。
その後は、チュートリアルにある通りconda config --env ****
のコマンドを実行してどのチャンネルを有効化したいかを設定していき、ついに
# 最新のROS2ディストリビューションのJazzy Jaliscoをインストールする場合
mamba install ros-jazzy-desktop
でROSのパッケージがインストールできます!これでrviz2
を実行すればあら不思議、
WindowsなのにRvizが起動できました!(最新のWSL2を使っていれば、X Serverなどの設定なしにGUIも表示できます)
続いて、“Installation tools for local development”の通り、cmake
やcolcon-common-extensions
などのインストールも済ませてください。
colcon
用環境をセットアップする次はROS2の”Using colcon
to build packages”チュートリアルにしたがってビルド環境を構築していきます。
最初のコマンドのsudo apt install python3-colcon-common-extensions
については、既に上でcolcon-common-extensions
をmamba
でインストールしているので不要です。また、source /opt/ros/jazzy/setup.bash
についてもmamba activate ros_env
の時点で実行されるので不要です。
バイナリが公開されているROSパッケージは通常はsudo apt install ros-jazzy-joint-state-publisher
のようにapt
でインストールしますが、私たちはmamba
環境内に、mamba
を使ってインストールしないといけません。(apt
で入れようとしてもおおもとのROS2がベースシステムにはインストールされていないので失敗してしまうはずです)
インストールしたいパッケージがhttps://robostack.github.io/jazzy.htmlにあることを確認して、
mamba install ros-jazzy-joint-state-publisher-gui
のようにインストールしてください。ここにないパッケージの場合、残念ながらソースからビルドする必要があります。この制約が、RoboStack版ROSの弱点かもしれません。
それでは皆様、快適なROS 2ライフを!
□