Skip to content

Commit 3ff218a

Browse files
authored
Cleaned up launch file example_1/rrbot.launch.py (backport #959) (#976)
1 parent 083ead4 commit 3ff218a

File tree

1 file changed

+62
-100
lines changed

1 file changed

+62
-100
lines changed

example_1/bringup/launch/rrbot.launch.py

Lines changed: 62 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -14,114 +14,76 @@
1414

1515

1616
from launch import LaunchDescription
17-
from launch.actions import DeclareLaunchArgument, RegisterEventHandler
17+
from launch.actions import DeclareLaunchArgument
1818
from launch.conditions import IfCondition
19-
from launch.event_handlers import OnProcessExit
20-
from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution
19+
from launch.substitutions import Command, LaunchConfiguration, PathSubstitution
2120

2221
from launch_ros.actions import Node
2322
from launch_ros.substitutions import FindPackageShare
2423

2524

2625
def generate_launch_description():
27-
# Declare arguments
28-
declared_arguments = []
29-
declared_arguments.append(
30-
DeclareLaunchArgument(
31-
"gui",
32-
default_value="true",
33-
description="Start RViz2 automatically with this launch file.",
34-
)
35-
)
36-
37-
# Initialize Arguments
38-
gui = LaunchConfiguration("gui")
39-
40-
# Get URDF via xacro
41-
robot_description_content = Command(
26+
return LaunchDescription(
4227
[
43-
PathJoinSubstitution([FindExecutable(name="xacro")]),
44-
" ",
45-
PathJoinSubstitution(
46-
[
47-
FindPackageShare("ros2_control_demo_example_1"),
48-
"urdf",
49-
"rrbot.urdf.xacro",
50-
]
28+
DeclareLaunchArgument(
29+
"gui",
30+
default_value="true",
31+
description="Start RViz2 automatically with this launch file.",
32+
),
33+
# Control node
34+
Node(
35+
package="controller_manager",
36+
executable="ros2_control_node",
37+
parameters=[
38+
PathSubstitution(FindPackageShare("ros2_control_demo_example_1"))
39+
/ "config"
40+
/ "rrbot_controllers.yaml"
41+
],
42+
remappings=[
43+
("~/robot_description", "/robot_description"),
44+
],
45+
output="both",
46+
),
47+
# robot_state_publisher with robot_description from xacro
48+
Node(
49+
package="robot_state_publisher",
50+
executable="robot_state_publisher",
51+
output="both",
52+
parameters=[
53+
{
54+
"robot_description": Command(
55+
[
56+
"xacro",
57+
" ",
58+
PathSubstitution(FindPackageShare("ros2_control_demo_example_1"))
59+
/ "urdf"
60+
/ "rrbot.urdf.xacro",
61+
]
62+
)
63+
}
64+
],
65+
),
66+
Node(
67+
package="rviz2",
68+
executable="rviz2",
69+
name="rviz2",
70+
output="log",
71+
arguments=[
72+
"-d",
73+
PathSubstitution(FindPackageShare("ros2_control_demo_description"))
74+
/ "rrbot/rviz/rrbot.rviz",
75+
],
76+
condition=IfCondition(LaunchConfiguration("gui")),
77+
),
78+
Node(
79+
package="controller_manager",
80+
executable="spawner",
81+
arguments=["joint_state_broadcaster"],
82+
),
83+
Node(
84+
package="controller_manager",
85+
executable="spawner",
86+
arguments=["forward_position_controller"],
5187
),
5288
]
5389
)
54-
robot_description = {"robot_description": robot_description_content}
55-
56-
robot_controllers = PathJoinSubstitution(
57-
[
58-
FindPackageShare("ros2_control_demo_example_1"),
59-
"config",
60-
"rrbot_controllers.yaml",
61-
]
62-
)
63-
rviz_config_file = PathJoinSubstitution(
64-
[FindPackageShare("ros2_control_demo_description"), "rrbot/rviz", "rrbot.rviz"]
65-
)
66-
67-
control_node = Node(
68-
package="controller_manager",
69-
executable="ros2_control_node",
70-
parameters=[robot_controllers],
71-
output="both",
72-
remappings=[
73-
("~/robot_description", "/robot_description"),
74-
],
75-
)
76-
robot_state_pub_node = Node(
77-
package="robot_state_publisher",
78-
executable="robot_state_publisher",
79-
output="both",
80-
parameters=[robot_description],
81-
)
82-
rviz_node = Node(
83-
package="rviz2",
84-
executable="rviz2",
85-
name="rviz2",
86-
output="log",
87-
arguments=["-d", rviz_config_file],
88-
condition=IfCondition(gui),
89-
)
90-
91-
joint_state_broadcaster_spawner = Node(
92-
package="controller_manager",
93-
executable="spawner",
94-
arguments=["joint_state_broadcaster", "--controller-manager", "/controller_manager"],
95-
)
96-
97-
robot_controller_spawner = Node(
98-
package="controller_manager",
99-
executable="spawner",
100-
arguments=["forward_position_controller", "--controller-manager", "/controller_manager"],
101-
)
102-
103-
# Delay rviz start after `joint_state_broadcaster`
104-
delay_rviz_after_joint_state_broadcaster_spawner = RegisterEventHandler(
105-
event_handler=OnProcessExit(
106-
target_action=joint_state_broadcaster_spawner,
107-
on_exit=[rviz_node],
108-
)
109-
)
110-
111-
# Delay start of robot_controller after `joint_state_broadcaster`
112-
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner = RegisterEventHandler(
113-
event_handler=OnProcessExit(
114-
target_action=joint_state_broadcaster_spawner,
115-
on_exit=[robot_controller_spawner],
116-
)
117-
)
118-
119-
nodes = [
120-
control_node,
121-
robot_state_pub_node,
122-
joint_state_broadcaster_spawner,
123-
delay_rviz_after_joint_state_broadcaster_spawner,
124-
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner,
125-
]
126-
127-
return LaunchDescription(declared_arguments + nodes)

0 commit comments

Comments
 (0)