/
/
/
1import os
2from ament_index_python.packages import get_package_share_directory
3
4from launch import LaunchDescription
5from launch.actions import IncludeLaunchDescription
6from launch.launch_description_sources import PythonLaunchDescriptionSource
7
8from launch_ros.actions import Node
9
10import xacro
11
12def generate_launch_description():
13
14 # define package paths
15 pkg_description = get_package_share_directory("fast_slam_gz_description")
16 pkg_ros_gz_sim = get_package_share_directory("ros_gz_sim")
17
18 doc = xacro.process_file(os.path.join(pkg_description, "urdf", "simple_bot.urdf.xacro"))
19 robot_desc = doc.toprettyxml(indent=' ')
20
21 bridge_config_path = os.path.join(pkg_description, 'config', 'bridge_config.yaml')
22
23 robot_state_publisher = Node(
24 package='robot_state_publisher',
25 executable='robot_state_publisher',
26 name='robot_state_publisher',
27 output='screen',
28 parameters=[{"robot_description": robot_desc,
29 "use_sim_time": True
30 }],
31 arguments=['--ros-args', '--log-level', "info"]
32 )
33
34 gz_sim_server = IncludeLaunchDescription(
35 PythonLaunchDescriptionSource(
36 os.path.join(pkg_ros_gz_sim, "launch", "gz_sim.launch.py")
37 ),
38 launch_arguments={
39 "gz_args": " -v4 -s -r " + os.path.join(pkg_description, 'world', "landmark_ambiguous_x_w_poses.world"),
40 "gz_version": "8"
41 }.items(),
42 )
43
44 gz_sim_gui = IncludeLaunchDescription(
45 PythonLaunchDescriptionSource(
46 os.path.join(pkg_ros_gz_sim, "launch", "gz_sim.launch.py")
47 ),
48 launch_arguments={
49 "gz_args": f"-v4 -g " + os.path.join(pkg_description, 'world', "landmark_ambiguous_x_w_poses.world"),
50 "gz_version": "8"
51 }.items(),
52 )
53
54 spawner = Node(
55 package='ros_gz_sim',
56 executable='create',
57 arguments=[ '-name', 'simple_bot', '-world', 'landmark', '-topic', 'robot_description', '-z', '0.2'],
58 output='screen',
59 )
60
61
62
63 bridge = Node(
64 package="ros_gz_bridge",
65 executable="parameter_bridge",
66 parameters=[
67 {"config_file": bridge_config_path},
68 ],
69 output="screen",
70 )
71
72 return LaunchDescription(
73 [
74 gz_sim_server,
75 gz_sim_gui,
76 robot_state_publisher,
77 bridge,
78 spawner,
79 ]
80 )