注目キーワード
  1. Photoshop
  2. Python
  3. Raspberry Pi
  4. Arduino

ROS2で初めてのパッケージ作成&実行をしてみた

  • 2021年5月30日
  • 2021年11月16日
  • ROS2

この記事は

「Ubuntu Server20.04.2 LTS」OSの「Raspberry Pi 4 Model B」を使って「ROS2 Foxy」の学習ログを書き記した自分用ノート

になります。

 

この記事を読むことで

ROS2のパッケージ作成&実行の基礎

ROS2パッケージのディレクトリ構造

ROS2パッケージの全体像

を知ることができます。

 

ROS2のパッケージ構造や、全体像を掴みたい方、チュートリアルを進めていても理解が難しいと感じる方は是非ご覧ください。

 

なおこの記事はROS2 Foxyチュートリアルである

ROS2 Foxy:Creating your first ROS 2 package

を私なりに解釈し、まとめたものになります。

 

それでは早速始めていきましょう。

 

ROS2で初めてのパッケージ作成&実行手順

 

ROS2ワークスペース&パッケージの作成

まずROS2のワークスペースとは何かを確認しておきます。

 

ROS2ワークスペースとは

ROS2作業用のスペースで、既存のROS2ワークスペースに干渉することなく、新しくパッケージを追加することができる場所

です。

 

要するに、

taku
ROS2パッケージという物を管理する袋、箱といったイメージ

で良いかと思います。

 

ROS2 Foxy公式チュートリアルによると、前提条件として

ROS2、colcon、turtlesim、rosdepをインストールする必要があるそうです。

※ROS2を学ぶ上では必要なパッケージだからです。

 

ROS2ワークスペースの作成

では早速ROS2のワークスペースを作成します。

 

ワークスペース名は任意で変えることができますが、ROS2公式チュートリアルを真似して「dev_ws」という名前でワークスペースを作成することにします。

mkdir -p ~/dev_ws/src

cd ~/dev_ws/src

 

firstrospackage_01

 

上記では、「dev_ws」というワークスペースと、実際にROS2パッケージを管理するためのフォルダ「src」を作成しました。

 

ROS2パッケージの作成

ワークスペースの作成ができたら、実際にROS2パッケージを作成していきます。

パッケージの作成には「ros2 pkg create」コマンドを使用します。

ros2 pkg create –build-type ament_python パッケージ名

 

チュートリアルでは

オプションである引数にnode-nameを使用し、実行ノード名を宣言

しています。

 

ros2 pkg create –build-type ament_python –node-name my_node my_package

 

実際に実行してみると

firstrospackage_02

と色々creatingされました。

 

作成したmy_packageの中身を確認してみると

ubuntu@myrobot2:~/dev_ws/src$ ls
my_package
ubuntu@myrobot2:~/dev_ws/src$ cd ./my_package
ubuntu@myrobot2:~/dev_ws/src/my_package$ ls
my_package package.xml resource setup.cfg setup.py test

 

firstrospackage_03

とパッケージに必要なフォルダやファイルが作成されていることが分かります。

 

作成されたフォルダ・ファイルの中で特に

package.xml:パッケージに関するメタ情報

setup.py:パッケージのインストール方法の説明

setup.cfg:ros2 runで実行可能なファイルを見つける

/パッケージ名: ROS2ツールがパッケージを見つけるために使用するディレクトリで、そのディレクトリがパッケージであることを示す__init__.pyが含まれる

はROS2パッケージを扱う上でも重要なので、役割を覚えておきましょう。

 

ROS2パッケージの実行

ワークスペース、パッケージの作成が出来たので、ROS2パッケージを実際に実行してみます。

 

ROS2パッケージのビルド

まずはワークスペースにディレクトリを戻し、パッケージのビルドを行います。

cd ~/dev_ws
colcon build

 

※ROSパッケージのビルドツールとしてはcolcon(コルコン)を使用します。

 

 colcon build が実行できない場合

下記のようなエラーが発生した場合は、colcon のインストールを行いましょう。

colcon : command not found

sudo apt install python3-colcon-common-extensions

 

実際に実行してみると

firstrospackage_04

となり、終了すると「1 package finished」などと表示されます。

 

さらに、ワークスペース「dev_ws」には

bulid install log src

と3つのフォルダが新しく作成されます。

 

また

colcon build –packages-select my_package

のようにパッケージを選択してビルドすることもできます。

 

ROS2パッケージのセットアップと実行

新しいパッケージと実行可能ファイルを使用するためにセットアップファイルをソースして準備をします。

 

. install/setup.bash

を実行し、セットアップファイルを準備し

ros2 run my_package my_node

を実行しましょう。

 

firstrospackage_05

実行すると、上図のように

Hi from my_package

と表示されます。

 

これで、パッケージの作成から実行までを行うことができました。

 

package.xmlファイルのカスタマイズ

また、ROSパッケージをカスタマイズする方法の一部もまとめておきます。

 

「/dev_ws/src/mypackage」のpackage.xmlファイルには、TODOという編集可能な部分があります。

 

ディレクトリを移動し

sudo nano package.xml

などお好みの編集エディターで.xmlファイルのTODO項目を編集してみましょう。

 

編集するのは、プログラムの説明とライセンス部分になります。

<description>ros2 tutorial</description>

<license>Apache License 2.0</license>

 

プログラムの説明、ライセンスは任意で構いませんが、package.xmlとsetup.pyと必ず同じにしてください。

 

package.xml

編集前↓

firstrospackage_06

編集後↓

firstrospackage_07

 

setup.py

編集前↓

firstrospackage_08

編集後↓

firstrospackage_09

 

実行ファイルをカスタマイズする

今回は編集しませんでしたが、上図のsetup.pyの青枠で囲った

entry_points={
    'console_scripts':[
        'my_node = my_package.my_node:main'
],

実際に実行するスクリプトになります。

 

上記では

ノード名:my_node

実行ファイル名:my_package直下のmy_node

実行関数:main

となります。

 

実際に/my_package/my_package/my_node.pyの中身を見てみると

firstrospackage_mynode

となっていることが分かり、mainのprint文が出力されたと分かります。

 

なので、print出力などを任意に変更することで、様々なカスタマイズが可能という事です。

 

パッケージの作成&実行のまとめ

ROS2パッケージの作成&実行には

パッケージ作成コマンドを使用

セットアップ、colcon buildするros2 runを実行する

package.xmlファイル等を編集する

必要があることが分かりました。

 

また、ROS2パッケージのディレクトリとして大まかに

firstrospackage_10

となっていることを理解しました。

 

これらの基礎をまずは覚えるべきだなとチュートリアルを通して実感しましたね。

この記事がROS2初学者の皆様の参考になれば幸いです。

お疲れ様でした。

firstrospackage_topthumbnail
学びに関する情報をチェック!