1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ROS 2においてC++で作成したノードをlaunchファイルで起動する方法

Last updated at Posted at 2024-01-11

はじめに

 今回の記事では、ROS 2において、launchファイルを用いて複数のノードを起動する方法について記載していきます。ROSの際はlaunchファイルをxml形式で記述してきましたが、ROS 2ではpython、xml、yamlで記述する方法が提供されています。今回の記事ではこの3つの記述方法の内、pythonでのやり方について記載していきます。

この記事はROSに関する投稿の一部です。
目次はこちら

前提条件

 今回の記事は、以下の環境で動かすことを前提に記載しています。

条件
OS Ubuntu 22.04
ROS ROS 2 humble

準備

launchファイルを格納するディレクトリ作成

 ROSの時と同様、以下のコマンドでパッケージ内にlaunchディレクトリを作成します。今回の例では、前回の記事で作成したpub_sub_cpp_01パッケージ内にlaunchディレクトリを作成しています。

cd ~/ros2_ws/src/pub_sub_cpp_01/
mkdir launch

package.xmlの編集

 ~/ros2_ws/src/pub_sub_cpp_01/package.xml のを記述している場所に以下を追記します。

~/ros2_ws/src/pub_sub_cpp_01/package.xml
<exec_depend>ros2launch</exec_depend>

CMakeLists.txtの編集

 ~/ros2_ws/src/pub_sub_cpp_01/CMakeLists.txtに以下を追記します。追記しなくても実行できますが、launchファイルを配置したディレクトリ以外でros2 launch コマンドを実行すると、launchファイルを見つけられないので、追記を推奨します。

~/ros2_ws/src/pub_sub_cpp_01/CMakeLists.txt
install(DIRECTORY launch
  DESTINATION share/${PROJECT_NAME})

launchファイルの作成

 以下のファイルを~/ros2_ws/src/pub_sub_cpp_01/launch に配置します。今回ファイル名は、pub_sub_cpp_01_launch.pyとしています。6~15行目に記述しているように、Node()を追記することで起動するノードを追加することができます。また、今回の例では、パッケージ名、名前空間、実行ファイル名のみを記載していますが、remappingsを使用することで、トピックの再マッピングも可能です。名前空間については、同じノードを複数起動したい場合にnamespaceにそれぞれ異なる名前を設定する事で、同じノードを区別して実行することが可能になります。

~/ros2_ws/src/pub_sub_cpp_01/launch/pub_sub_cpp_01_launch.py
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package='pub_sub_cpp_01',
            namespace='kccs_pub_sub_cpp_01',
            executable='publisher'
        ),
        Node(
            package='pub_sub_cpp_01',
            namespace='kccs_pub_sub_cpp_01',
            executable='subscriber'
        )
    ])

ビルド

 以下のコマンドでビルドします。ビルドしなくとも直接launchディレクトリに移動して、ros2 launch pub_sub_cpp_01_launch.py とコマンドを打てば実行可能です。

cd ~/ros2_ws
colcon build

実行

 以下のどちらかのコマンドを実行します。

cd ros2_ws/src/pub_sub_cpp_01/launch
ros2 launch pub_sub_cpp_01_launch.py
ros2 launch pub_sub_cpp_01 pub_sub_cpp_01_launch.py

実行結果

Screenshot from 2023-11-15 16-33-52.png

おわりに

 今回の記事では、ROS 2でのlaunchファイルの書き方について記載しました。次回の記事では、今回の内容からは少し逸れますが、ament_cmake_autoについて記載する予定です。ament_cmake_autoを使用しなくともビルドは可能ですが、使用した方がビルド設定を比較的楽に記述できますので、興味がある方は是非ご覧ください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?