ROS2 の基礎と開発環境構築ガイド

ROS2 基本概要

システムアーキテクチャの変化

ROS2 はロボット制御向けのオープンソースフレームワークであり、第一世代である ROS1 から大幅な改良が加えられた次世代プラットフォームです。主な改修点として、単一マスターノードへの依存を排除し、データ通信に標準的な DDS(Data Distribution Service)ミドルウェアを採用したことが挙げられます。

以下は、代表的な Ubuntu ディストリビューションと ROS2 リリース版の対応関係です。

ROS2 リリース名サポート OS バージョン
Foxy FitzroyUbuntu 20.04 LTS
Galactic GeocheloneUbuntu 20.04 LTS
Humble HawksbillUbuntu 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 のリポジトリを検知できるよう、システムに登録を行います。

  1. Universe リポジトリの有効化:
sudo apt install -y software-properties-common
sudo add-apt-repository universe
  1. 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
  1. リポジトリソースの登録:

システム固有のアーキテクチャと 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

タグ: ros2 Ubuntu Foxy DDS Colcon

5月18日 08:23 投稿