1313# limitations under the License.
1414
1515from launch import LaunchDescription
16- from launch .actions import DeclareLaunchArgument , RegisterEventHandler
16+ from launch .actions import DeclareLaunchArgument
1717from launch .conditions import IfCondition
18- from launch .event_handlers import OnProcessExit
19- from launch .substitutions import Command , FindExecutable , LaunchConfiguration , PathJoinSubstitution
18+ from launch .substitutions import Command , LaunchConfiguration , PathSubstitution
2019
2120from launch_ros .actions import Node
2221from launch_ros .substitutions import FindPackageShare
@@ -61,26 +60,30 @@ def generate_launch_description():
6160 description = "Start RViz2 automatically with this launch file." ,
6261 )
6362 )
63+ declared_arguments .append (
64+ DeclareLaunchArgument (
65+ "use_wrench_transformer" ,
66+ default_value = "false" ,
67+ description = "Enable the wrench transformer node to transform wrench messages to different frames." ,
68+ )
69+ )
6470
6571 # Initialize Arguments
6672 prefix = LaunchConfiguration ("prefix" )
6773 use_mock_hardware = LaunchConfiguration ("use_mock_hardware" )
6874 mock_sensor_commands = LaunchConfiguration ("mock_sensor_commands" )
6975 slowdown = LaunchConfiguration ("slowdown" )
7076 gui = LaunchConfiguration ("gui" )
77+ use_wrench_transformer = LaunchConfiguration ("use_wrench_transformer" )
7178
7279 # Get URDF via xacro
7380 robot_description_content = Command (
7481 [
75- PathJoinSubstitution ([ FindExecutable ( name = "xacro" )]) ,
82+ "xacro" ,
7683 " " ,
77- PathJoinSubstitution (
78- [
79- FindPackageShare ("ros2_control_demo_example_5" ),
80- "urdf" ,
81- "rrbot_system_with_external_sensor.urdf.xacro" ,
82- ]
83- ),
84+ PathSubstitution (FindPackageShare ("ros2_control_demo_example_5" ))
85+ / "urdf"
86+ / "rrbot_system_with_external_sensor.urdf.xacro" ,
8487 " " ,
8588 "prefix:=" ,
8689 prefix ,
@@ -97,15 +100,18 @@ def generate_launch_description():
97100 )
98101 robot_description = {"robot_description" : robot_description_content }
99102
100- robot_controllers = PathJoinSubstitution (
101- [
102- FindPackageShare ("ros2_control_demo_example_5" ),
103- "config" ,
104- "rrbot_with_external_sensor_controllers.yaml" ,
105- ]
103+ robot_controllers = (
104+ PathSubstitution (FindPackageShare ("ros2_control_demo_example_5" ))
105+ / "config"
106+ / "rrbot_with_external_sensor_controllers.yaml"
106107 )
107- rviz_config_file = PathJoinSubstitution (
108- [FindPackageShare ("ros2_control_demo_example_5" ), "rviz" , "rrbot.rviz" ]
108+ wrench_transformer_params = (
109+ PathSubstitution (FindPackageShare ("ros2_control_demo_example_5" ))
110+ / "config"
111+ / "wrench_transformer_params.yaml"
112+ )
113+ rviz_config_file = (
114+ PathSubstitution (FindPackageShare ("ros2_control_demo_example_5" )) / "rviz" / "rrbot.rviz"
109115 )
110116
111117 control_node = Node (
@@ -151,29 +157,26 @@ def generate_launch_description():
151157 arguments = ["fts_broadcaster" , "--controller-manager" , "/controller_manager" ],
152158 )
153159
154- # Delay rviz start after `joint_state_broadcaster`
155- delay_rviz_after_joint_state_broadcaster_spawner = RegisterEventHandler (
156- event_handler = OnProcessExit (
157- target_action = joint_state_broadcaster_spawner ,
158- on_exit = [rviz_node ],
159- )
160+ # add the wrench transformer node (optional)
161+ wrench_transformer_node = Node (
162+ package = "force_torque_sensor_broadcaster" ,
163+ executable = "wrench_transformer_node" ,
164+ name = "fts_wrench_transformer" ,
165+ parameters = [wrench_transformer_params ],
166+ remappings = [("~/wrench" , "/fts_broadcaster/wrench" )],
167+ output = "both" ,
168+ condition = IfCondition (use_wrench_transformer ),
160169 )
161170
162- # Delay start of robot_controller after `joint_state_broadcaster`
163- delay_robot_controller_spawner_after_joint_state_broadcaster_spawner = RegisterEventHandler (
164- event_handler = OnProcessExit (
165- target_action = joint_state_broadcaster_spawner ,
166- on_exit = [robot_controller_spawner ],
167- )
171+ return LaunchDescription (
172+ declared_arguments
173+ + [
174+ control_node ,
175+ robot_state_pub_node ,
176+ rviz_node ,
177+ joint_state_broadcaster_spawner ,
178+ robot_controller_spawner ,
179+ fts_broadcaster_spawner ,
180+ wrench_transformer_node ,
181+ ]
168182 )
169-
170- nodes = [
171- control_node ,
172- robot_state_pub_node ,
173- joint_state_broadcaster_spawner ,
174- delay_rviz_after_joint_state_broadcaster_spawner ,
175- delay_robot_controller_spawner_after_joint_state_broadcaster_spawner ,
176- fts_broadcaster_spawner ,
177- ]
178-
179- return LaunchDescription (declared_arguments + nodes )
0 commit comments