6 from ament_index_python.packages
import get_package_share_directory
7 from moveit_configs_utils
import MoveItConfigsBuilder
8 from launch_param_builder
import ParameterBuilder
9 from launch.conditions
import IfCondition, UnlessCondition
10 from launch.substitutions
import LaunchConfiguration
16 .robot_description(file_path=
"config/panda.urdf.xacro")
21 launch_as_standalone_node = LaunchConfiguration(
22 "launch_as_standalone_node", default=
"true"
27 "moveit_servo": ParameterBuilder(
"moveit_servo")
28 .yaml(
"config/test_config_panda.yaml")
33 low_pass_filter_coeff = {
"butterworth_filter_coeff": 1.5}
36 ros2_controllers_path = os.path.join(
39 "ros2_controllers.yaml",
41 ros2_control_node = launch_ros.actions.Node(
42 package=
"controller_manager",
43 executable=
"ros2_control_node",
44 parameters=[ros2_controllers_path],
46 (
"/controller_manager/robot_description",
"/robot_description"),
51 joint_state_broadcaster_spawner = launch_ros.actions.Node(
52 package=
"controller_manager",
55 "joint_state_broadcaster",
56 "--controller-manager-timeout",
58 "--controller-manager",
59 "/controller_manager",
64 panda_arm_controller_spawner = launch_ros.actions.Node(
65 package=
"controller_manager",
67 arguments=[
"panda_arm_controller",
"-c",
"/controller_manager"],
71 container = launch_ros.actions.ComposableNodeContainer(
72 name=
"moveit_servo_demo_container",
74 package=
"rclcpp_components",
75 executable=
"component_container_mt",
76 composable_node_descriptions=[
79 launch_ros.descriptions.ComposableNode(
80 package=
"moveit_servo",
81 plugin=
"moveit_servo::ServoNode",
85 low_pass_filter_coeff,
86 moveit_config.robot_description,
87 moveit_config.robot_description_semantic,
88 moveit_config.robot_description_kinematics,
90 condition=UnlessCondition(launch_as_standalone_node),
92 launch_ros.descriptions.ComposableNode(
93 package=
"robot_state_publisher",
94 plugin=
"robot_state_publisher::RobotStatePublisher",
95 name=
"robot_state_publisher",
96 parameters=[moveit_config.robot_description],
98 launch_ros.descriptions.ComposableNode(
100 plugin=
"tf2_ros::StaticTransformBroadcasterNode",
101 name=
"static_tf2_broadcaster",
102 parameters=[{
"child_frame_id":
"/panda_link0",
"frame_id":
"/world"}],
109 servo_node = launch_ros.actions.Node(
110 package=
"moveit_servo",
111 executable=
"servo_node",
115 low_pass_filter_coeff,
116 moveit_config.robot_description,
117 moveit_config.robot_description_semantic,
118 moveit_config.robot_description_kinematics,
121 condition=IfCondition(launch_as_standalone_node),
124 servo_gtest = launch_ros.actions.Node(
125 executable=launch.substitutions.PathJoinSubstitution(
127 launch.substitutions.LaunchConfiguration(
"test_binary_dir"),
128 "moveit_servo_ros_integration_test",
134 return launch.LaunchDescription(
138 launch.actions.TimerAction(period=3.0, actions=[ros2_control_node]),
139 launch.actions.TimerAction(
140 period=5.0, actions=[joint_state_broadcaster_spawner]
142 launch.actions.TimerAction(
143 period=7.0, actions=[panda_arm_controller_spawner]
145 launch.actions.TimerAction(period=9.0, actions=[servo_gtest]),
146 launch_testing.actions.ReadyToTest(),
149 "servo_gtest": servo_gtest,
156 self.proc_info.assertWaitForShutdown(servo_gtest, timeout=4000.0)
159 @launch_testing.post_shutdown_test()
163 launch_testing.asserts.assertExitCodes(proc_info, process=servo_gtest)
def test_gtest_pass(self, proc_info, servo_gtest)
def test_gtest_run_complete(self, servo_gtest)
def get_package_share_directory(pkg_name)
def generate_test_description()