/
/
/
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 arguments=['--ros-args', '--log-level', "info"]
30 )
31
32 gz_sim_server = IncludeLaunchDescription(
33 PythonLaunchDescriptionSource(
34 os.path.join(pkg_ros_gz_sim, "launch", "gz_sim.launch.py")
35 ),
36 launch_arguments={
37 "gz_args": " -v4 -s -r " + os.path.join(pkg_description, 'world', "landmark.world"),
38 "gz_version": "8"
39 }.items(),
40 )
41
42 gz_sim_gui = IncludeLaunchDescription(
43 PythonLaunchDescriptionSource(
44 os.path.join(pkg_ros_gz_sim, "launch", "gz_sim.launch.py")
45 ),
46 launch_arguments={
47 "gz_args": f"-v4 -g " + os.path.join(pkg_description, 'world', "landmark.world"),
48 "gz_version": "8"
49 }.items(),
50 )
51
52 spawner = Node(
53 package='ros_gz_sim',
54 executable='create',
55 arguments=[ '-name', 'simple_bot', '-world', 'landmark', '-topic', 'robot_description', '-z', '0.2'],
56 output='screen',
57 )
58
59
60
61 bridge = Node(
62 package="ros_gz_bridge",
63 executable="parameter_bridge",
64 parameters=[
65 {"config_file": bridge_config_path},
66 ],
67 output="screen",
68 )
69
70 rviz = Node(
71 package="rviz2",
72 executable="rviz2",
73 arguments=[
74 "-d",
75 os.path.join(pkg_description, "rviz", "landmark_world.rviz"),
76 ],
77 )
78
79 return LaunchDescription(
80 [
81 gz_sim_server,
82 gz_sim_gui,
83 robot_state_publisher,
84 bridge,
85 spawner,
86 rviz
87 ]
88 )