runtime/rbs_bt_executor/launch/rbs_bt_web.launch.py

75 lines
2.1 KiB
Python

"""
rbs_bt_web
ROS 2 launch program for Robossembler
@shalenikol release 0.1
@shalenikol release 0.2 BT v.4
"""
import os
# import json
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument, OpaqueFunction, RegisterEventHandler
from launch.substitutions import LaunchConfiguration
from launch.event_handlers import OnExecutionComplete
# FILE_BT = "bt.xml"
def launch_setup(context, *args, **kwargs):
# Initialize Arguments
bt_path = LaunchConfiguration("bt_path")
bt_path = bt_path.perform(context)
# rbs_bt = Node(
# package = "behavior_tree",
# executable = "bt_engine",
# parameters = [
# {"bt_file_path": os.path.join(bt_path, FILE_BT)},
# {"plugins": ["rbs_interface"]}
# ]
# )
rbs_bt = Node(
package = "rbs_bt_executor",
executable = "rbs_bt_executor",
parameters = [
{
"plugins": ["rbs_bt_executor/bt_plugins"]
# "behavior_trees": [bt_path]
}
]
)
bt_exec = Node(
package="rbs_interface",
executable="bt_exec",
arguments=[bt_path]
# prefix=['gdbserver localhost:3000'],
)
bt_param = Node(
package="rbs_interface",
executable="bt_param.py",
parameters=[{"bt_path": bt_path}]
)
return [
RegisterEventHandler(
event_handler=OnExecutionComplete(
target_action=bt_param,
on_completion=[bt_exec],
# on_completion=[rbs_bt, bt_exec],
)
),
bt_param
] # the order of elements is strictly required
def generate_launch_description():
declared_arguments = []
declared_arguments.append(
DeclareLaunchArgument(
"bt_path",
default_value="''",
description="path to Behavior tree instance"
)
)
return LaunchDescription(declared_arguments + [OpaqueFunction(function=launch_setup)])