ROS2のインストール

各自のノートPCにROS2をインストールします.

目的

各自のノートPCにRobot Operating System2(ROS2) Humble Hawksbillをインストールして実習環境を整えます. インストールには1週を想定していますが,正常にインストールが完了できなかった方には個別で対応します. 2週目までには必ずROS2が使用できる状態にしましょう.

インストール手順

Ubuntu22.04上で動作するROS2をインストールします. Ubuntu22.04で利用できるROS2のディストリビューションは,Iron IrwiniとHumble Hawksbillの2つです. Iron Irwiniのサポート期限は2024年11月,Humble Hawksbillは2027年5月です. Iron Irwiniの方が新しいですが,サポート期限が長いHumble Hawksbillをインストールします. ROS2をインストールするには下記の2つの方法があります.

  1. ソースコードをビルドしてインストール
  2. パッケージ管理ツール(apt)を用いてインストール

今回は2. のパッケージ管理ツールを用いてROS2をインストールします.

ローケル設定の確認

ROS2では,文字コードとしてUTF-8がサポートされています. 各自のコンピュータで設定されている言語及び文字コードを確認します. ターミナルを起動して下記のコマンドを実行してください.

1
$ locale

上記のコマンドの実行すると下記のような出力が得られます.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

「=」の左側はロケール環境変数と呼ばれる変数です. 詳細な説明は省略しますが,複数のロケール環境変数に「“ja_JP.UTF-8”」が設定されています. 「ja_JP」は表示言語が日本語であることを意味し,「UTF-8」はUnicodeで使用できる文字符号化形式を表しています. 「UTF-8」が設定されていない場合には,下記のコマンドにより設定しましょう.

1
2
3
$ sudo apt update && sudo apt install locales
$ sudo locale-gen  ja_JP ja_JP.UTF-8
$ sudo update-locale LC_ALL=ja_JP.UTF-8 LANG=ja_JP.UTF-8

実行後,ロケール環境変数に「“ja_JP.UTF-8”」が設定されたことを確認してください.

1
$ locale

リポジトリの登録

ROS2はUbuntuの公式リポジトリ以外からダウンロードする必要があるため, 外部のリポジトリを登録する必要があります. 下記のコマンドによりuniverseリポジトリ(特定のコミュニティが管理するオープンソースソフトウェア)が利用できる状態にしましょう.

1
2
$ sudo apt install software-properties-common
$ sudo add-apt-repository universe

指定したURLにアクセスするためにcurlコマンドをインストールし,公開鍵(gpgファイル)を所定のディレクトリに保存します.

1
2
$ sudo apt update && sudo apt install curl -y
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

リポジトリ情報を管理するsources.listにROS2をインストールするためのリポジトリを加えます.

1
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

リポジトリを追加した後,下記のコマンドによりインストール可能なパッケージのリストを更新し,最新のパッケージに更新します.

1
2
$ sudo apt update
$ sudo apt upgrade

ROS2のインストール

ROS2をインストールする間にインストール済みのソフトウェアを更新します. 幾つかのインストール形態がありますが,今回は多数のツールや通信ライブラリ,ビルド関連のパッケージが含まれているものをインストールします. また,不足しているソフトウェアもインストールします.

1
2
$ sudo apt install ros-humble-desktop
$ sudo apt install python3-colcon-common-extensions

これでインストール完了です. ROS2は「/opt/ros/」にディストリビューション単位でインストールされます.

環境変数の設定

ソフトウェアをインストールしたパスの設定を行います. ubuntuでは,コマンド実行時に特定のディレクトリ内に実行ファイルが存在するかを探します. 特定のディレクトリのパスをコマンドサーチパスと呼び,環境変数PATHによって設定されています. echoコマンドによりPATHにどのディレクトリが設定されているか確認します.

1
2
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

ROS2は「/opt/ros/」にインストールされますが,上記の結果より環境変数PATHに含まれていないことがわかります. このままでは使いにくいため,PATHにROS2がインストールされたディレクトリまでのパスを追加します. 幾つかの方法がありますが,ターミナル起動時に読み込まれる「.bashrc」ファイル内でパスを追加する設定を行います.

1
2
$ echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

上記を実行後,ターミナルを再起動してからPATHの内容を確認します.

1
2
$ echo $PATH
/opt/ros/humble/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

PATHの冒頭にROS2をインストールしたディレクトリまでのパスが追加されました.

次に環境変数ROS_LOCALHOST_ONLYを設定します. ROS2では,同一のネットワーク内で起動しているノードを自動的に検出します. この仕組みは簡単に分散処理ができる一方,複数の端末で実習を行うと他の端末に影響を与える問題が発生します. そのため,ROS2における通信をlocalhost(自身のコンピュータ)に限定する設定を行います.

1
$ echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc

動作確認

ROS2が正常に利用できる状態であるかを確認します. 下記のコマンドの意味は次週以降の講義で扱います. ターミナルで下記のコマンドを実行してください.

1
$ ros2 run turtlesim turtlesim_node

正常に起動するとシミュレータの画面が表示されます. その際,中央に表示されている亀の絵が例と異なっていても問題はありません. 終了する場合には,上記のコマンドを実行したターミナルをアクティブな状態とし,「Ctrl」キーと「C」キーを同時に押してください.

シミュレータ画像が表示されます