15"""This is all-in-one launch script intended for use by nav2 developers."""
19from ament_index_python.packages
import get_package_share_directory
21from launch
import LaunchDescription
22from launch.actions
import DeclareLaunchArgument, IncludeLaunchDescription
23from launch.conditions
import IfCondition
24from launch.launch_description_sources
import PythonLaunchDescriptionSource
25from launch.substitutions
import LaunchConfiguration
26from launch_ros.actions
import Node
31 sm_dance_bot_warehouse_3_dir = get_package_share_directory(
"sm_dance_bot_warehouse_3")
32 sm_dance_bot_warehouse_3_launch_dir = os.path.join(sm_dance_bot_warehouse_3_dir,
"launch")
35 slam = LaunchConfiguration(
"slam")
36 namespace = LaunchConfiguration(
"namespace")
37 use_namespace = LaunchConfiguration(
"use_namespace")
38 map_yaml_file = LaunchConfiguration(
"map")
39 use_sim_time = LaunchConfiguration(
"use_sim_time")
40 params_file = LaunchConfiguration(
"params_file")
41 default_nav_to_pose_bt_xml = LaunchConfiguration(
"default_nav_to_pose_bt_xml")
42 autostart = LaunchConfiguration(
"autostart")
43 show_gz_lidar = LaunchConfiguration(
"show_gz_lidar")
44 headless = LaunchConfiguration(
"headless")
47 rviz_config_file = LaunchConfiguration(
"rviz_config_file")
49 use_robot_state_pub = LaunchConfiguration(
"use_robot_state_pub")
50 use_rviz = LaunchConfiguration(
"use_rviz")
51 headless = LaunchConfiguration(
"headless")
53 urdf = os.path.join(sm_dance_bot_warehouse_3_dir,
"urdf",
"turtlebot3_waffle.urdf")
61 remappings = [(
"/tf",
"tf"), (
"/tf_static",
"tf_static")]
64 declare_namespace_cmd = DeclareLaunchArgument(
65 "namespace", default_value=
"", description=
"Top-level namespace"
68 declare_headless_simulator_argument = DeclareLaunchArgument(
69 "headless", default_value=
"False", description=
"Whether to execute gzclient)"
72 declare_use_namespace_cmd = DeclareLaunchArgument(
74 default_value=
"false",
75 description=
"Whether to apply a namespace to the navigation stack",
78 declare_show_gz_lidar = DeclareLaunchArgument(
81 description=
"Whether to apply a namespace to the navigation stack",
84 declare_slam_cmd = DeclareLaunchArgument(
85 "slam", default_value=
"True", description=
"Whether run a SLAM"
88 declare_use_sim_time_cmd = DeclareLaunchArgument(
89 "use_sim_time", default_value=
"true", description=
"Use simulation (Gazebo) clock if true"
92 declare_params_file_cmd = DeclareLaunchArgument(
94 default_value=os.path.join(
95 sm_dance_bot_warehouse_3_dir,
"params",
"nav2z_client",
"nav2_params.yaml"
97 description=
"Full path to the ROS2 parameters file to use for all launched nodes",
100 declare_bt_xml_cmd = DeclareLaunchArgument(
101 "default_nav_to_pose_bt_xml",
102 default_value=os.path.join(
103 sm_dance_bot_warehouse_3_dir,
"params",
"nav2z_client",
"navigation_tree.xml"
105 description=
"Full path to the behavior tree xml file to use",
108 declare_autostart_cmd = DeclareLaunchArgument(
109 "autostart", default_value=
"true", description=
"Automatically startup the nav2 stack"
112 declare_rviz_config_file_cmd = DeclareLaunchArgument(
114 default_value=os.path.join(sm_dance_bot_warehouse_3_dir,
"rviz",
"nav2_default_view.rviz"),
115 description=
"Full path to the RVIZ config file to use",
118 declare_use_robot_state_pub_cmd = DeclareLaunchArgument(
119 "use_robot_state_pub",
120 default_value=
"True",
121 description=
"Whether to start the robot state publisher",
124 declare_use_rviz_cmd = DeclareLaunchArgument(
125 "use_rviz", default_value=
"True", description=
"Whether to start RVIZ"
128 declare_map_yaml_cmd = DeclareLaunchArgument(
130 default_value=os.path.join(sm_dance_bot_warehouse_3_dir,
"maps",
"turtlebot3_world.yaml"),
131 description=
"Full path to map file to load",
134 start_robot_state_publisher_cmd = Node(
135 condition=IfCondition(use_robot_state_pub),
136 package=
"robot_state_publisher",
137 executable=
"robot_state_publisher",
138 name=
"robot_state_publisher",
141 parameters=[{
"use_sim_time": use_sim_time}],
142 remappings=remappings,
146 rviz_cmd = IncludeLaunchDescription(
147 PythonLaunchDescriptionSource(
148 os.path.join(sm_dance_bot_warehouse_3_launch_dir,
"rviz_launch.py")
150 condition=IfCondition(use_rviz),
153 "use_namespace":
"False",
154 "rviz_config": rviz_config_file,
158 bringup_cmd = IncludeLaunchDescription(
159 PythonLaunchDescriptionSource(
160 os.path.join(sm_dance_bot_warehouse_3_launch_dir,
"bringup_launch.py")
163 "namespace": namespace,
164 "use_namespace": use_namespace,
165 "autostart": autostart,
166 "params_file": params_file,
168 "map": map_yaml_file,
169 "use_sim_time": use_sim_time,
170 "default_nav_to_pose_bt_xml": default_nav_to_pose_bt_xml,
174 bringup_cmd = IncludeLaunchDescription(
175 PythonLaunchDescriptionSource(
176 os.path.join(sm_dance_bot_warehouse_3_launch_dir,
"bringup_launch.py")
179 "namespace": namespace,
180 "use_namespace": use_namespace,
181 "autostart": autostart,
182 "params_file": params_file,
184 "map": map_yaml_file,
185 "use_sim_time": use_sim_time,
186 "default_nav_to_pose_bt_xml": default_nav_to_pose_bt_xml,
195 gazebo_simulator = IncludeLaunchDescription(
196 PythonLaunchDescriptionSource(
197 os.path.join(sm_dance_bot_warehouse_3_launch_dir,
"gazebo_launch.py")
199 launch_arguments={
"show_gz_lidar": show_gz_lidar,
"headless": headless}.items(),
202 xtermprefix =
"xterm -xrm 'XTerm*scrollBar: true' -xrm 'xterm*rightScrollBar: true' -hold -geometry 1000x600 -sl 10000 -e"
204 sm_dance_bot_warehouse_3_node = Node(
205 package=
"sm_dance_bot_warehouse_3",
206 executable=
"sm_dance_bot_warehouse_3_node",
207 name=
"SmDanceBotWareHouse3",
212 get_package_share_directory(
"sm_dance_bot_warehouse_3"),
213 "params/sm_dance_bot_warehouse_3_config.yaml",
216 get_package_share_directory(
"sm_dance_bot_warehouse_3"),
217 "params/nav2z_client/odom_tracker.yaml",
225 arguments=[
"--ros-args",
"--log-level",
"INFO"],
228 led_action_server_node = Node(
229 package=
"sm_dance_bot_warehouse_3",
230 executable=
"led_action_server_node",
235 temperature_action_server = Node(
236 package=
"sm_dance_bot_warehouse_3",
237 executable=
"temperature_sensor_node",
242 service3_node = Node(
243 package=
"sm_dance_bot_warehouse_3",
244 executable=
"service_node_3.py",
248 {
"autostart":
True,
"node_names": [
"ss",
"dfa"]},
253 ld = LaunchDescription()
256 ld.add_action(declare_namespace_cmd)
257 ld.add_action(declare_use_namespace_cmd)
258 ld.add_action(declare_slam_cmd)
259 ld.add_action(declare_use_sim_time_cmd)
260 ld.add_action(declare_params_file_cmd)
261 ld.add_action(declare_bt_xml_cmd)
262 ld.add_action(declare_autostart_cmd)
263 ld.add_action(declare_map_yaml_cmd)
264 ld.add_action(declare_show_gz_lidar)
265 ld.add_action(declare_headless_simulator_argument)
267 ld.add_action(declare_rviz_config_file_cmd)
268 ld.add_action(declare_use_robot_state_pub_cmd)
269 ld.add_action(declare_use_rviz_cmd)
270 ld.add_action(gazebo_simulator)
273 ld.add_action(sm_dance_bot_warehouse_3_node)
274 ld.add_action(service3_node)
275 ld.add_action(temperature_action_server)
276 ld.add_action(led_action_server_node)
279 ld.add_action(start_robot_state_publisher_cmd)
280 ld.add_action(rviz_cmd)
281 ld.add_action(bringup_cmd)
def generate_launch_description()