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 (
@@ -148,29 +154,26 @@ def generate_launch_description():
148154 arguments = ["fts_broadcaster" , "--param-file" , robot_controllers ],
149155 )
150156
151- # Delay rviz start after `joint_state_broadcaster`
152- delay_rviz_after_joint_state_broadcaster_spawner = RegisterEventHandler (
153- event_handler = OnProcessExit (
154- target_action = joint_state_broadcaster_spawner ,
155- on_exit = [rviz_node ],
156- )
157+ # add the wrench transformer node (optional)
158+ wrench_transformer_node = Node (
159+ package = "force_torque_sensor_broadcaster" ,
160+ executable = "wrench_transformer_node" ,
161+ name = "fts_wrench_transformer" ,
162+ parameters = [wrench_transformer_params ],
163+ remappings = [("~/wrench" , "/fts_broadcaster/wrench" )],
164+ output = "both" ,
165+ condition = IfCondition (use_wrench_transformer ),
157166 )
158167
159- # Delay start of robot_controller after `joint_state_broadcaster`
160- delay_robot_controller_spawner_after_joint_state_broadcaster_spawner = RegisterEventHandler (
161- event_handler = OnProcessExit (
162- target_action = joint_state_broadcaster_spawner ,
163- on_exit = [robot_controller_spawner ],
164- )
168+ return LaunchDescription (
169+ declared_arguments
170+ + [
171+ control_node ,
172+ robot_state_pub_node ,
173+ rviz_node ,
174+ joint_state_broadcaster_spawner ,
175+ robot_controller_spawner ,
176+ fts_broadcaster_spawner ,
177+ wrench_transformer_node ,
178+ ]
165179 )
166-
167- nodes = [
168- control_node ,
169- robot_state_pub_node ,
170- joint_state_broadcaster_spawner ,
171- delay_rviz_after_joint_state_broadcaster_spawner ,
172- delay_robot_controller_spawner_after_joint_state_broadcaster_spawner ,
173- fts_broadcaster_spawner ,
174- ]
175-
176- return LaunchDescription (declared_arguments + nodes )
0 commit comments