0
0

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プログラミング基礎_4-1: ローンチファイル(launch file)の作成_1(最もシンプル)

Posted at

はじめに

こちらの書籍を参考書としてROS2プログラミングの勉強をしていきます.

このページではローンチファイルを作成します(参考書ではp.249)
ローンチファイルは一括して複数のノードを立ち上げたり,ノードのパラメータを設定したり,ノード名やトピック名を付け替えるリマップに関する情報を含むPythonスクリプトです.

まとめて立ち上げる自作のノード

今回練習として過去に作成した下記2つの自作ノード

「my_image_canny_node」(ROS2プログラミング基礎_3-2)
https://qiita.com/pez/items/99ed918900f7c8517c13
「my_gamepad_node」(ROS2プログラミング基礎_1-3)
https://qiita.com/pez/items/9d100183d8bac3b9e18f

を同時に立ち上げるだけの最もシンプルなローンチファイルを作成してみます.

環境

・PC: Panasonic Let's Note CF-FV
・OS: Windows11 Pro (64bit)
・VirtualBox: 6.1.38 (Ubuntu20.04.5, GUI環境)
・ROS: ROS2 Foxy

・ロボット:
 Turtlebot3 burger (Raspberry Pi 3B+)
 Turtlebot3 waffle pi (Raspberry Pi 3B+)
 Turtlebot3 waffle pi (Raspberry Pi 4B)
 ※いずれも同様の操作でOK

・ゲームパッド:Logicool F710

ローンチファイルの作成

今回名前は「mylaunch.launch.py」としておきます.
作成場所はホームフォルダ直下の launch ディレクトリとします.

$ cd
$ midir -p launch
$ cd launch
$ emacs mylaunch.launch.py

中身は下記のように記述し保存して下さい.
my_image_canny パッケージの my_image_canny_node と,
my_gamepad パッケージの my_gamepad_node を立ち上げる
という中身になっています.

mylaunch.launch.py
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package='my_image_canny',
            executable='my_image_canny_node',
            ),
        Node(
            package='my_gamepad',
            executable='my_gamepad_node',
            )
        ])

動作テスト(TurtleBot実機)

今回はロボットを動かすプログラムなのでロボットを起動します.
TurtleBot3の設定については別記事参照.
https://qiita.com/pez/items/1d3d15b3911d5dab1702

※下記2つはロボット側でコマンド入力

TurtleBot3にて(SSH接続などで)
$ ros2 launch turtlebot3_bringup robot.launch.py
TurtleBot3にて(さらに別のターミナルからSSH接続)
$ ros2 run usb_cam usb_cam_node_exe

自作ローンチファイル実行

ファイルがある場所で単純に先ほど作成したpythonスクリプトを実行します(最も簡単な実行方法)

自作の launch file を実行
$ cd ~/launch/
$ ros2 launch my_launch.my_launch.py

TurtleBot3に接続したUSBカメラの画像が2つ表示(1つは元画像,もう1つはエッジ検出結果)された上,gamepadによる操作が可能な状態になっていれば成功です.

補足

ローンチファイルの中身ですが,今回記述した「package」と「executable」は必ず記述が必要なものとなっています.その他にもパラメータを指定したりノード起動時に新しいターミナルを開くなどの色々な設定が可能ですがそれはまた別の記事にしたいと思います.

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?