2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ROS2 launchの使用

Last updated at Posted at 2023-03-12

ROS2関係トップページへ

概要

ros2 launchの使い方について.

  1. ノードを準備
  2. launchファイルを準備
  3. launchファイル使用のための設定
  4. colcon build
  5. 使用可に!

launchで実行するnodeについて

いくつかパターンがあるので羅列しつつ,本ページで例題として使用する名前を以下のように付与.

  • パッケージ名: nek_pkg
  • ノードがpythonの場合
    • target名, entry point: nek_target
    • node名: nek_node
  • ノードがC++の場合
    • target名: nek_target
    • node名: nek_node
  • yamlファイル
    • config/nek.yaml
  • launchファイル
    • launch/nek_launch.py
      • launchファイルは後ろに_launchをつけることとなっている.

詳細

ノードのプログラミングは出来てるものとする.
yamlはconfig/ディレクトリに,launchyファイルはlaunch/ディレクトリに保存することとするので,最初に作っておく.
またyamlファイルの中身についてはYAMLファイルによるROS2のパラメータ設定あたりを参考に.

launchファイルの準備

一般的なもの

launchy/nek_launchy.py
from launch import LaunchDescription
from launch_ros.actions import Node
import os

pkg_name1 = 'nek_pkg'

def generate_launch_description():
    ld = LaunchDescription()

    config1 = os.path.join(
        pkg_name1,
        'config',
        'nek.yaml'
    )

    node1 = Node(
        package=pkg_name1,
        executable='nek_target',
        name='nek_node',
        output='screen',
        emulate_tty=True,
        parameters=[config1]
    )

    ld.add_action(node1)
# 複数ノードを追加する場合は,configN,nodeNを作ってld.add_action(nodeN)?

    return ld

コンポーネントノードの場合

Using ROS 2 launch to launch composable nodesを参照.気が向いたらそのうち書く.

launchファイル使用のための設定

ノードがPyhtonの場合

Using parameters in a class (Python)通り,setup.pyの中のdatafiles項に加える.それに伴ってosglobimportする.

setup.py
import os
from glob import glob
# ...

setup(
  # ...
  data_files=[
      # ...
      (os.path.join('share', package_name), glob('launch/*launch.[pxy][yma]*')),
    ]
  )

ノードがC++の場合

ROS2 YAML For Parametersを参考に,CMakeLists.txtに加える.ただし,configに関する部分はいらない(参考ページとの整合性のためコメントアウトにしているがいらない.詳しくは参考の部分を参照のこと.)

CMakeLists.txt
...
install(DIRECTORY
  launch
  DESTINATION share/${PROJECT_NAME}
)
#install(DIRECTORY
#  config
#  DESTINATION share/${PROJECT_NAME}
#)
...

実行

ビルド,. install/local_setup.bash後,以下のコマンドで実行.

$ ros2 launch nek_pkg nek_launch.py

参考

  • ROS2 公式のページ
  • ROS2 YAML For Parameters
    • launchにyaml(パラメータ用)を組み込むための良い情報源
    • 上記ページではlaunchファイル用のディレクトリとyaml用のディレクトリの設定をsetup.py, CMakeLists.txtに組み込んでいるが,本ページではyaml用の設定はしない.
      • ここで組み込むと実体がinstall/.../share/...にコピーされてそちらを用いることとなる.つまり,変更するとビルドをしてinstall/.../share/...のアップデートが必要となる.しかしyamlファイルは気軽に使いたいので,yamlファイルの中身(パラメータ)を書き換えるたびビルドするのは面倒.なので本ページではlaunchファイルのみ設定している.
2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?