とりあえずメモ.
参考にしたサイトに再たどり着きができなかった.似たようなことを書いてるところをメモ.
ROS2 launch file: how to convert LaunchArgument to string
I want to convert either a LaunchConfiguration or a LaunchArgument to a string so I can use it in a filepath later. How ...
現在,デフォルトでホームディレクトリ以下しか指定できない.os.environ["HOME"],
を削除すればOKだが,個人的にはホームディレクトリ以下しか利用しないのでこのまま.
import launch
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument, OpaqueFunction
from ament_index_python.packages import get_package_share_directory
from launch_xml.launch_description_sources import XMLLaunchDescriptionSource
import datetime
import os
import pathlib
launch_args = [
DeclareLaunchArgument(
"save_dir",
default_value="log/{}".format(datetime.datetime.now().strftime("%Y%m%d")),
description="save directory for bag files",
)
]
def launch_setup(context):
# bag用のパラメータとして save_dir を指定できるようにする
save_dir = launch.substitutions.LaunchConfiguration("save_dir")
save_dir_path = pathlib.Path(os.environ["HOME"], save_dir.perform(context))
os.makedirs(save_dir_path, exist_ok=True)
# bag record を実行する
bag_node = launch.actions.ExecuteProcess(
shell=True,
cmd=[
"cd",
"{}".format(save_dir_path),
"&&",
"ros2",
"bag",
"record",
"-a",
],
output="screen",
)
def generate_launch_description():
opfunc = OpaqueFunction(function=launch_setup)
ld = LaunchDescription(launch_args)
ld.add_action(opfunc)
return ld
if __name__ == "__main__":
generate_launch_description()
コメント