Skip to content

Commit dd56581

Browse files
Cleaned up launch file example_1/rrbot.launch.py (#959)
1 parent aaefce7 commit dd56581

File tree

1 file changed

+65
-97
lines changed

1 file changed

+65
-97
lines changed

example_1/bringup/launch/rrbot.launch.py

Lines changed: 65 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -14,111 +14,79 @@
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+
output="both",
43+
),
44+
# robot_state_publisher with robot_description from xacro
45+
Node(
46+
package="robot_state_publisher",
47+
executable="robot_state_publisher",
48+
output="both",
49+
parameters=[
50+
{
51+
"robot_description": Command(
52+
[
53+
"xacro",
54+
" ",
55+
PathSubstitution(FindPackageShare("ros2_control_demo_example_1"))
56+
/ "urdf"
57+
/ "rrbot.urdf.xacro",
58+
]
59+
)
60+
}
61+
],
62+
),
63+
Node(
64+
package="rviz2",
65+
executable="rviz2",
66+
name="rviz2",
67+
output="log",
68+
arguments=[
69+
"-d",
70+
PathSubstitution(FindPackageShare("ros2_control_demo_description"))
71+
/ "rrbot/rviz/rrbot.rviz",
72+
],
73+
condition=IfCondition(LaunchConfiguration("gui")),
74+
),
75+
Node(
76+
package="controller_manager",
77+
executable="spawner",
78+
arguments=["joint_state_broadcaster"],
79+
),
80+
Node(
81+
package="controller_manager",
82+
executable="spawner",
83+
arguments=[
84+
"forward_position_controller",
85+
"--param-file",
86+
PathSubstitution(FindPackageShare("ros2_control_demo_example_1"))
87+
/ "config"
88+
/ "rrbot_controllers.yaml",
89+
],
5190
),
5291
]
5392
)
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-
)
73-
robot_state_pub_node = Node(
74-
package="robot_state_publisher",
75-
executable="robot_state_publisher",
76-
output="both",
77-
parameters=[robot_description],
78-
)
79-
rviz_node = Node(
80-
package="rviz2",
81-
executable="rviz2",
82-
name="rviz2",
83-
output="log",
84-
arguments=["-d", rviz_config_file],
85-
condition=IfCondition(gui),
86-
)
87-
88-
joint_state_broadcaster_spawner = Node(
89-
package="controller_manager",
90-
executable="spawner",
91-
arguments=["joint_state_broadcaster"],
92-
)
93-
94-
robot_controller_spawner = Node(
95-
package="controller_manager",
96-
executable="spawner",
97-
arguments=["forward_position_controller", "--param-file", robot_controllers],
98-
)
99-
100-
# Delay rviz start after `joint_state_broadcaster`
101-
delay_rviz_after_joint_state_broadcaster_spawner = RegisterEventHandler(
102-
event_handler=OnProcessExit(
103-
target_action=joint_state_broadcaster_spawner,
104-
on_exit=[rviz_node],
105-
)
106-
)
107-
108-
# Delay start of robot_controller after `joint_state_broadcaster`
109-
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner = RegisterEventHandler(
110-
event_handler=OnProcessExit(
111-
target_action=joint_state_broadcaster_spawner,
112-
on_exit=[robot_controller_spawner],
113-
)
114-
)
115-
116-
nodes = [
117-
control_node,
118-
robot_state_pub_node,
119-
joint_state_broadcaster_spawner,
120-
delay_rviz_after_joint_state_broadcaster_spawner,
121-
delay_robot_controller_spawner_after_joint_state_broadcaster_spawner,
122-
]
123-
124-
return LaunchDescription(declared_arguments + nodes)

0 commit comments

Comments
 (0)