ROS2プログラミング入門 #1 環境構築
これから何回かに分けて、ROS2プログラミングを学んで理解できたことを紹介していきます。
この記事では、主にROS2プログラミングの環境構築について紹介します。
ディストリビューションの選択
最初はROS2のディストリビューションを選ぶところからスタートです。
まず、公式サイト ROS Documentation で現在アクティブなディストリビューションを確認すると、次のものがアクティブになっていました。
- Rolling Ridley
- Humble Hawksbill
- Galactic Geochelone
- Foxy Fitzroy
一体どれを選べば良いのか迷いますけれど、ここでは「リリース済みで、なるべくサポート期間が長いもの」という基準で選ぶことにします。
サポート期間に関して、Foxy Fitzroyの List of Distributions に次のような表がありました。
ROS2のディストリビューション(EOLが来ているものは省略)
このうち緑色のものが現在サポートされているディストリビューションです。
表からGalactic Geocheloneは2022年11月に、Foxy Fitzroyは2023年5月に、それぞれEOLが来るということが見て取れます。したがって、より長くサポートされるのは Foxy Fitzroy です。
というわけで、ディストリビューションはFoxy Fitzroyを選択しました。
ROS2のインストール
Foxy Fitzroyの Installation を見ると、次のプラットフォームに対応しています。
- Ubuntu Linux - Focal Fossa (20.04)
- Debian packages
- "fat" archive
- macOS Mojave (10.14)
- Windows (VS 2019)
説明に Installing from Debian packages is the recommended method.
とあり、私のパソコンがUbuntu 20.04でもあるので、Debian packagesをインストールすることにしました。
さらに Installing ROS 2 via Debian Packages に沿ってインストールを進めます。
ROS2のリポジトリをセットアップ
apt
でインストールできるようにROS2のリポジトリをセットアップします。
まず次のコマンドでGPGキーを取り込んで
sudo apt update && sudo apt install curl gnupg2 lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
それからリポジトリを追加します。
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
ROS2のパッケージをインストール
リポジトリが追加できたらROS2のパッケージをインストールします。
sudo apt update
sudo apt install ros-foxy-desktop
パッケージは ros-foxy-desktop
と ros-foxy-ros-base
の2種類から選べるようです。
ここでは Desktop Install (Recommended): ROS, RViz, demos, tutorials.
と推奨されていたので ros-foxy-desktop
をインストールしました。
動作確認
ROS2が正しくインストールされたことを確認するために、ターミナルを2つ起動してデモのプログラムを実行します。
まず一方のターミナルで次のコマンドを
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker
続けてもう一方のターミナルで次のコマンドを実行します。
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_py listener
それぞれのターミナルで次のような表示が確認できればOKだと思います。
talkerを実行した様子
listenerを実行した様子
おわりに
ROS2プログラミングの環境構築について紹介しました。どなたかのお役に立てば幸いです。
Discussion