techno_memo

個人用の技術メモ。python・ROS・AI系のソフトウェア・ツールなどの情報を記載

ROS2導入・初期設定

この記事の目的

 ROS2の導入と初期設定・注意点等についてまとめる

1. ROS2の導入

Ubuntu20.04を利用している場合、下記サイトに従ってROS2 forxyを導入する。

docs.ros.org

上記手順では、localeをen_US.UTF-8 に切り替えているがこのコマンドを入力せず日本語のままでもインストールできる。

setup.bashの読み込みはROS1と同様に.bashrcに下記記載を加えておくと毎回入力しなくてもよい。

source /opt/ros/foxy/setup.bash

ビルドシステムcolconは下記コマンドでインストールする。(ROS2のインストールとは別に実行する必要があるので注意)

sudo apt install python3-colcon-common-extensions

2. チュートリアルの実施

ROS2の基本的な使い方(パッケージ作成、ビルド、subscribe/publishなど)は下記ページのチュートリアルに記載されている。

docs.ros.org

ROS2ではROSに対して下記のような変更点がある。

  • ビルドシステムの変更(colcon)

ROS2ではパッケージのビルドシステムがcatkinからcolconに変更となっている。 catkinではプロジェクト内の全パッケージがdevelにソフトリンクされていたが、colconでは明示的にインストールするパッケージを記述する必要があるなどの違いがある。また、作成するパッケージがpythonかCかで記述する設定が異なるので注意する。

docs.ros.org

  • roscoreの廃止

ROSではroscoreコマンドでmasterノードを立ち上げ、各ノード間通信を司っていたがROS2では廃止された。 ROS2ではmasterノードを介さず、各ノード同士が通信する仕組みに変更されている。

  • Life Cycle Managerの導入

各ノードの状態(初期化前、無効、有効、終了後)などを管理するための仕組みとしてLife Cycle Managerという仕組みが導入された。

design.ros2.org

後述するnavigation stackではこの仕組に従って状態を操作しなければ適切に動作しない機能があるのに注意する。

  • launchファイルの記述方法変更

ROSではxmlファイルで記述していたlaunchファイルがpythonスクリプトで記述するように変更された。 記述方法は下記のチュートリアルに記載されている。

docs.ros.org

3. navigation stackの導入

移動ロボット用の ROS2 packageとしてnavigation 2を導入する。

導入方法・動作確認は下記サイトの手順に従って行う。 (virtual box のubuntuでの動作などではgazeboo起動までに非常に時間がかかるので注意する)

navigation.ros.org