3ebe2700b00340d09a1256d3b4a.../install/bcr_bot/share/bcr_bot/launch/rviz.launch.py

63 lines
2.1 KiB
Python

#!/usr/bin/env python3
import os
import xacro
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument, GroupAction
from launch.conditions import IfCondition, UnlessCondition
def get_xacro_to_doc(xacro_file_path, mappings):
doc = xacro.parse(open(xacro_file_path))
xacro.process_doc(doc, mappings=mappings)
return doc
def generate_launch_description():
# Launch configurations
use_sim_time = LaunchConfiguration('use_sim_time', default='false')
isaac_sim = LaunchConfiguration('isaac_sim')
# Process XACRO
xacro_path = os.path.join(get_package_share_directory('bcr_bot'), 'urdf', 'bcr_bot.xacro')
doc = get_xacro_to_doc(xacro_path, {"wheel_odom_topic": "odom"})
# Nodes
robot_state_publisher = Node(
package='robot_state_publisher',
executable='robot_state_publisher',
name='robot_state_publisher',
output='screen',
parameters=[{'use_sim_time': use_sim_time}, {'robot_description': doc.toxml()}],
condition=UnlessCondition(isaac_sim) # Only start if isaac_sim is false
)
rviz = Node(
package='rviz2',
executable='rviz2',
name='rviz2',
output='screen',
arguments=['-d', os.path.join(get_package_share_directory('bcr_bot'), 'rviz', 'entire_setup.rviz')]
)
return LaunchDescription([
# Declare arguments
DeclareLaunchArgument(
'use_sim_time',
default_value='false',
description='Use simulation time if true'
),
DeclareLaunchArgument(
'isaac_sim',
default_value='false',
description='Set to true when using Isaac Sim'
),
DeclareLaunchArgument(
'robot_description',
default_value=doc.toxml(),
description='Robot description in URDF/XACRO format'
),
# Nodes
robot_state_publisher,
rviz
])