ROS2 基本概要
システムアーキテクチャの変化
ROS2 はロボット制御向けのオープンソースフレームワークであり、第一世代である ROS1 から大幅な改良が加えられた次世代プラットフォームです。主な改修点として、単一マスターノードへの依存を排除し、データ通信に標準的な DDS(Data Distribution Service)ミドルウェアを採用したことが挙げられます。
以下は、代表的な Ubuntu ディストリビューションと ROS2 リリース版の対応関係です。
| ROS2 リリース名 | サポート OS バージョン |
|---|---|
| Foxy Fitzroy | Ubuntu 20.04 LTS |
| Galactic Geochelone | Ubuntu 20.04 LTS |
| Humble Hawksbill | Ubuntu 22.04 LTS |
主な機能特性
- クロスプラットフォーム: Windows 10、macOS、Linux (Ubuntu)など多様な OS 上で動作可能
- 分散処理: マスターノード不要の P2P 通信により、ノード間の発見・ディスカバリー機構を改善
- リアルタイム性: 厳密なタイミングが求められる制御タスクへの対応
- 言語スタック: C++11 および Python 3.x (Foxy では Python 3.8)への完全準拠
- ビルドシステム: Catkin に代わり Ament を採用
- 相互運用性: rosbag や roscore 経由で既存の ROS1 ノードと連携可能
ROS1 との技術的相違点
プログラミング言語標準: ROS1 が C++03 と Python 2 を基盤とするのに対し、ROS2 は現代的な C++11 と Python 3 を採用しています。
通信ミドルウェア: ROS1 の中央集権型「roscore」に対して、ROS2 は抽象化された DDS インターフェースを使用します。これにより QoS (Quality of Service)ポリシーの適用が可能になり、ネットワーク環境に応じた通信品質制御が実現されます。
ビルドコマンド: ビルドシステムの変更に伴い、catkin_make から colcon build へコマンド体系が変更されました。
Ubuntu 環境での ROS2 インストール手順(Foxy)
ロケール設定
UTF-8 エンコーディングに対応した環境を設定します。以下は日本語環境を含む設定例です。
# 現在のロケール状況を確認
locale
# locales パッケージをインストールし、UTF-8 環境を生成
sudo apt update
sudo apt install -y locales
sudo update-locale LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8
# 設定の反映と再確認
export LANG=en_US.UTF-8
locale
APT ソースの構成
パッケージマネージャが ROS のリポジトリを検知できるよう、システムに登録を行います。
- Universe リポジトリの有効化:
sudo apt install -y software-properties-common
sudo add-apt-repository universe
- GPG キーの追加:
# HTTP クライアントのインストール
sudo apt update && sudo apt install -y curl
# ROS の公開鍵を取得して保管場所へ保存
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | \
sudo gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg
- リポジトリソースの登録:
システム固有のアーキテクチャと OS コードネームを読み込み、設定ファイルを作成します。
# システム情報を取得するための変数定義
DISTRO_CODENAME=$(. /etc/os-release && echo $UBUNTU_CODENAME)
ARCH_TYPE=$(dpkg --print-architecture)
# ソースリストへの追記
echo "deb [arch=${ARCH_TYPE} signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu ${DISTRO_CODENAME} main" | \
sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
ROS2 デスクトップパッケージの導入
まずシステムのアップデートを行い、最新の状態にしてから ROS パッケージをインストールします。
# システム全体とパッケージキャッシュの更新
sudo apt update
sudo apt upgrade -y
# Foxy デスクトップエディションのインストール
# 必須の依存ライブラリも合わせて導入
sudo apt install -y ros-foxy-desktop python3-argcomplete
# ビルドツール colcon の拡張機能を追加
sudo apt install -y python3-colcon-common-extensions
実行環境の初期化
各ターミナルセッションで ROS2 コマンドを利用するためには、パス設定が必要です。
- 一時的な設定: 現在のシェルセッションのみ有効
source /opt/ros/foxy/setup.bash - 永続的な設定: 新しいターミナル起動時に自動適用
# ~/.bashrc へ設定を追記する echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
アンインストール方法
不要になった場合は、以下の手順で完全に削除できます。
# ROS パッケージ群の除去と不要な依存のクリーンアップ
sudo apt remove -y ~nros-foxy-*
sudo apt autoremove -y
# ソース設定ファイルの削除
sudo rm /etc/apt/sources.list.d/ros2.list
# キャッシュの再更新
sudo apt update && sudo apt autoremove
統合開発環境(IDE)の構築
Visual Studio Code のセットアップ
コードエディタとして VS Code を使用する場合、以下のいずれかの方法で導入が可能です。
Snap パッケージによるインストール(推奨):
sudo apt install -y snapd
sudo snap install code --classic
公式 DEB パッケージによるインストール: 公式サイトから最新の .deb ファイルをダウンロードし、ターミナルよりインストールします。
# ダウンロードされたファイルが存在するディレクトリにて実行
sudo dpkg -i code_*.deb
Git の導入
バージョン管理ツールが必要な場合は、パッケージマネージャから簡易にインストール可能です。
sudo apt install -y git